Metadata-Version: 2.4
Name: veriqant-bench
Version: 0.1.0
Summary: Standardized, reproducible benchmark suites for quantum processors — produces signed Quantum Performance Records (QPRs)
Project-URL: Homepage, https://github.com/veriqant/veriqant-bench
Project-URL: Documentation, https://github.com/veriqant/veriqant-bench/blob/main/docs/QPR-SPEC.md
Project-URL: Changelog, https://github.com/veriqant/veriqant-bench/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/veriqant/veriqant-bench/issues
Author: Veriqant
License-Expression: Apache-2.0
Keywords: benchmarking,qec,qpu,quantum,quantum-volume,verification
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: click>=8.1
Requires-Dist: numpy>=1.26
Requires-Dist: pydantic>=2.7
Provides-Extra: braket
Requires-Dist: amazon-braket-sdk>=1.87; extra == 'braket'
Provides-Extra: ibm
Requires-Dist: qiskit-ibm-runtime>=0.34; extra == 'ibm'
Requires-Dist: qiskit>=1.4; extra == 'ibm'
Provides-Extra: local
Requires-Dist: qiskit-aer>=0.15; extra == 'local'
Requires-Dist: qiskit-qasm3-import>=0.5; extra == 'local'
Requires-Dist: qiskit>=1.4; extra == 'local'
Requires-Dist: scipy>=1.11; extra == 'local'
Provides-Extra: qec
Requires-Dist: pymatching>=2.2; extra == 'qec'
Requires-Dist: stim>=1.13; extra == 'qec'
Provides-Extra: signing
Requires-Dist: cryptography>=43; extra == 'signing'
Description-Content-Type: text/markdown

# veriqant-bench

Standardized, reproducible benchmark suites for quantum processors. Runs against
local simulators by default and against live QPUs behind an explicit `--live` flag.
Every run produces a **Quantum Performance Record (QPR)** — a versioned, hash-sealed
JSON document containing everything needed to re-run and independently verify the
benchmark: seed, OpenQASM 3 circuits, transpiler settings, raw counts, SDK versions.

```bash
pip install veriqant-bench            # core (QPR schema + verification)
pip install veriqant-bench[local]     # + Qiskit Aer simulation (no account needed)
pip install veriqant-bench[braket]    # + Amazon Braket (local simulator + live)
pip install veriqant-bench[ibm]       # + IBM Quantum runtime
pip install veriqant-bench[qec]       # + QEC decoding (PyMatching) + Stim oracle
pip install veriqant-bench[signing]   # + Ed25519 QPR signing
```

## CLI

```bash
# Run benchmarks (one sealed, self-verified QPR per run; last line prints
# the output path and the record's content hash):
veriqant-bench run rb --adapter aer --qubits 0 --out results/
veriqant-bench run rb --adapter aer --qubits 0,1 --out results/        # 2Q RB
veriqant-bench run mirror --qubits 0,1,2 --depths 2,4,8 --out results/
veriqant-bench run qv --widths 2,3,4 --circuits 50 --out results/
veriqant-bench run throughput --batches 5 --out results/
veriqant-bench run qec --code repetition --distances 3,5,7 --rounds 7 \
    --criteria ab-lq-2026 --noise noise.json --out results/
veriqant-bench run qec --code surface --distance 3 --rounds 3 --out results/
veriqant-bench run rb --noise noise.json --seed 42 --out results/     # noisy Aer

# Static, self-contained HTML report (inputs verified first):
veriqant-bench report results/ -o report.html

veriqant-bench verify results/run.qpr.json   # re-derive hashes, check consistency
veriqant-bench schema                        # print the bundled QPR JSON Schema
veriqant-bench adapters list                 # registered adapters + availability
veriqant-bench adapters probe aer_simulator  # capabilities, calibration, smoke run
veriqant-bench version
```

`--seed` is optional: when omitted, one is generated and printed; either way
it is recorded in the QPR, so every run is reproducible.

## Development

```bash
uv sync
uv run pytest                                # fast: no coverage gate
uv run pytest -n auto                        # parallel (pytest-xdist)
uv run pytest -m "not slow"                  # skip multi-second simulator runs
uv run pytest -n auto --cov=veriqant_bench --cov-fail-under=90   # the CI gate
uv run ruff check . && uv run ruff format --check . && uv run mypy
```

## Writing an adapter

Implement the `veriqant_bench.adapters.QPUAdapter` protocol, register it under
the `veriqant_bench.adapters` entry-point group, and certify it by subclassing
`veriqant_bench.adapters.conformance.AdapterConformanceSuite` in your tests.

See `docs/QPR-SPEC.md` at the repository root for the record format.
