Contributing
Thanks for helping improve test-copier-uv. Below you can find guidelines and tips for contributing to the project, including how to set up a development environment, run tests, and generate documentation.
Developer Quick Start
Prerequisites
- Python 3.13+
uv
Setup
NOTE:
- --all-groups installs both the dev and docs dependency groups.
- If you only want the development tooling (no docs), you can use:
Tasks
All common development tasks like linting, testing, and documentation are defined as poethepoet tasks in pyproject.toml.
Here' a quick reference of all available tasks:
| Task | Description |
|---|---|
clean |
Clean build/test caches and generated artifacts |
fix |
Run ruff formatting + lint fixes |
check |
Run ruff (lint + format check), pyright (type-check), and pytest (unit tests) |
security |
Run bandit and pip-audit (security checks) |
docs |
Run zensical (documentation) |
gen |
Run git-changelog (regenerate CHANGELOG.md from git history) |
test-pyall |
Run pytest suite across all supported Python versions |
pre-commit |
Run pre-commit hooks on all files (useful to test after pre-commit failure) |
ci |
Full suite intended for CI (useful to test after CI failure) |
release |
Generate changelog and cut a new release tag |
uv run poe check
# or you can install poethepoet and run:
uv tool install poethepoet
poe check
Testing
You should most probably be running poe check task, which includes unit tests. In order to run full test suite you can run -
This will spawn a separate environment for each supported Python version and run the tests in parallel.
If you want to run tests for a specific Python version, you can run:
Documentation
Documentation is built using zensical. To build docs locally, run:
To serve docs locally with live reload:
This will start a local server at http://localhost:8000 where you can view the documentation. Any changes to the docs will trigger an automatic rebuild and refresh in the browser.
Developer Workflow
Here's how a typical development workflow might look like:
- Install dependencies:
- Install pre-commit hooks (optional, but recommended):
- Make your change.
- Auto-fix formatting + lint issues:
- Run the standard checks:
- If your change touches docs, run:
- If your change might affect integration behavior, run:
- If you have added a new dependency, make sure to run:
- If you are happy with changes, cut a new release tag -
Code of conduct
By participating, you agree to follow the Code of Conduct in CODE_OF_CONDUCT.md.