Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Set up development environment (Setup Guide)
- Create a branch for your changes
- Make your changes with tests
- Submit a pull request
Development Workflow
Make Changes
- Write code following naming conventions
- Add tests for new functionality
- Update documentation if needed
Code Style
Python Style
We use Ruff for linting and formatting:Key Style Rules
- Line length: 100 characters max
- Imports: Sorted, grouped (stdlib, third-party, local)
- Docstrings: Google style
- Type hints: Required for public APIs
Cython Style
For.pyx files, see Cython Guide.
Testing Requirements
Coverage
- Minimum 75% code coverage
- All new features need tests
- Bug fixes should include regression tests
Test Types
Running Tests
Documentation
When to Update Docs
- New features → Add to relevant feature doc
- API changes → Update API reference
- Breaking changes → Update migration guide
Documentation Style
- Use clear, concise language
- Include code examples
- Link to related documentation
Building Docs
Pull Request Guidelines
PR Title
Use conventional commit format:feat: Add feature descriptionfix: Fix bug descriptiondocs: Update documentation
PR Description
Include:- Summary - What does this PR do?
- Motivation - Why is this change needed?
- Changes - List of changes made
- Testing - How was this tested?
PR Template
Review Process
- Automated checks run (tests, linting)
- Maintainer reviews code
- Address feedback
- Merge when approved
Issue Guidelines
Bug Reports
Include:- Description - What’s the bug?
- Steps to reproduce - How can we see it?
- Expected behavior - What should happen?
- Actual behavior - What happens instead?
- Environment - Python version, OS, package version
Feature Requests
Include:- Description - What feature do you want?
- Use case - Why do you need it?
- Proposed solution - How might it work?
- Alternatives - Other solutions considered?
Types of Contributions
Code Contributions
- Bug fixes - Fix reported issues
- Features - Implement new functionality
- Performance - Optimize existing code
- Tests - Add test coverage
Non-Code Contributions
- Documentation - Improve docs
- Examples - Add usage examples
- Bug reports - Report issues
- Feature requests - Suggest improvements
- Code review - Review PRs
Getting Help
- Questions - Open a GitHub Discussion
- Bugs - Open a GitHub Issue
- Chat - Join our Discord (if available)
Code of Conduct
Be respectful and inclusive. We follow the Contributor Covenant.Recognition
Contributors are recognized in:- CONTRIBUTORS.md file
- Release notes
- Project README
See Also
- Development Setup - Environment setup
- Testing Guide - Running tests
- Naming Conventions - Code style
- Cython Guide - Working with Cython