Before contributing, please either ask to claim an existing open issue or create a new issue to discuss your proposed changes with the owner(s) of this repo before making any changes.
Any pull requests without a clearly defined issue being solved will be closed.
Found a bug but do not have time or do not wish to contribute a fix? Please submit an issue for our awareness. Your feedback drives the continued development of the project!
All pull requests must:
- Pass all linting and formatting checks
- Have tests that cover all branches of the added feature
- If the PR is a bug fix there must be a test that duplicates the bug, proving it is fixed
Follow the patterns seen in the code. Walk where others have walked.
Be sure to run the expected formatters and linters prior to opening the PR.
- Smaller tests are easier to work with
- Mock at a minimum
- No test should be dependent on another
- No test should be dependent on secrets/tokens
The following steps outline how to install this repo for local development.
uv is required to use the provided noxfile sessions for developer setup, linting, and tests. Using nox is completely optional, all sessions can be manually recreated. These instructions will not cover those cases.
This builds the /.venv, installs the editable package, and installs
pre-commit.
uvx nox -s devuvx nox -s lockuvx nox -s testPassing extra arguements to pytest:
uvx nox -s test -- -vvv -x --full-traceuvx nox -s lintuvx nox -s formatuvx noxuvx nox -s buildNew dependencies should be added with the uv cli command uv add [package-name]. This will ensure the uv.lock file is updated as well.
uvx nox -s upgrade-package -- package-nameuvx nox -s upgrade