Workflow¶
This page describes the tooling used during development of this project. It also serves as a reference for the various commands that you would use when working on this project.
Overview¶
This project uses the GitHub Flow for collaboration. The codebase is Python.
Note
This project currently maintains compatibility with Python 2 but this compatibility will be removed in 0.3.0, planned for June 2021.
flit is used for automating development tasks.
nox is used for automating development tasks.
pre-commit is used for running the linters.
sphinx is used for generating this documentation.
pytest is used for running the automated tests.
Repository Layout¶
The repository layout is pretty standard for a modern pure-Python project.
CODE_OF_CONDUCT.md
LICENSE
README.md
.nox/
– Generated by nox.dist/
– Generated as part of the release process.docs/
– Sources for the documentation.src/
installer/
– Actual source code for the package
tests/
– Automated tests for the package.noxfile.py
– for nox.pyproject.toml
– for packaging and tooling configuration.
Initial Setup¶
To work on this project, you need to have git 2.17+ and Python 3.6+.
Clone this project using git:
git clone https://github.com/pradyunsg/installer.git cd installer
Install the project’s main development dependencies:
pip install nox
You’re all set for working on this project.
Commands¶
Testing¶
nox -s test
Run the tests against all supported Python versions, if an interpreter for that version is available locally.
nox -s test-3.9
Run the tests against Python 3.9. It is also possible to specify other
supported Python versions (like 3.7
or pypy3
).
Documentation¶
nox -s docs
Generate the documentation for installer into the build/docs
folder.
This (mostly) does the same thing as nox -s docs-live
, except it
invokes sphinx-build
instead of sphinx-autobuild.
nox -s docs-live
Serve this project’s documentation locally, using sphinx-autobuild. This will open the generated documentation page in your browser.
The server also watches for changes made to the documentation (docs/
),
which will trigger a rebuild. Once the build is completed, server will
automagically reload any open pages using livereload.
Release process¶
Update the changelog
Run
nox -s release
Once that command succeeds, you’re done!