open-standards/wai/wai-quantum-py/pyproject.toml
Transaction Science 22fdc7a3cb wai-quantum-py: WAI Quantum in Python and notebooks, in-process
A new crate, wai/wai-quantum-py, built by maturin 1.15.0 into one abi3 wheel
per platform (pyo3 0.29.3, Python 3.9 on), module wai_quantum. Its extension
module wraps the shared job engine and nothing else: run, plan, lint, draw
(text and the engine SVG), layout, critique, improve, shortcuts,
equivalent, verify, seal, canonical, digest, methods, accuracy_classes and
history, values crossing one to one with JSON (NaN, integers past 64 bits
and non-string keys refused). A job is the service form as a plain dict
with helpers (counts, probabilities, expectations, amplitudes, method,
accuracy, receipt); Key reads and writes the command line key files and
finds the same user key; bloch gives each qubit reduced state from the
engine expectation values. A refusal raises EngineError with the engine
message, its line, and a code slot for the engine diagnostic codes.

Service is a client in the standard library alone for the job service
(submit, status, result, cancel, run), naming itself
wai-quantum-python/<version>, its receipts checked here offline.

Widgets (the widgets extra): Circuit (the engine drawing, gates clickable,
authorship marks from a history), Result, Receipt (the engine verdict) and
Bloch (drag to turn), each a plain ES module, each with static HTML (and
SVG) fallbacks that render without the widget library.

Five doc notebooks run in CI and are held to their stored outputs.
ci/check.sh is the whole check; 62 pytest tests hold the package to the
command line (same results, plans, lints, critiques, drawings, methods,
equivalence verdicts; receipts verified both ways; the same user key; the
digest recomputed from Python canonical bytes), to the service run locally,
and run the front ends under node on the payloads; Python 3.9 smoke with
the wheel alone. Workflow wai-quantum-py.yml runs it on linux and macos.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 19:51:08 -04:00

37 lines
1.2 KiB
TOML

[build-system]
# Pinned: the wheel is built the same way everywhere.
requires = ["maturin==1.15.0"]
build-backend = "maturin"
[project]
name = "wai-quantum"
description = "WAI Quantum in Python: the shared job engine in-process (run, plan, lint, draw, critique, equivalent, verify, seal), a client for the job service, and notebook widgets."
readme = "README.md"
requires-python = ">=3.9"
license = "Apache-2.0"
keywords = ["quantum", "openqasm", "simulation", "receipts", "notebook"]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Rust",
"Topic :: Scientific/Engineering :: Physics",
"Framework :: Jupyter",
]
# None: the engine is in the wheel, and the service client uses the standard
# library alone. The widgets need the `widgets` extra.
dependencies = []
dynamic = ["version"]
[project.optional-dependencies]
widgets = ["anywidget>=0.9.13"]
[project.urls]
Repository = "https://git.transaction.science/Transaction-Science/open-standards"
Service = "https://wai.transaction.science/quantum-jobs/v1"
[tool.maturin]
python-source = "python"
module-name = "wai_quantum._engine"
bindings = "pyo3"
[tool.pytest.ini_options]
testpaths = ["tests"]