Contributing
Thank you for your interest in improving highFIS.
Ways to Contribute
- Report bugs or request features through GitHub issues. For bugs, include the output of
highfis.show_versions(). - Improve documentation, examples, and test coverage.
- Submit focused bug fixes and incremental feature improvements.
Development Setup
This project uses Hatch for environment management, testing, formatting, and builds.
To set up pre-commit hooks:
Local Checks
Run the following before opening a pull request:
hatch check --fix # format, lint, and type check
hatch run security # security scan (bandit)
hatch test -c # tests with coverage (pytest + coverage)
The scikit-learn estimator checks are slow and deselected by default. CI runs them only on
pull requests into main, so run them locally when you change an estimator's fit,
predict, or input validation:
To run all pre-commit hooks at once:
Test Matrix
Tests run against Python 3.11, 3.12, 3.13, and 3.14. To run against a specific version:
Coverage
Coverage must stay at or above 90 %. To generate an HTML report:
Documentation Workflow
Documentation is built with Zensical.
hatch run docs:serve # live preview
hatch run docs:build # build static site
hatch run docs:plots # regenerate the figures of the plotting guide
Pull Request Guidelines
- Create a branch from
main. - Keep changes small and coherent.
- Add or update tests for behavior changes.
- Update documentation for public API changes.
- Ensure all local checks pass (
hatch check --fix,hatch run security,hatch test -c). - Provide a clear PR description with motivation and scope.
Reporting Issues
Please include:
- Expected behavior and actual behavior.
- A minimal reproducible example.
- Python version, OS, and package versions.
- Relevant logs or stack traces.