Contributing Guide#
All contributions are greatly appreciated! Before contributing, please read the code of conduct.
Development Setup#
This project uses uv to manage dependencies and builds. Once uv is installed, run uv sync to create a virtual environment and install development dependencies. Python >=3.10 is recommended for development.
git clone https://github.com/mcous/decoy.git
cd decoy
uv sync --python 3.12
Development Tasks#
This project uses poethepoet to manage development tasks. Install it as a tool with uv:
uv tool install poethepoet
Once poe is installed, to quickly check everything, run the all task:
poe all
Tests#
Decoy's tests are run using pytest. To run tests in watch mode:
poe test
To run tests once and report coverage
poe test-once
poe coverage
Checks#
Decoy's source code is typechecked with mypy and linted/formatted with ruff.
poe check
poe lint
poe format
Documentation#
Decoy's documentation is built with mkdocs, which you can use to preview the documentation site locally.
poe docs
Deploying#
The library and documentation will be deployed to PyPI and GitHub Pages, respectively, by CI. We use release please to automatically create release PRs based on conventional commits. If bug fixes, features, or breaking changes have merged into main, there will be a release PR open. Merge the PR to release a new version.