Key Development Tools
uv: Package manager - use uv add “package>=version” for dependenciesruff: Linting and formatting
mypy: Type checking - required for all new code
pre-commit: Automated code quality checks - must pass before commits
pytest: Testing framework with integration test markers
Getting Started
1. Fork and Clone
2. Set Up Development Environment
3. Create Feature Branch
Make Your Changes
For detailed information on benchmarks are implemented in openbench, see our Architecture page.Core Principles
Single Responsibility
Single Responsibility
- Focus on one feature, bug fix, or improvement per pull request
- Makes code review easier and reduces merge conflicts
Clear Separation of Concerns (SoC)
Clear Separation of Concerns (SoC)
- Keep functions small and focused
- Use clear interfaces between components
- Avoid tight coupling between modules
Documentation and Readability
Documentation and Readability
- Use type hints for clarity and validation
- Write docstrings for all public functions and classes
- Use descriptive variable and function names
Standardized Structure
Standardized Structure
- Follow PEP 8 with a line length of 88 characters
- Mirror openbench/InspectAI conventions
- Use consistent formatting and naming patterns
- Maintain consistency with existing codebase
Testing
Write unit tests for all new functionality. Aim for high test coverage including edge cases and error conditions.tests/test_my_feature.py
Code Quality Checks
Submitting Changes
Commits
Follow conventional commits structure:<type>(<scope>): <subject>
Pull Requests
1. Before Opening PR
2. PR Description Template
3. Review Process
- Maintainers will review your PR
- Address feedback promptly
- Once approved, we’ll squash and merge your PR
- Your contribution will be part of the next release!
Thank you for contributing to openbench! We are grateful for your support in making language model evaluation more accessible and reliable. 🫶