For developers¶
Getting a copy of the source code¶
Clone this repository.
Developing locally as a package¶
Installing the necessary requirements:
$ pip install -r requirements.txt -r requirements-dev.txt
Building the application once (no need to rebuild to test changes on the source code):
$ python setup.py develop
Then the command ugc
(short for uol grades calculator
) becomes available on the command-line. Type ugc --help
for more information.
The tool can then be uninstalled using the following command:
$ python setup.py develop --uninstall
Running the test suite¶
Default settings are defined in pytest.ini
. Then, it’s just a matter of typing:
$ pytest
Managing dependencies¶
Requirements to test and develop the application should go into
requirements-dev.txt
. None of these are required to runugc
as a user.User requirements should go into
requirements.txt
.The section
install_requires
insetup.cfg
should be kept up-to-date when new releases are to be published.Non-Python files (e.g. JSON) used by
ugc
should be explicitly included inMANIFEST.in
to be distributed with the package.
Publishing the package to PyPI¶
# Remove existing distribution packages
rm -rf dist build
# The following commands would be run preferably
# from a virtual environment
# Generate the distribution packages for PyPI
python setup.py sdist bdist_wheel --universal
# Upload to the test instance of PyPI
python -m twine upload --repository testpypi dist/*
# Upload to the production instance of PyPI
python -m twine upload dist/*
Installing package from PyPI¶
Install from test.pypi.org:
Activate a virtual environment, then:
# Latest version
pip install -i https://test.pypi.org/simple/ uol-grades-calculator
# Specific version
pip install -i https://test.pypi.org/simple/ uol-grades-calculator==x.y.z
Test as a module:
python -m ugc
Install from pypi.org:
# Latest version
pip install uol-grades-calculator
# Specific version
pip install uol-grades-calculator==x.y.z
Adding ugc
as a command¶
To avoid having to activate a virtual environment and calling the program as a module via python -m ugc
, one can create an alias or put a symbolic link in the $PATH
to make the command ugc
accessible.
Creating an alias¶
As a quick and dirty way to access ugc
with an alias, a virtual environment can be activated and the Python interpreter can be called from that environment. Adding an alias like the following would do the trick:
# Add to `~/.bash_aliases` or equivalent on your system
alias ugc=". /tmp/.venv/bin/activate && python -m ugc"
Adding to the $PATH
¶
When developing locally and assuming all dependencies were installed inside a virtual environment:
# Make sure the `ugc` package was installed to allow editing source code
# on the fly:
python setup.py develop
# Create a symbolic link from your virtual environment to a directory
# in your path. You can print it to see what it looks like:
echo $PATH
# For instance, if ~/.local/bin is in $PATH, something as follows would
# work, assuming the virtual environment is named `.venv`:
ln -s /path/to/uol_grades_calculator/.venv/bin/ugc ~/.local/bin/ugc
# Then `ugc` can be called as a regular program:
ugc
Documentation¶
Generating modules documentation¶
$ cd docs/
$ make docs
Flag |
Description |
---|---|
|
overwrite existing files |
|
put module documentation before submodule |
|
include “_private” modules |
|
output directory ( |
|
maximum depth of submodules to show in the TOC (set to |
|
do not add a TOC for the modules |
Rebuilding documentation¶
$ cd docs/
$ make html
If something is not rendered even after a force-refresh (such as when editing the config file or adding custom CSS), try running make clean html
instead: there can be instances where changes are not applied due to the local cache.
Viewing the documentation locally¶
Once the documentation has been generated, it can be viewed with a simple server. A built-in option could be as follows:
$ cd docs/_build/html # from the root
$ python -m http.server
This will set up a server at http://localhost:8000/ by default.