Contributing guide
This document summarizes the main workflows for contributing to MINA.
Installing development dependencies
You need the runtime dependencies of the package plus the extra tooling for tests and documentation.
Using uv
This creates or updates the local .venv and installs the development, test, and docs dependencies.
Using pip
Code style
This project uses ruff and pre-commit to keep formatting and linting consistent.
Enable local hooks with:
Then run them on demand with:
Writing tests
This package uses pytest for automated testing.
Run the full suite with uv:
Or with an activated virtual environment:
Continuous integration
GitHub Actions runs the test suite on pull requests.
The supported Python versions and test matrix are defined in pyproject.toml.
Publishing a release
Before making a release, update the version number in pyproject.toml and follow Semantic Versioning:
- Increment MAJOR for incompatible API changes.
- Increment MINOR for backwards-compatible functionality.
- Increment PATCH for backwards-compatible bug fixes.
After that, create a GitHub release with a vX.Y.Z tag.
Writing documentation
The documentation stack uses MkDocs with Material for MkDocs, mkdocstrings for the Python API reference,
and mkdocs-jupyter for the notebooks in docs/notebooks.
When you add or change user-facing functionality, update the relevant documentation page and, where needed, refresh the notebooks so their saved output matches the current code.