Getting started¶
Install¶
pip install qontinuum # core (simulators, cost, everything offline)
pip install 'qontinuum[ibm]' # + real IBM calibration noise models
pip install 'qontinuum[braket]' # + AWS Braket hardware submission
Scaffold a project¶
qont init --action # example test, config, .gitignore, PR workflow
qont doctor # verify the environment is healthy
Write a quantum test¶
Any file named q_test_*.py:
from qiskit import QuantumCircuit
from qontinuum import qtest, assert_distribution
@qtest(shots=4000)
def bell_pair():
qc = QuantumCircuit(2)
qc.h(0); qc.cx(0, 1); qc.measure_all()
return qc
@bell_pair.check
def is_maximally_entangled(result):
assert_distribution(result, {"00": 0.5, "11": 0.5}, tvd_threshold=0.05)
qont test # run it
qont lint # catch statistical footguns before CI does
qont shots plan # are your shot counts sound for your thresholds?
The daily loop¶
qont watch test # re-run on every save
qont test --seed 42 --cached # CI mode: cache unchanged circuits
qont cost # what would this cost on real hardware?
qont route --optimize value # which device should run it?
qont noise headroom bell_pair # how much calibration drift survives?
Ship it¶
qont ci --seed 42 # markdown report for the PR comment
qont report junit --out junit.xml # any CI system's native test UI
qont dashboard # single-file observability
qont pack create # reproducibility bundle for reviewers
Run on real hardware — deliberately¶
qont budget set 25 --monthly # project-level cap
qont run --on ibm:ibm_brisbane --dry-run # estimate only
qont run --on braket:rigetti_cepheus --max-cost 5 # all-or-nothing guard
Exit codes everywhere: 0 ok · 1 failures/findings · 2 usage or config
error · 3 guard refusal. Every read command takes --json.