Skip to main content

QuSpect

A quantum computing SDK for research and education.

PyPI Python License Documentation

🇨🇳 中文用户请参阅 README_CN.md


QuSpect provides an intuitive, fluent Python API for constructing quantum circuits, visualizing them as ASCII diagrams or scalable SVG, and simulating state-vector evolution with shot-based sampling. Simulation and exact adjoint gradients are backed by the C++ high-performance engine.


Table of Contents


Features

  • Fluent circuit API — build circuits with method chaining; no pre-declared qubit counts
  • 24 built-in gate templates — standard gates (H, X, CX, CCX, SWAP…) and parameterized rotations (RX, RY, RZ, U3…), plus measurements and barriers
  • Symbolic parameters — define variational circuits with named Parameter placeholders and bind to values later
  • DAG compiler — compile circuits into a DAG IR with topological ordering, layer partitioning, and critical path analysis
  • Optimization passes — GateCancellation, CommutationAnalysis, RotationMerging, SingleQubitGateFusion, EliminateDiagonalBeforeMeasurement
  • Operator algebra — QubitOperator (Pauli strings) and FermionOperator (ladder operators) with Jordan-Wigner transforms
  • State-vector simulation — native C++ evolution, projective measurement, and shot-based sampling
  • Variational objectives — exact C++ adjoint gradients and shot-based parameter-shift gradients through one structured API
  • Recoverable batch execution — labelled circuit batches, flattened parameter sweeps, and credential-free job references
  • Visualization — terminal circuit diagrams, SVG circuit rendering (3 themes), sampling result charts (hbar, vbar, dot, SVG)
  • IR export — OpenQASM 2.0 and QSAL (native JSON) export
  • Cloud QPU — unified Backend interface for local simulators and real quantum hardware
  • iSing optimization — QUBO/Ising model conversion, recoverable cloud submission, and objective decoding with quspect[isingq]; see iSing cloud optimization.
  • Transpiler — native-gate decomposition, topology-safe DAG optimization, constrained physical-qubit mapping, and SABRE SWAP routing
  • Pulse envelopes — quspect.pulse builds and decodes superconducting-qubit control envelopes (DRAG, flat-top, custom waveforms, sideband mixing, schedules); a C++ rebuild of envelopes-qc 0.1.5 with bit-identical output; see Pulse envelopes
  • C++ backend — high-performance simulation and gradient execution with AVX2 SIMD acceleration and a pybind11 bridge

Installation

python -m pip install quspect

Pre-built binary wheels include the C++ simulation engine (with OpenMP), so Simulator, NativeExecutor, and exact adjoint gradients work right after pip install — no compiler needed.

Platform Architecture Python Wheel
Linux (glibc ≥ 2.28, e.g. Ubuntu 20.04+, RHEL/Rocky 8+, Debian 10+) x86_64 3.10–3.15 manylinux_2_28_x86_64
Linux (glibc ≥ 2.28, e.g. Ubuntu 20.04+, RHEL/Rocky 8+, Debian 10+) aarch64 (arm64) 3.10–3.15 manylinux_2_28_aarch64
Windows 10/11 x86_64 (64-bit Python) 3.10–3.15 win_amd64
macOS 14 (Sonoma) or newer Apple Silicon (arm64) 3.10–3.15 macosx_14_0_arm64
  • Windows: 64-bit CPython 3.10–3.15 needs nothing extra — the MSVC C++ and OpenMP runtimes are bundled in the wheel.
  • Other platforms (musl/Alpine, 32-bit Windows, Intel Macs, macOS < 14, PyPy, …) install from the source distribution, which compiles the C++ extension. This needs CMake ≥ 3.22 and a C++17 compiler — Visual Studio Build Tools on Windows, Xcode Command Line Tools (+ brew install libomp for OpenMP) on macOS, GCC or Clang on Linux — and network access to fetch nlohmann/json.

Runtime knobs:

  • On x86_64 the AVX2 + FMA kernels are selected automatically when the CPU supports them; set QUSPECT_DISABLE_AVX2=1 to force the portable scalar kernels (read once, at the first native call).
  • Parallel kernels use OpenMP; set OMP_NUM_THREADS to limit the number of threads.
python -c "from quspect.native import capabilities; print(capabilities())"

For development (includes linters, type checker, test runner, and docs tools):

git clone https://github.com/QuSpect/quspect.git
cd quspect
python -m pip install -e ".[dev]"
python -m pip install pybind11

The editable install is pure Python and does not compile the C++ extension; build it as described below.

C++ Native Backend

