Contributing
We welcome contributions! Here's how you can help:
- Report bugs
- Develop new features
- Improve documentation
- Submit fixes
Development Setup
- Fork the repository
- Clone your fork:
- Set up a virtual environment:
- Install development dependencies:
- Install pre-commit hooks:
Running Tests
Run all tests with coverage:
Run a specific test file:
Code Style
- Follow PEP 8
- Use type hints for all function signatures
- Include Google-style docstrings for all public functions and classes
- Keep lines under 88 characters (Black's default)
- The project uses pre-commit hooks to enforce code style:
ruff
for linting and formattingblack
for code formattingmypy
for static type checkingprettier
for Markdown formatting
To run all linters manually:
Documentation
We use MkDocs with Material for documentation. To build the docs locally:
Then open http://127.0.0.1:8000
in your browser.
Pull Request Process
- Create a feature branch from
main
- Make your changes
- Add/update tests
- Update documentation if needed
- Run tests and linters
- Submit a pull request with a clear description of changes
Pre-commit Hooks
This project uses pre-commit to ensure code quality. The pre-commit hooks will run automatically on each commit. To manually run the hooks:
To skip the pre-commit checks (not recommended):
Code of Conduct
This project adheres to the Contributor Covenant Code of Conduct.
Reporting Issues
When reporting issues, please include:
- A clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Python version and OS
- Any relevant error messages
- If possible, include a minimal reproducible example
License
By contributing, you agree that your contributions will be licensed under the MIT License.