Contributing to nonconform¶
We welcome contributions to nonconform! This guide will help you get started.
Types of Contributions¶
Bug Reports¶
- Use the GitHub issue tracker
- Include minimal reproducible examples
- Specify your environment (Python version, OS, etc.)
Feature Requests¶
- Describe the use case clearly
- Explain how it fits with the project's goals
- Consider proposing an implementation approach
Code Contributions¶
- Bug fixes
- New conformalization strategies
- Performance improvements
- Documentation improvements
Documentation¶
- Fix typos or unclear explanations
- Add examples or tutorials
- Improve API documentation
Development Setup¶
Prerequisites¶
- Python 3.12 or higher
- Git
- uv (Python package manager)
Setup Instructions¶
-
Fork and clone the repository
-
Install dependencies and setup development environment
-
Setup pre-commit hooks
-
Run tests to verify setup
Development Workflow¶
Before Making Changes¶
-
Create a new branch
-
Sync with upstream
Making Changes¶
-
Write tests first (TDD approach recommended)
-
Implement your changes
- Follow the existing code style
- Add docstrings to new functions/classes
-
Keep commits atomic and well-described
-
Run the full test suite
-
Check code quality
Documentation¶
- Update docstrings
- Use Google style docstrings
- Include examples where helpful
-
Document all parameters and return values
-
Update user documentation
- Add new features to appropriate guides
- Update examples if needed
-
Test documentation builds locally
-
Build documentation locally
Submitting Changes¶
-
Commit your changes
-
Push to your fork
-
Create a pull request
- Use a clear, descriptive title
- Explain what changes you made and why
- Reference any related issues
- Include tests and documentation updates
Code Style Guidelines¶
Python Code Style¶
- Follow PEP 8
- Use Ruff for formatting and linting (replaces Black, isort, flake8)
- Use Google-style docstrings