In a source checkout, build the extension before using Simulator, DensityMatrixSimulator, MonteCarloSimulator, NativeExecutor, or AdjointEngine:

cmake -S cpp -B cpp/build -G Ninja \
  -DPython_EXECUTABLE="$(python -c 'import sys; print(sys.executable)')"
cmake --build cpp/build
ctest --test-dir cpp/build --output-on-failure
python -c "from quspect.native import capabilities; print(capabilities())"

Requirements: C++17 compiler, CMake ≥ 3.22, Ninja, pybind11, and optionally an AVX2-capable CPU. The build writes the extension into the local quspect/ package, so the editable install above can import it directly. The first configure requires network access to fetch nlohmann/json and, when tests are enabled, GoogleTest. Pass -DQSPECT_BUILD_AVX2=OFF for a scalar-only build.

Maintainers: see docs/source/releasing.rst for how wheels are built and published to PyPI.


Quick Start

Build a Circuit

from quspect import QuantumCircuit

# Create a Bell state (entanglement)
circ = QuantumCircuit(name="bell")
circ.h(0)           # Hadamard on qubit 0
circ.cx(0, 1)       # CNOT with control=0, target=1
circ.measure_all()  # measure all qubits

print(circ.num_qubits)   # 2 — dynamically inferred
print(circ.num_clbits)   # 2
print(len(circ))         # 3 instructions

Visualize

# Terminal ASCII diagram
print(circ.draw())
# SVG rendering (inline in Jupyter or save to file)
svg = circ.svg(style="dark")
svg.to_file("bell_circuit.svg")

The Bell circuit rendered by circ.svg() ("light" / "dark" themes, following your GitHub color scheme):

Bell circuit: H on q0, CNOT from q0 to q1, then both qubits measured

Simulate

from quspect.simulation import Simulator

sim = Simulator(seed=42)
result = sim.run(circ, shots=1024)

print(result.counts)           # approximately {'00': 512, '11': 512}
print(result.most_frequent())  # one of the two Bell-state outcomes

# Statistical summary and bar chart
result.display(style="hbar")

Parameterized Circuits

from quspect import QuantumCircuit, Parameter

theta, phi = Parameter("θ"), Parameter("φ")

circ = QuantumCircuit(name="variational")
circ.rx(theta, 0)
circ.ry(phi, 1)
circ.cx(0, 1)

# Bind to concrete values before simulation
bound = circ.bind_parameters({theta: 0.5, phi: 1.2})

Variational Objectives and Gradients

Define a measurement-free ansatz and named observables once, then compile the same objective for exact adjoint differentiation or hardware-shaped sampling:

from quspect import (
    AdjointEngine,
    ObservableObjective,
    Parameter,
    QuantumCircuit,
    QubitOperator,
    SamplingEngine,
    Simulator,
)

theta = Parameter("theta")
ansatz = QuantumCircuit(name="one_qubit_vqe").ry(theta, 0)
hamiltonian = QubitOperator({((0, "Z"),): 1.0})
objective = ObservableObjective(ansatz, {"energy": hamiltonian})

# Exact noiseless value and gradient from the native adjoint engine.
exact_plan = AdjointEngine(dtype="float64").compile(objective)
exact = exact_plan.evaluate({theta: 0.5})
print(exact.value("energy"), exact.derivative("energy"))
print(exact_plan.parameter_order)  # authoritative optimizer-vector order

# The same objective through grouped measurements and parameter shifts.
sampled_plan = SamplingEngine(
    Simulator(seed=7),
    shots=4096,
    grouping="qwc",
).compile(objective)
sampled = sampled_plan.evaluate({theta: 0.5})
print(sampled.value("energy"), sampled.derivative("energy"))
print(sampled_plan.num_measurement_groups)
print(sampled_plan.num_experiments_per_point)

# Batch optimizer points without recompiling; result axes stay explicit.
sweep = exact_plan.evaluate_many(
    [{theta: -0.2}, {theta: 0.0}, {theta: 0.2}]
)
print(sweep.values.shape)    # (3, 1)
print(sweep.jacobian.shape)  # (3, 1, 1)

Finite-shot values and gradients fluctuate statistically; compare them against the adjoint result rather than expecting exact equality. See Variational Objectives for parameter sweeps, optimizer integration, asynchronous submission, and job recovery.

Circuit Composition

# Reusable sub-circuit
bell_pair = QuantumCircuit(name="bell")
bell_pair.h(0).cx(0, 1)

# Compose into a larger circuit
main = QuantumCircuit(name="composed")
main = main.compose(bell_pair, qubits=[0, 2])  # map sub's 0,1 → main's 0,2
main = main.compose(bell_pair, qubits=[1, 3])  # map sub's 0,1 → main's 1,3

