See the Scientific Python Developer Guide for a detailed description of best practices for developing scientific packages.
- Every commit should reference the issue number with which it is associated.
- Commits should be reasonably granular and semantically atomic.
- Pull requests should not be squashed upon merging.
The fastest way to start with development is to use nox. If you don't have nox,
you can use pipx run nox to run it without installing, or pipx install nox.
If you don't have pipx (pip for applications), then you can install with
pip install pipx (the only case were installing an application with regular
pip is reasonable). If you use macOS, then pipx and nox are both in brew, use
brew install pipx nox.
To use, run nox. This will lint and test using every installed version of
Python on your system, skipping ones that are not installed. You can also run
specific jobs:
$ nox -s lint # Lint only
$ nox -s tests # Python tests
$ nox -s docs -- --serve # Build and serve the docs
$ nox -s build # Make an SDist and wheelNox handles everything for you, including setting up an temporary virtual environment for each run.
You can set up a development environment by running:
python3 -m venv .venv
source ./.venv/bin/activate
python -m pip install -v -e '.[test]'The test extra installs the optional feature dependencies exercised by the
test suite, plus pytest tooling. If you also need development-only DVC tooling,
install .[test,dev].
If you have the Python Launcher for Unix, you can instead do:
py -m venv .venv
py -m pip install -v -e '.[test]'You should prepare pre-commit, which will help you by checking that commits pass required checks:
pip install pre-commit # or brew install pre-commit on macOS
pre-commit install # Will install a pre-commit hook into the git repoYou can also/alternatively run pre-commit run (changes only) or
pre-commit run --all-files to check even without installing the hook.
Use pytest to run the unit checks:
pytestUse pytest-cov to generate coverage reports:
pytest --cov=openlifuYou can build the docs using:
nox -s docsYou can see a preview with:
nox -s docs -- --serveThis project uses pre-commit for all style checking. While you can run it with nox, this is such an important tool that it deserves to be installed on its own. Install pre-commit and run:
pre-commit run -ato check all files.