Metadata-Version: 2.4
Name: qiskit-pauli
Version: 0.1.2
Summary: Qiskit provider for the Pauli quantum compute gateway (pauli.xyz)
License-Expression: Apache-2.0
License-File: LICENSE
Requires-Dist: pauli-sdk>=0.1.0
Requires-Dist: qiskit>=1.0,<3
Requires-Python: >=3.10
Project-URL: Homepage, https://pauli.xyz
Project-URL: Documentation, https://pauli.xyz/docs
Description-Content-Type: text/markdown

# qiskit-pauli

Qiskit provider for [Pauli](https://pauli.xyz), the API gateway for quantum
compute. Every device in Pauli's live registry is a `BackendV2`; one key
reaches the whole fleet.

```sh
pip install qiskit-pauli
```

```python
from qiskit import QuantumCircuit
from qiskit_pauli import PauliProvider

backend = PauliProvider().least_busy()   # PAULI_API_KEY from the environment
qc = QuantumCircuit(2, 2)
qc.h(0); qc.cx(0, 1); qc.measure([0, 1], [0, 1])
counts = backend.run(qc, shots=1000).result().get_counts()
```

- **No pass managers required.** Pauli transpiles per device server-side;
  `transpile(qc, backend)` against the backend's Target works but is
  optional. The Target is built best-effort from the live registry row
  (native gates, coupling map) — the server's transpilation is
  authoritative.
- **Counts arrive in Qiskit's convention.** Pauli serves one canonical bit
  ordering (`cbit0_left`) on every device; this provider flips keys at the
  boundary (per register, registers space-separated in reverse declaration
  order), verified against the gateway's own endianness canaries.
- **Runs are pinned.** `backend.run` targets exactly this device with
  fallback disabled — the device you chose is the device that runs. Policy
  routing (cheapest / fastest / highest_fidelity / balanced), fleet-wide
  estimates, and dry runs live in the core SDK: `provider.client` is a full
  [`pauli-sdk`](https://pypi.org/project/pauli-sdk/) client.
- **Money stays exact and typed.** `backend.run(..., max_spend_usd="1.50")`
  takes strings or `Decimal` (float raises); an underfunded wallet raises
  `pauli_sdk.InsufficientCreditsError` carrying the machine-actionable
  payment challenge. Each member of `job.sdk_jobs` has the routing decision
  and the exact quote from the 202, and the results' billing block after
  completion.
- **List runs** submit one Pauli job per circuit under a composite handle;
  `result()` returns one `Result` with an experiment per circuit.

Get a key at [pauli.xyz](https://pauli.xyz); docs at
[pauli.xyz/docs](https://pauli.xyz/docs). This package deliberately pins
only `qiskit>=1.0,<3` and rides on `pauli-sdk` for everything below the
Qiskit surface.

License: Apache-2.0 (see LICENSE) — it covers this provider library; the
Pauli service and the "Pauli" marks are not licensed by it.