Algorithm Examples

The repository includes complete, classically checkable examples:

Pulse Envelopes

quspect.pulse composes control envelopes and samples them on a fixed time grid (requires the native extension, see C++ Native Backend):

import numpy as np
from quspect.pulse import GaussianDRAG, WaveCache, align, decode_envelope

pi_pulse = GaussianDRAG(t0=15, w=10, amp=1.0, coef=0.5, df=0.1, phase=0.0)
xy = align(pi_pulse, np.array([0.0, 50.0, 100.0]), np.array([1.0, 0.5, 1.0], dtype=np.float32))
t_start, wave = decode_envelope(xy, WaveCache(0.5), -50.0, 250.0)  # 0.5 ns grid
print(t_start, wave.dtype, wave.shape)  # -50.0 complex64 (600,)

The API matches envelopes-qc 0.1.5 (envelopes.evc) and decoded waveforms are bit-identical; see Pulse envelopes for all envelope types. Code written against envelopes-qc (such as lqcloud's pulse sequences) can run on it via quspect.pulse.use_as_envelopes() / install_as_envelopes().


Core Modules

QuantumCircuit

The central class for building quantum programs. Qubit and classical bit counts are dynamically inferred from the indices you use — no need to pre-declare circuit size.

Method Description
.h(q) .x(q) .y(q) .z(q) Single-qubit gates
.s(q) .sdg(q) .t(q) .tdg(q) Phase / rotation gates
.rx(θ,q) .ry(θ,q) .rz(θ,q) .p(θ,q) Parameterized rotations
.cx(c,t) .cz(c,t) .swap(a,b) Two-qubit gates
.ccx(c1,c2,t) Toffoli (controlled-controlled-X)
.measure(qubits, clbits) Projective measurement
.measure_all() Measure all qubits
.barrier(*qubits) Insert a barrier
.compose(other, qubits, clbits, inplace=False) Compose another circuit, returning a copy by default
.bind_parameters({p: v}) Bind symbolic parameters
.to_dag() Compile to DAG IR
.draw() ASCII circuit diagram
.svg(style, width, scale) SVG circuit diagram

Gates

Gates are lightweight metadata objects — they store name, qubit count, and parameter info but not unitary matrices. Import the public helper with from quspect.gates import gate_matrix when a matrix is needed.

from quspect.gates.standard import H, CX, CCX, SWAP
from quspect.gates.parameterized import RX, RY, RZ, U3

# Standard gates are module-level singletons
circ = QuantumCircuit()
circ.append(H, [0])
circ.append(CX, [0, 1])
circ.append(CCX, [0, 1, 2])

# Parameterized gates — create with values
gate_ry = RY.with_params(0.5)
circ.append(gate_ry, [1])

DAG IR & Optimization

Circuits compile to a Directed Acyclic Graph representation that makes qubit/clbit dependencies explicit:

dag = circ.to_dag()

print(dag.num_nodes(), dag.num_edges())
print(dag.topological_order())
print(dag.layers())          # partition into parallel layers
print(dag.critical_path_length())  # number of operations on the longest path

The PassManager runs optimization passes on the DAG:

from quspect import PassManager, GateCancellation, RotationMerging

pm = PassManager([
    GateCancellation(),
    RotationMerging(),
])
optimized = pm.run(dag)

Operators

Support for second-quantized operator algebra:

from quspect import FermionOperator, QubitOperator
from quspect.operators.transforms import jordan_wigner

# Pauli string operators
H = QubitOperator({
    ((0, "X"), (1, "X")): 1.0,
    ((0, "Z"),): -0.5,
})

# Fermionic operators
f = FermionOperator({((2, 1), (1, 1), (0, 0), (3, 0)): 2.0})

# Jordan-Wigner transformation: fermions → qubits
qubit_op = jordan_wigner(f)

IR Export

from quspect.ir import QASM2ExportConfig, QASM2Exporter, QASM2ExportMode
from quspect.ir.qsal import dumps as qsal_dumps

# OpenQASM 2.0
print(QASM2Exporter().export(circ))  # strict mode

config = QASM2ExportConfig(mode=QASM2ExportMode.DECOMPOSE)
print(QASM2Exporter(config).export(circ))

config = QASM2ExportConfig(mode=QASM2ExportMode.EXTENDED)
print(QASM2Exporter(config).export(circ))

# QSAL (native JSON IR)
print(qsal_dumps(circ))

Visualization

Terminal Diagrams

Zero-dependency terminal circuit diagrams via circuit.draw():

  • Quantum wires as -, classical wires as =
  • Gate labels in [brackets], controls as o, targets labelled
  • SWAP gates as x marks connected vertically
  • Barriers as |

SVG Rendering

Scalable vector graphics via circuit.svg(), with Jupyter notebook inline support:

svg = circ.svg(style="dark", width=600, scale=1.2)
print(svg)                # SVG string
svg.to_file("out.svg")    # save to file

Three built-in themes:

Theme Background Best for
"official" White, slate text Publications, papers
"light" Cool gray Light-mode IDEs, docs
"dark" Dark navy Dark-mode notebooks, slides

Custom themes:

from quspect.visualization import SvgStyle, draw_svg_circuit

custom = SvgStyle(
    background="#1a1a2e",
    wire="#e94560",
    classical_wire="#b8adc8",
    gate_fill="#0f3460",
    gate_stroke="#16213e",
    text="#ffffff",
    control="#e94560",
    barrier="#8a744d",
    measure_fill="#211040",
    channel_fill="#2a153c",
    channel_stroke="#c77532",
)
svg = draw_svg_circuit(circ, style=custom)

Sampling Charts

Result visualization with statistical annotations:

result.display(style="hbar", sort_mode="count_desc")

Four chart styles: hbar, vbar, dot, svg.

Side-by-side comparison:

from quspect.visualization import compare_results

compare_results(
    result1,
    result2,
    label_a="Ideal",
    label_b="Noisy",
)

Simulation

The simulator implements the Backend ABC, sharing the same .run() interface as cloud QPUs. It delegates to the C++ native engine for state-vector evolution:

from quspect import QuantumCircuit
from quspect.simulation import Simulator
from quspect.backends import Backend

sim = Simulator(seed=42)
assert isinstance(sim, Backend)   # same interface as cloud backends

# State-vector evolution uses a measurement-free circuit and opts in to storage.
unitary = QuantumCircuit().h(0).cx(0, 1)
state_result = sim.run(unitary, save_statevector=True)
print(state_result.statevector)

# Shot-based sampling with projective measurement
sampled_circuit = unitary.copy().measure_all()
result = sim.run(sampled_circuit, shots=4096)

# Access results
print(result.counts)              # approximately {'00': 2048, '11': 2048}
print(result.probabilities)       # approximately {'00': 0.5, '11': 0.5}
print(result.most_frequent())     # one of the Bell-state outcomes
print(result.top_outcomes(3))     # top-3 outcomes

Measurement modes:

  • Terminal measurements — all measure ops at circuit end: evolve once, then sample
  • Mid-circuit measurements — measurements interleaved with gates: full re-execution per shot with state collapse

Backend-neutral Parameter Sweeps

ExecutionRequest.sweep() snapshots one parameterized template and binds every point in order. The same labelled request works with a local simulator or a batch-capable cloud backend:

import math

from quspect import ExecutionRequest, Parameter, QuantumCircuit, Simulator

theta = Parameter("theta")
template = QuantumCircuit().ry(theta, 0).measure_all()
request = ExecutionRequest.sweep(
    template,
    [{theta: 0.0}, {theta: math.pi}],
    labels=["zero", "one"],
    shots=128,
)

batch = Simulator(seed=7).execute(request)
print(batch.by_label("zero").counts)  # {'0': 128}
print(batch.by_label("one").counts)   # {'1': 128}

Cloud QPU

QuSpect provides a unified Backend interface — the same backend.run(circuit, shots=N) API works for both local simulators and remote quantum hardware. Currently LogicalQubit (逻辑比特) is supported; additional platforms can be added by implementing CloudBackend.

Cloud Setup

# Set your API key (get one from https://cloud.logicalqubit.com)
export LQCLOUD_API_KEY=qk_your_api_key_here

# Install QuSpect's provider extra
pip install "quspect[logicalqubit]"

Run on Real Hardware

The calls below create real provider jobs and may consume quota or incur cost. Check provider.list_backends() and the selected backend's current metadata before choosing its name or physical layout.

from quspect import QuantumCircuit
from quspect.backends.logicalqubit import LogicalQubitProvider

# 1. Connect to the cloud platform
provider = LogicalQubitProvider()
backend = provider.get_backend("QZ02")  # select a QPU visible to your account

print(backend.name)
print(backend.num_qubits)
print(backend.native_gate_set)
print(backend.platform_name)

# 2. Build any circuit
qc = QuantumCircuit(name="bell")
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# 3. Run — same API as the local Simulator
result = backend.run(qc, shots=2000)
print(result.most_frequent())
print(result.counts)

Compilation and Physical Layout

By default backend.run() attempts to compile a bound circuit for the target:

  1. Decompose — non-native gates are recursively decomposed to the chip's native gate set (e.g. CX → H + CZ + H, RX → H + RZ + H)
  2. Optimize — topology-independent cancellation, commutation, rotation merging, and single-qubit fusion run before physical routing
  3. Layout + Route — SABRE finds an initial logical→physical mapping and inserts SWAP gates so every two-qubit gate respects the coupling topology
# A nontrivial logical circuit that may require routing.
qc = QuantumCircuit(name="calibrated_subset")
qc.h(0)
qc.cx(0, 1).cx(0, 2).cx(0, 3)
qc.measure_all()

# Restrict layout and every inserted SWAP to a calibrated physical-qubit
# pool. SABRE chooses the starting layout inside the induced subgraph.
job = backend.submit(
    qc,
    shots=1000,
    transpile=True,
    physical_qubits=[7, 8, 9, 10, 11],
)

# Optionally fix the starting logical→physical assignment as well:
# logical q0→physical 7, q1→8, q2→9, q3→10.
job = backend.submit(
    qc,
    shots=1000,
    transpile=True,
    physical_qubits=[7, 8, 9, 10, 11],
    initial_layout=[7, 8, 9, 10],
)

physical_qubits must be unique, in range, large enough for the circuit, and must induce a connected coupling subgraph. When both options are present, every initial_layout entry must belong to physical_qubits. Routing may use additional workspace wires, but only from that pool; QuSpect forwards the expanded logical→physical layout required by the routed circuit.

To submit an already compiled/topology-valid circuit without QuSpect routing, disable transpilation. In this mode initial_layout is passed directly to the provider and physical_qubits is not accepted:

result = backend.run(
    qc,
    shots=1000,
    transpile=False,
    initial_layout=[7, 8, 9, 10],
)

The routed circuit preserves original classical measurement targets and uses a static provider layout even when SABRE inserts workspace SWAPs. DAG optimization checks adjacency on every operand wire, so structures such as the QAOA CX–RZ(target)–CX implementation of a ZZ phase are not incorrectly cancelled.

Async Submission

For long-running jobs, submit asynchronously and poll for results:

# Submit without blocking
job = backend.submit(qc, shots=2000)
print(f"Job ID: {job.job_id}")
print(f"Status: {job.status().value}")  # queued / running / completed

# Block until complete (with optional timeout)
result = job.result(timeout=600)

# Cancel if needed
job.cancel()

Batch Sampling and VQE

ExecutionRequest is the common envelope for simulators and cloud devices. Each experiment has a stable label, and batches larger than the provider's 64-circuit limit are exposed as one recoverable composite job:

from quspect import ExecutionRequest

request = ExecutionRequest.batch(
    [circuit_a, circuit_b],
    labels=["theta-plus", "theta-minus"],
    shots=2000,
    result_format="auto",
)
job = backend.submit_request(request)
batch = job.result(timeout=600)
print(batch.by_label("theta-plus").counts)

# Safe to persist: contains IDs and shapes, never credentials.
saved_reference = job.reference.to_dict()

If a later provider chunk fails after earlier chunks were accepted, PartialSubmissionError exposes submitted_job_ids, serializable submitted_references, and any cancellation_failures instead of losing the already-created task handles.

On an older LogicalQubit server, lqcloud 0.4.1 may internally fall back from native batch to individual submissions without exposing partial child IDs if that fallback itself fails. For experiments requiring complete rollback visibility, set options={"provider_batching": "individual"} (or pass the same option through SamplingEngine(execution_options=...)). QuSpect then owns each submission and can report/cancel every task it has created; the trade-off is one provider task per circuit.

With result_format="auto", lqcloud selects counts for narrow readout and memory when the measured width requires per-shot output. QuSpect always provides aggregated result.counts; when memory is returned, the original shot sequence is also available as result.memory.

Shot-based observable objectives use the same job layer:

from quspect import ObservableObjective, SamplingEngine

objective = ObservableObjective(ansatz, {"energy": hamiltonian})
plan = SamplingEngine(
    backend,
    shots=4096,
    execution_options={"transpile": False, "initial_layout": [0, 1]},
).compile(objective)

objective_job = plan.submit({theta: 0.2})
evaluation = objective_job.result(timeout=600)
print(evaluation.value("energy"), evaluation.derivative("energy"))

# Several optimizer points are flattened into one asynchronous provider task.
sweep_job = plan.submit_many([{theta: 0.1}, {theta: 0.2}, {theta: 0.3}])
sweep = sweep_job.result(timeout=600)

Every sampled plan carries a stable workload fingerprint in its JobReference. On recovery, plan.attach(job) validates that fingerprint, the backend, labels, circuit shapes, shot count, and result format before any measurement data is decoded. Recovered multi-point jobs use plan.attach_many(execution_job) in the same way.

The reference is a credential-free recovery manifest, not a signed receipt: keep its JSON in trusted storage. Its fingerprint prevents accidental task mix-ups but cannot authenticate a manifest deliberately rewritten by an untrusted party.

Simulator vs QPU

The unified Backend interface lets you switch between local simulation and real hardware by changing one line:

from quspect import QuantumCircuit
from quspect.simulation import Simulator
from quspect.backends.logicalqubit import LogicalQubitProvider

qc = QuantumCircuit(name="compare")
qc.h(0).cx(0, 1).measure_all()

# Local simulation
sim = Simulator(seed=42)
sim_result = sim.run(qc, shots=2000)

# Real QPU (latency depends on the provider queue)
provider = LogicalQubitProvider()
backend = provider.get_backend("QZ02")
qpu_result = backend.run(qc, shots=2000)

# Compare
for bs in sorted(sim_result.counts):
    s = sim_result.get_count(bs)
    q = qpu_result.get_count(bs)
    print(f"  |{bs}⟩:  sim={s:4d}  qpu={q:4d}  Δ={s-q:+4d}")

C++ Native Backend

The C++ backend (cpp/) is the execution engine for local simulators and exact adjoint gradients:

cpp/
├── include/quspect_native/    # Public headers
├── src/
│   ├── kernels/scalar/        # Portable scalar kernels
│   ├── kernels/avx2/          # SIMD-accelerated kernels (AVX2)
│   ├── kernels/dispatch/      # Runtime CPU feature dispatch
│   ├── runtime/               # StateVector, ClassicalRegister, RuntimeEngine
│   ├── ir/                    # QSAL JSON decoder & program builder
│   ├── executor/              # SimulationExecutor, GradientExecutor
│   └── pybind/                # Python → C++ bridge (pybind11)
└── tests/                     # GoogleTest suite (14 test files)

Python bridge:

from quspect import QuantumCircuit
from quspect.ir.qsal import dumps as qsal_dumps
from quspect.native import NativeExecutor

qc = QuantumCircuit().h(0).measure_all()
executor = NativeExecutor()
result = executor.run(qsal_dumps(qc), shots=1024)
print(result.counts)

If the extension is missing, circuit construction and other Python tooling remain usable, but native-dependent entry points raise NativeImportError.


Documentation

Full documentation is hosted on Read the Docs at quspect.readthedocs.io (Chinese: quspect.readthedocs.io/zh-cn/latest/):

  • Quickstart — installation, circuit building, simulation
  • API Reference — generated documentation for the currently listed public modules
  • Architecture — layered design, core concepts, architecture decisions

Build locally (the docs import the source tree directly, so the C++ extension is not needed):

python -m pip install -r docs/requirements.txt
cd docs
sphinx-build -b html source/ build/html/
sphinx-build -b html -D language=zh_CN source/ build/html/zh_CN/

Development

# Lint & format
ruff check quspect/ tests/ && ruff format quspect/ tests/

# Type check
mypy quspect/

# Run tests
pytest

# Build C++ backend & run gtest (from the repository root)
cmake -S cpp -B cpp/build -G Ninja && cmake --build cpp/build
ctest --test-dir cpp/build --output-on-failure

Tooling

Tool Purpose
ruff Lint + Format
mypy Static type checking (strict mode)
pytest + pytest-cov Testing + coverage
sphinx Documentation generation
cmake + ninja C++ build system
gtest C++ unit testing

Metadata

Release files for quspect 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quspect 0.3.1
File Size Uploaded Provenance Actions
quspect-0.3.1.tar.gz 695.7 kB With provenance Details for quspect-0.3.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for quspect 0.3.1
File Actions
quspect-0.3.1-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for quspect-0.3.1-cp315-cp315-win_amd64.whl
quspect-0.3.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for quspect-0.3.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for quspect-0.3.1-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp315-cp315-macosx_14_0_arm64.whl CPython 3.15 CPython 3.15 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp315-cp315-macosx_14_0_arm64.whl
quspect-0.3.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for quspect-0.3.1-cp314-cp314-win_amd64.whl
quspect-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for quspect-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for quspect-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp314-cp314-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp314-cp314-macosx_14_0_arm64.whl
quspect-0.3.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for quspect-0.3.1-cp313-cp313-win_amd64.whl
quspect-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for quspect-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for quspect-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp313-cp313-macosx_14_0_arm64.whl
quspect-0.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for quspect-0.3.1-cp312-cp312-win_amd64.whl
quspect-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for quspect-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for quspect-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp312-cp312-macosx_14_0_arm64.whl
quspect-0.3.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for quspect-0.3.1-cp311-cp311-win_amd64.whl
quspect-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for quspect-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for quspect-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp311-cp311-macosx_14_0_arm64.whl
quspect-0.3.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for quspect-0.3.1-cp310-cp310-win_amd64.whl
quspect-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for quspect-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
quspect-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for quspect-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
quspect-0.3.1-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details for quspect-0.3.1-cp310-cp310-macosx_14_0_arm64.whl

Total release size: 31.2 MB

Release files / quspect-0.3.1.tar.gz

Download URL quspect-0.3.1.tar.gz
Size 695.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fb2a578b7b48d61158daf201c4bff4be84323170985dda4a8a3467059b445ee9
BLAKE2b-256 checksum
How to use checksums
2fde94c6565f9935a9b69303bdcfa347c9ddd42d888bfa3d33b4ec68071de159
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp315-cp315-win_amd64.whl

Download URL quspect-0.3.1-cp315-cp315-win_amd64.whl
Size 1.5 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
8b5c111fa17fe9d1a50e7786815eb869771c1ccde09e99740290d7d77bc9aac1
BLAKE2b-256 checksum
How to use checksums
4726ec78b2dcce7c2c282b6d0ed7a42c3dbdeccafbc18d2c7dfe21e8ed2c2dc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.15 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
995b3843047352270738af72a6fb398040e9b3a9882e3a483c81992df4a3bb21
BLAKE2b-256 checksum
How to use checksums
cb29d67ee0b26f77b768d090b89242d328a90e44e7dd7b5530046494b21086f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.0 MB
Tags CPython 3.15 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4abafb4f8ca95252ade489d6fc4cd8f0afc37376c9fede35cfddca90958b02ff
BLAKE2b-256 checksum
How to use checksums
d2f97b04f59edf28ebe177366490b1ad62d20cc7d5461dc4d5c38ffc01a622b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp315-cp315-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp315-cp315-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.15 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
8636bde13fca7b33b96bd937761ec7208b0e8865aed23fad61e8dae18ae1f094
BLAKE2b-256 checksum
How to use checksums
c76ebbb675e64fb61fadaebc075f454fcba084330c144eb371f822f598807325
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp314-cp314-win_amd64.whl

Download URL quspect-0.3.1-cp314-cp314-win_amd64.whl
Size 1.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
df77c0b6181022689e73d33daf42ce9ea1d70c08f2aa97dfc261609a2e9930b2
BLAKE2b-256 checksum
How to use checksums
d820c3687fc1f9fb2040f4be33656e513d3c752a04ed1d77f13191ce0e6060eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4fd7ff21fe4795f73110b486153d91885430d44df6ff2e9a9d49ad8ba3713d0d
BLAKE2b-256 checksum
How to use checksums
cd4d70b36312de607128c9dbc92ceacd9df7900f8420636083c69bf7a821cf97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.0 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4e3d05c5cf181459f1aff37b3f1ab575e289f624fae55b0155d745c5d0cb34c5
BLAKE2b-256 checksum
How to use checksums
b2693252dc91f2fc600d29a226f297d63ea5cfcad85f7785b8deab5c3542dfa7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp314-cp314-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp314-cp314-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.14 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
cd645004e1b964fd12b0cdc262eec19a94142af0bb279b9f9a73ca746c051f5a
BLAKE2b-256 checksum
How to use checksums
891f0b7d4a830adac80e57709170626b7b4de1b5dde9fc683afe67e9a664acbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp313-cp313-win_amd64.whl

Download URL quspect-0.3.1-cp313-cp313-win_amd64.whl
Size 1.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6f45dfb69c645d1579d2a4c50f3f99624ef26d45543385e42299696c387915b0
BLAKE2b-256 checksum
How to use checksums
98cf32630d496e59b809514c6ebf6a434243290014155c4b93f4d522913395b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
faae9846d6c5674deca1921ea1599d6392e0976665694105da0178a0d6f6fa98
BLAKE2b-256 checksum
How to use checksums
e13fc2161019e2aacbfed0fc855dd43d7b14fb309cb6a920c6e0c25cb5adf511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.0 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4cc0312f596f04521a1a89727400436cb2763436af66121c7210a904ee27d2a3
BLAKE2b-256 checksum
How to use checksums
df1e5d505eb70083016f6dc054f92db03ac2fb68fbc208a7bb6b282c3b98fd01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp313-cp313-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp313-cp313-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
c08b49d816471408f979d434c0fc444e3a0dc1cf9a1be34d0221f57ae932fcab
BLAKE2b-256 checksum
How to use checksums
9a75ae324c8056c2f4c2d1bbed033d2f3d36d49e312f2856d4945182fe4f0065
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp312-cp312-win_amd64.whl

Download URL quspect-0.3.1-cp312-cp312-win_amd64.whl
Size 1.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
62397f3a0607d634cfe12b3f496476e2e7e7af18ff1b557281240e61e57c7986
BLAKE2b-256 checksum
How to use checksums
6cde1ed1328a772613d0621b96a2b5b606891ec5d1ffa42dca33db9f1c269901
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
af18ba5b331112c631ad6158076d4fe7db0be3bcabf26e5892361ec4f8b83fb8
BLAKE2b-256 checksum
How to use checksums
79481ddf0156c74168992d7ff32c710c8d74ba5666e378760a1eb5ed365ed0e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.0 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c4cb606744572ba2f20e75e9fa3be18b465631a2ff40cf74a7f8abd697dd56d1
BLAKE2b-256 checksum
How to use checksums
9313786fe136544352a8f5d37a8bba74195cdcf5a6fcdf475675e00e3f534650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp312-cp312-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp312-cp312-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
90b81096894fec3a2d59fa344c429782bfc26035f74b1fbdbfa741dd226e1a9b
BLAKE2b-256 checksum
How to use checksums
1eeaa7ea49c7a0c5f8ca4647597c6db6ff4664d93e2c0c0c6468c93ee75914e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp311-cp311-win_amd64.whl

Download URL quspect-0.3.1-cp311-cp311-win_amd64.whl
Size 1.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
316a7cbeb121028ca1214bbf0fb38a9defe4d44474b94e016a90620b476e9bce
BLAKE2b-256 checksum
How to use checksums
01ab1f94283db4a0dd822e5eb0a81a6a92c793a2371777e366720e3eb4dad312
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a37227c8469424527851dda7be7bc9b716a70315b9a98a515e2de12123b7b990
BLAKE2b-256 checksum
How to use checksums
b1f0dc715e2d582b71474aadaffabd7937995f82efffcbf1237590ae6692f976
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.0 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
15efd75a622f57d30ad3a8211aab70f83ce207ad195de50490693c0c1937bd06
BLAKE2b-256 checksum
How to use checksums
65f366bf38babbeb4009e9c5e714760dfffde2c035238e5097bed11eb47edc11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp311-cp311-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp311-cp311-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
fc978f77f8664a48906515c021d7a8fb86ac4b07baa68d3dc0c2e1e1030036ef
BLAKE2b-256 checksum
How to use checksums
fc7483dbccaa0b41301669005a683ffda7f7a3383f2f539a5c3de33ee49b1335
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp310-cp310-win_amd64.whl

Download URL quspect-0.3.1-cp310-cp310-win_amd64.whl
Size 1.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
46948026d61d58f6f33e3fd9f8f0e64d563692639cebf134a01eb8747a806ea4
BLAKE2b-256 checksum
How to use checksums
bdadcafc37f5e085a22de14fce7a02da3a0bd4fb127c4e3456a9ce6cf75be34a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL quspect-0.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7872a574d38819c95f1b90b4ac136c568c820c67d37131053ef237ce5bc3e6a7
BLAKE2b-256 checksum
How to use checksums
168df2d480657908fbd6cd9e33147d80890c9810d20c97f8062ca2d532956d75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL quspect-0.3.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 999.3 kB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2113c46a346879c21a2eab48876ba4e55dadc2b463a966e7a6785a026d40d9e0
BLAKE2b-256 checksum
How to use checksums
21a8b4b450b8188b27ca0936cc62c407eeb9dfef1c8a999b5555f5e13b622657
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / quspect-0.3.1-cp310-cp310-macosx_14_0_arm64.whl

Download URL quspect-0.3.1-cp310-cp310-macosx_14_0_arm64.whl
Size 1.1 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
1d72f74bad207cb4eef2090b932b2a26eab00f6d4a473f3eb262bc67958c8523
BLAKE2b-256 checksum
How to use checksums
9e8941a56c5de5ef2eb176384c4baf06ce431df38a0670ac8d19748570f264d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for quspect 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 25 files in this release have been uploaded with provenance metadata.

Select from 25 files

Attestation for quspect-0.3.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page