Developer guide¶
Running the tests¶
The following will discover and run all unit test:
pip install -e .[testing]
pytest -v
Automatic coding style checks¶
Enable enable automatic checks of code sanity and coding style:
pip install -e .[pre-commit]
pre-commit install
After this, the yapf formatter, the pylint linter and the pylint code analyzer will run at every commit.
If you ever need to skip these pre-commit hooks, just use:
git commit -n
Continuous integration¶
aiida-champ
comes with a .github
folder that contains continuous integration tests on every commit using GitHub Actions. It will:
run all tests for the
django
ORMbuild the documentation
check coding style and version number (not required to pass by default)
Building the documentation¶
Install the
docs
extra:pip install -e .[docs]Edit the individual documentation pages:
docs/source/index.rst docs/source/developer_guide/index.rst docs/source/user_guide/index.rst docs/source/user_guide/get_started.rst docs/source/user_guide/tutorial.rstUse Sphinx to generate the html documentation:
cd docs make
Check the result by opening build/html/index.html
in your browser.
Publishing the documentation¶
Once you’re happy with your documentation, it’s easy to host it online on ReadTheDocs:
Create an account on ReadTheDocs
Import your
aiida-champ
repository (preferably usingaiida-champ
as the project name)
The documentation is now available at aiida-champ.readthedocs.io.
PyPI release¶
Your plugin is ready to be uploaded to the Python Package Index. Just register for an account and:
pip install twine
python setup.py sdist bdist_wheel
twine upload dist/*
After this, you (and everyone else) should be able to:
pip install aiida-champ
You can also enable automatic deployment of git tags to the python package index:
simply generate a PyPI API token for your PyPI account and add it as a secret to your GitHub repository under the name pypi_token
(Go to Settings -> Secrets).
Note
When updating the plugin package to a new version, remember to update the version number both in setup.json
and aiida_champ/__init__.py
.