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 Rigetti superconducting QPUs 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.

PennyLane circuit
       │
       ├──►  qureka.ionq    ──►  POST /api/quantum-jobs  ──►  IonQ Cloud v0.4
       │                                                     (qpu.forte-1, ...)
       │
       ├──►  qureka.mimiq   ──►  POST /api/quantum-jobs  ──►  QPerfect Mimiq
       │                          QuREKA gateway              (sdt.qubesim*)
       │                          (qubestack-job-engine)
       │
       ├──►  qureka.iqm     ──►  POST /api/quantum-jobs  ──►  AWS Braket
       │                                                     (IQM Garnet / Emerald)
       │
       └──►  qureka.rigetti ──►  POST /api/quantum-jobs  ──►  AWS Braket
                                                             (Rigetti Ankaa-3, ...)

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

Mimiq (qureka.mimiq)

Backend ID Provider
sdt.qubesim-mimiq QPerfect Mimiq emulator (canonical)
sdt.qubesim* Any future Mimiq profile (gateway routes by prefix)

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)

Rigetti (qureka.rigetti)

Backend ID Rigetti QPU (via AWS Braket)
rigetti.ankaa-3 Rigetti Ankaa-3 (arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3)

These match the device maps in qubestack-cudaq and the routing in qubestack-job-engine. Server-side routing happens by deviceCode prefix: ionq.* → IonQ Cloud v0.4 directly, sdt.qubesim* → Mimiq, and iqm.* / rigetti.* → AWS Braket.

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,
)

# Rigetti superconducting QPU (via AWS Braket)
dev = qml.device(
    "qureka.rigetti",
    wires=2,
    backend="rigetti.ankaa-3",
    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.rigetti="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 / Rigetti):

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.2.4

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.2.4
File Size Uploaded Provenance
qubestack_pennylane-1.2.4.tar.gz 41.7 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 73.0 kB

Release files / qubestack_pennylane-1.2.4.tar.gz

Download URL qubestack_pennylane-1.2.4.tar.gz
Size 41.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0e43547659f7e656061851ee5552f8325f163c75095d2722de2d45bc70e69acc
BLAKE2b-256 checksum
How to use checksums
30157e03285363054969a3fd3cfc83e62516058b1c50016344817574e285c666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

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

Download URL qubestack_pennylane-1.2.4-py3-none-any.whl
Size 31.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5d09eaaf6e3066f45ceadf617d5a75f9dbc35df0dc0e6170f4f353414c7a08b
BLAKE2b-256 checksum
How to use checksums
6f955987752126104e222a4b0050fe7ef7505efdab551690a860d286cb3e600d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Security for qubestack-pennylane 1.2.4

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