Skip to content

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.