2.9 KiB
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.
- 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.7+.
-
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
Code Linting
nox -s lint
Run the linters, as configured with pre-commit.
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.
- Update the version number in
__init__.py
. - Commit these changes.
- Create a signed git tag.
- Run
flit publish
. - Update the version number in
__init__.py
. - Commit these changes.
- Push tag and commits.