Contributing¶
Thanks for contributing to the open-source microquantum SDK! This
project is MIT licensed and deliberately dependency-light (NumPy only).
Industry-specific vertical solvers are developed outside this repository and
are out of scope here.
Ground rules¶
No new hard dependencies — new features build on NumPy. Optional capabilities (e.g. GPU) belong behind lazy imports and
[project.optional-dependencies].No private/proprietary code — this repository is the public SDK. Do not add domain-specific business analytics, platform code, credentials, or references to code from outside this repository.
Keep the contract stable — changes to serialized result types are versioned; update
CHANGELOG.md.
Getting started¶
uv sync --group dev
Before you submit changes¶
Tests — add or update tests under
tests/:uv run pytest tests/Type check — the SDK targets strict mypy conformance (zero errors):
uv run mypy src/microquantum/Lint — keep new code ruff-clean:
uv run ruff check src tests examplesDocs — update the Sphinx docs under
docs/for public API changes:uv run sphinx-build -W --keep-going -b html docs docs/_build/html
Branch workflow (required)¶
Work on the
developbranch.Commit your changes with a concise, imperative message.
Push
develop.Merge into
mainwith a merge commit:git switch main git merge develop --no-ff git push origin main
Versioning and releases¶
The version is read dynamically from microquantum/__init__.py
(__version__). Bump it there and in docs/conf.py, and add a
CHANGELOG.md entry. Releases happen from main with a v<version>
tag. No release to PyPI without: push + green CI + v<version> tag +
TestPyPI check first.