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.4.0.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 qubestack-pennylane 1.4.0.1
File Size Uploaded Provenance
qubestack_pennylane-1.4.0.1.tar.gz 67.2 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 114.5 kB

Release files / qubestack_pennylane-1.4.0.1.tar.gz

Download URL qubestack_pennylane-1.4.0.1.tar.gz
Size 67.2 kB
Tags Source
SHA-256 checksum
How to use checksums
003d4a5531be3da63204b21ef7bb87c3e7e5a07cb8193cda5157ec5538b8e063
BLAKE2b-256 checksum
How to use checksums
e225e609c76737d27a5c35190e386534afadd6b8ab45d80767bb0ecdd47d5fe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL qubestack_pennylane-1.4.0.1-py3-none-any.whl
Size 47.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2e7b2fe7454d0281a44cbbcc66b0fec504a94a626385085a6de4feb824204112
BLAKE2b-256 checksum
How to use checksums
af3d6644bc95cf1ff0259b1ac901b5cc126d17a228dc3863a8407713fcb21594
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for qubestack-pennylane 1.4.0.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.

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