Metadata-Version: 2.5
Name: qubestack-qiskit
Version: 1.5.0.3
Summary: QuREKA provider for Qiskit: run Qiskit circuits on quantum hardware and emulators through the QuREKA platform.
Project-URL: Homepage, https://qureka.io
Project-URL: Documentation, https://docs.qureka.io
Author: SDT Inc.
Maintainer: SDT Inc.
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development
Requires-Python: >=3.10
Requires-Dist: qiskit<2.0,>=1.0
Requires-Dist: requests>=2.31
Description-Content-Type: text/markdown

# qubestack-qiskit

QuREKA provider for [Qiskit](https://www.ibm.com/quantum/qiskit).

Run Qiskit circuits on quantum hardware and emulators through [QuREKA](https://qureka.io),
SDT's quantum cloud platform. `QurekaProvider` gives you Qiskit backends that submit your circuits
to QuREKA, which runs them on the device you choose and returns the results as regular Qiskit
results.

## Requirements

| Item | Requirement |
|------|-------------|
| Python | 3.10 – 3.12 |
| Platform | Any (pure Python) |
| Qiskit | `qiskit>=1.0,<2.0` (Qiskit 1.x) — installed automatically |
| QuREKA | An API key issued in the QuREKA console |

## Installation

```bash
pip install qubestack-qiskit
```

## Quick start

```python
from qiskit import QuantumCircuit
from qubestack_qiskit import QurekaProvider

provider = QurekaProvider(api_key="<QUREKA_API_KEY>")
backend = provider.get_backend("sdt.qubesim-mimiq")

qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])

job = backend.run(qc, shots=1000)
print(job.result().get_counts())  # {'00': ~500, '11': ~500}
```

## Devices

| Device | Provider | Type | Device code |
|--------|----------|------|-------------|
| IonQ Forte | IonQ | QPU | `ionq.forte-1` |
| IQM Garnet | IQM | QPU | `iqm.garnet` |
| IQM Emerald | IQM | QPU | `iqm.emerald` |
| QPerfect MIMIQ | QPerfect | Emulator | `sdt.qubesim-mimiq` |

Pass the device code to `provider.get_backend(...)`. The devices your workspace can use, with their
shot limits and prices, are listed in the QuREKA console under **Quantum Resources**. An unknown
device code is rejected before anything is submitted.

## Configuration

Arguments of `QurekaProvider(...)`:

| Argument | Required | Description |
|----------|----------|-------------|
| `api_key` | Yes | QuREKA API key, or set `QUREKA_API_KEY`. May be omitted inside QuREKA notebooks. |
| `base_url` | No | API endpoint. Default: `https://openapi.qureka.io`. |
| `timeout` | No | HTTP request timeout in seconds. Default: `30`. |

`backend.run(circuit, shots=...)` takes one circuit per call; `shots` defaults to `1024`.

Environment variables:

| Variable | Default | Description |
|----------|---------|-------------|
| `QUREKA_API_KEY` | — | API key used when `api_key` is not passed. |

## Using it in QuREKA notebooks

QuREKA notebooks come with this package installed. Inside a notebook, `api_key` may be omitted:
the notebook session signs the request.

## Versioning

From 1.5.0.3, the package version is the QuREKA platform release it ships with: `1.5.0.3` is
hotfix 3 of QuREKA 1.5.0. It has the same source code as `1.0.43` (QuREKA 1.5.0); only the
documentation and package metadata changed. Earlier releases were published as `1.0.<build>`:

| QuREKA release | `qubestack-qiskit` |
|----------------|--------------------|
| 1.5.0 | 1.0.43 |
| 1.4.0.1 | 1.0.40 |
| 1.4.0 | 1.0.37 |

`1.5.0.3` sorts above `1.0.43`, so `pip install -U qubestack-qiskit` moves to the new numbering.

## Links

- QuREKA: <https://qureka.io>
- Documentation: <https://docs.qureka.io>

## License

Apache License 2.0 (`Apache-2.0`). The license text is included in the package.
