Skip to main content

qubestack-pennylane

QuREKA backend plugin for PennyLane.

Run PennyLane circuits on IonQ hardware, the QPerfect Mimiq emulator, IQM superconducting QPUs, or the AWS Braket Mock QA fleet through the QuREKA platform. The plugin ships four PennyLane devices that delegate execution to the same QuREKA gateway used by qubestack-cudaq; the gateway then forwards jobs to the actual provider.

QXDEV-2579 · The Rigetti target (rigetti.ankaa-3) has been retired platform-wide and qureka.rigetti is no longer registered.

PennyLane circuit
       │
       ├──►  qureka.ionq   ──►  POST /api/quantum-jobs  ──►  IonQ Cloud v0.4
       │                                                    (qpu.forte-1 · ionq-mock.*)
       │
       ├──►  qureka.mimiq  ──►  POST /api/quantum-jobs  ──►  QPerfect Mimiq
       │                         QuREKA gateway              (sdt.qubesim* · mimiq-mock.*)
       │                         (qubestack-job-engine)
       │
       ├──►  qureka.iqm    ──►  POST /api/quantum-jobs  ──►  AWS Braket
       │                                                    (IQM Garnet / Emerald)
       │
       └──►  qureka.braket ──►  POST /api/quantum-jobs  ──►  AWS Braket Mock QA fleet
                                                            (braket-mock.*)

Supported Backends

IonQ (qureka.ionq)

Backend ID IonQ QPU
ionq.forte-1 IonQ Forte
ionq.aria-1 IonQ Aria 1
ionq.aria-2 IonQ Aria 2
ionq.forte-enterprise-1 IonQ Forte Enterprise
ionq.simulator IonQ cloud simulator
ionq-mock.qpu · ionq-mock.dry-fail · ionq-mock.expired · ionq-mock.preflight-fail · ionq-mock.run-fail · ionq-mock.submit-fail · ionq-mock.unknown IonQ Mock QA fleet (QXDEV-2586 · registered in resource-engine on dev/staging)

Mimiq (qureka.mimiq)

Backend ID Provider
sdt.qubesim-mimiq QPerfect Mimiq emulator (canonical)
sdt.qubesim* Any future Mimiq profile (gateway routes by prefix)
mimiq-mock.emul · mimiq-mock.run-fail · mimiq-mock.stopped · mimiq-mock.submit-fail MIMIQ Mock QA fleet (QXDEV-2586)

IQM (qureka.iqm)

Backend ID IQM QPU (via AWS Braket)
iqm.garnet IQM Garnet (arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet)
iqm.emerald IQM Emerald (arn:aws:braket:eu-north-1::device/qpu/iqm/Emerald)

Braket Mock (qureka.braket)

Backend ID Purpose (QXDEV-2586)
braket-mock.qpu Nominal AWS Braket-routed QPU scenario
braket-mock.cancelling Simulates cancellation flow
braket-mock.run-fail Simulates run-time failure
braket-mock.shot-shortage Simulates partial shot delivery
braket-mock.submit-fail Simulates submit-side rejection
braket-mock.unknown Simulates unknown/terminal-unknown state

These match the device maps in qubestack-cudaq and the routing in qubestack-job-engine. Server-side routing happens by deviceCode prefix: ionq.* / ionq-mock.* → IonQ Cloud v0.4 (real or mock), sdt.qubesim* / mimiq-mock.* → Mimiq (real or mock), iqm.* → AWS Braket, braket-mock.* → AWS Braket Mock.

Installation

pip install qubestack-pennylane

Requires Python 3.12 (matches qubestack-cudaq's runtime baseline). The plugin pins pennylane>=0.44,<0.45; tested against the current PyPI stable PennyLane 0.44.1.

Quick Start

import pennylane as qml

# IonQ hardware
dev = qml.device(
    "qureka.ionq",
    wires=2,
    backend="ionq.forte-1",     # see Supported Backends
    api_key="<QUREKA_API_KEY>",  # or set QUREKA_API_KEY env var
    shots=1000,
)

# Mimiq emulator (drop-in alternative)
dev = qml.device(
    "qureka.mimiq",
    wires=2,
    backend="sdt.qubesim-mimiq",
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

# IQM superconducting QPU (via AWS Braket)
dev = qml.device(
    "qureka.iqm",
    wires=2,
    backend="iqm.garnet",   # or "iqm.emerald"
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

# AWS Braket Mock QA fleet (QXDEV-2586)
dev = qml.device(
    "qureka.braket",
    wires=2,
    backend="braket-mock.qpu",
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

@qml.qnode(dev)
def bell():
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.counts(wires=[0, 1])

print(bell())
# {'00': ~500, '11': ~500}

Configuration

Parameter Required Description
wires Yes Number of qubits (or list of wire labels).
shots Yes Sampling shot count. All three devices are sample-based.
backend Yes Provider device code (tables above).
api_key Yes (or QUREKA_API_KEY) QuREKA API key.
url No QuREKA gateway base URL. Default: QUREKA_TARGET_URL env var, then https://openapi.qureka.io.
job_name No Optional human-readable label.
poll_interval No Seconds between status polls (default 5.0).
timeout No Total seconds to wait for completion (default 600).
endian No Bit-ordering of gateway counts. Defaults: qureka.ionq="little" (raw IonQ integer keys), qureka.mimiq/qureka.iqm/qureka.braket="big" (bitstrings with qubit 0 leftmost).

Supported Operations

The common qis gateset that the QuREKA gateway can forward to all four providers (IonQ / Mimiq / IQM / AWS Braket Mock):

Hadamard, PauliX/Y/Z, S, T, SX, Identity, CNOT, CZ, SWAP, RX, RY, RZ, PhaseShift, IsingXX, IsingYY, IsingZZ, plus the adjoints of S, T, SX, RX, RY, RZ, IsingXX/YY/ZZ.

Higher-level operations (e.g. QFT, Toeplitz) must be decomposed first via qml.transforms.decompose or qml.transforms.unitary_to_rot before submission.

Development

git clone <repo>
cd qubestack-pennylane

# Python 3.12 is required.
python3.12 -m venv .venv
source .venv/bin/activate

pip install --upgrade pip setuptools wheel
pip install -e . pytest responses
pytest -v

Architecture

License

Apache License 2.0

Metadata

Release files for qubestack-pennylane 1.5.0

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

Source distribution (sdist)

Source distribution for qubestack-pennylane 1.5.0
File Size Uploaded Provenance
qubestack_pennylane-1.5.0.tar.gz 68.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for qubestack-pennylane 1.5.0
File Interpreter ABI Platform
qubestack_pennylane-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 118.0 kB

Release files / qubestack_pennylane-1.5.0.tar.gz

Download URL qubestack_pennylane-1.5.0.tar.gz
Size 68.8 kB
Tags Source
SHA-256 checksum
How to use checksums
33693bd501e4bb6b29494e90762069907d1f8b854712625446f69e4ce0347472
BLAKE2b-256 checksum
How to use checksums
73f751bab1f2eaa9c51c84625362b48f55da2e2f745d8b8e6b61381926d1ad1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / qubestack_pennylane-1.5.0-py3-none-any.whl

Download URL qubestack_pennylane-1.5.0-py3-none-any.whl
Size 49.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db0e0322a67e04c46058e068e7d64d83da8545e4899eff410a28bc5a6f95c65c
BLAKE2b-256 checksum
How to use checksums
be3c14d198309f18a318063c1fc6c63bdb4aa12798c17783dc97085cde9476c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for qubestack-pennylane 1.5.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

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