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]>
37 lines
1.2 KiB
TOML
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"]
|