Thanks for your interest in contributing to MQSS Benchmarking Framework. This project is Python-based and uses uv for dependency management, ruff for linting, and pytest for tests.
This document explains how to propose and implement changes in a way that fits a production-quality workflow.
- Getting Setup
- Branching & Workflow
- Tips for Coding
- How to Test
- How to Lint
- Writing/Updating Tests
- Pull Request Checklist
- Notes for Benchmark Changes
- Python >= 3.12
uvinstalled
pip install uv
uv sync --all-extras --dev- All contribution branches are created from:
develop
For contribution work, use the following convention:
feat/<author_initials>/<short-name>for new features or improvementsbug/<author_initials>/<short-name>for bug fixes- Use lowercase letters and digits.
- Use hyphens (
-) in<short-name>. - Keep
<author_initials>to 1-3 lowercase characters (as shown above).
Examples (based on existing branches in this repo):
feat/bm/add-qaoa-benchmarkfeat/aa/architecture-overhaul
- Target branch for PRs:
develop - Keep PRs focused on one main goal (feature, fix, or refactor with a clear justification).
- Follow the project's style and structure.
src/mqssbench/frameworkcontains the core abstraction classes, types, and registries. It should have minimal external dependencies and no dependency on other parts of the project.src/mqssbench/librarycontains built-ins and implementations based on the framework. This is a good place to start contributing (e.g., adding a new adapter, benchmark, or provider).- Ensure type safety.
- Do not commit secrets (tokens, credentials).
- Avoid adding debug prints to production paths.
To run tests locally:
uv run pytestTo run tests with coverage locally:
uv run pytest --cov=src --cov-report=term-missingNotes specific to this repo:
- Tests are discovered from the
test/directory (pytest.ini). - The
src/folder is added toPYTHONPATHvia pytest configuration. - The test suite configures
matplotlibto use a headless backend (Agg) to avoid CI hangs.
What good looks like:
- All tests pass locally before opening a PR.
- New behavior is backed by tests.
This repo's CI runs ruff check, and pre-commit is configured to auto-fix.
Run:
uv run ruff check .If you want Ruff to attempt automatic fixes:
uv run ruff check --fix .- Unit and integration tests live under
test/ - Tests mirror the source code path and naming
- If your change touches registry behavior, be mindful of concurrency and registry isolation
Before opening a PR, please ensure:
- Branch name follows the mentioned structure
- PR targets
develop - You ran tests
- You ran lint
- No secrets or credentials were added
- Tests for the changed behavior exist and pass
- Documentation is updated
Maintainers may request additional changes during review. Respond to feedback respectfully and update the PR as needed.
Thanks