Thank you for your interest in contributing to PyOctaveBand! We welcome contributions from the community to help improve this project.
To set up your development environment:
-
Clone the repository:
git clone https://github.com/jmrplens/PyOctaveBand.git cd PyOctaveBand -
Create a virtual environment:
python3 -m venv .venv source .venv/bin/activate # On Windows use: .venv\Scripts\activate
-
Install dependencies: Install both production and development dependencies to run tests and linters.
pip install -r requirements.txt pip install -r requirements-dev.txt
We enforce strict code quality standards. Before submitting a Pull Request, please ensure your code passes the following checks:
We use strict type checking. Ensure no errors are reported:
mypy .We use ruff for fast linting and formatting.
ruff check .Run the full test suite to ensure no regressions. We aim for 100% code coverage.
pytest tests/To check coverage locally:
pytest --cov=src/pyoctaveband --cov-report=term-missing tests/If you modify the filter logic or visualization code, please regenerate the documentation graphs to verify visual correctness:
python generate_graphs.pyIf you find a bug, check the Issues. If not reported, open a new issue with:
- Steps to reproduce
- Expected vs Actual behavior
- Environment details (OS, Python version)
- Fork the repository.
- Create a branch for your feature (
git checkout -b feature/amazing-feature). - Commit your changes with clear messages.
- Verify your code using the commands above (
pytest,mypy,ruff). - Push to your fork and Open a Pull Request.
By contributing to this project, you agree that your contributions will be licensed under the project's LICENSE file.