Metadata-Version: 2.4
Name: softqcos-sdk
Version: 3.5.0
Summary: SoftQCOS™ SDK — Full-coverage Python client for the QCOS™ API Gateway
Project-URL: Homepage, https://softquantus.com
Project-URL: Documentation, https://docs.softquantus.com/sdk
Project-URL: Portal, https://platform.softquantus.com
Project-URL: License, https://softquantus.com/legal/license
Project-URL: EULA, https://softquantus.com/legal/eula
Author-email: SoftQuantus innovative OÜ <support@softquantus.com>
License: Proprietary - SoftQuantus innovative OÜ
Keywords: benchmarking,calibration,optimization,qcos,quantum,quantum-computing,sdk,softqcos
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.0.0
Provides-Extra: all
Requires-Dist: amazon-braket-sdk>=1.70.0; extra == 'all'
Requires-Dist: azure-quantum>=0.28.0; extra == 'all'
Requires-Dist: cirq>=1.3.0; extra == 'all'
Requires-Dist: pennylane>=0.34.0; extra == 'all'
Requires-Dist: qiskit-aer>=0.13.0; extra == 'all'
Requires-Dist: qiskit-ibm-runtime>=0.20.0; extra == 'all'
Requires-Dist: qiskit>=1.0.0; extra == 'all'
Provides-Extra: azure
Requires-Dist: azure-quantum>=0.28.0; extra == 'azure'
Provides-Extra: braket
Requires-Dist: amazon-braket-sdk>=1.70.0; extra == 'braket'
Provides-Extra: cirq
Requires-Dist: cirq>=1.3.0; extra == 'cirq'
Provides-Extra: cloud
Requires-Dist: amazon-braket-sdk>=1.70.0; extra == 'cloud'
Requires-Dist: azure-quantum>=0.28.0; extra == 'cloud'
Requires-Dist: qiskit-ibm-runtime>=0.20.0; extra == 'cloud'
Provides-Extra: dev
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: respx>=0.22.0; extra == 'dev'
Requires-Dist: ruff>=0.3.0; extra == 'dev'
Provides-Extra: frameworks
Requires-Dist: cirq>=1.3.0; extra == 'frameworks'
Requires-Dist: pennylane>=0.34.0; extra == 'frameworks'
Requires-Dist: qiskit>=1.0.0; extra == 'frameworks'
Provides-Extra: ibm
Requires-Dist: qiskit-ibm-runtime>=0.20.0; extra == 'ibm'
Provides-Extra: pennylane
Requires-Dist: pennylane>=0.34.0; extra == 'pennylane'
Provides-Extra: qiskit
Requires-Dist: qiskit>=1.0.0; extra == 'qiskit'
Provides-Extra: simulation
Requires-Dist: qiskit-aer>=0.13.0; extra == 'simulation'
Requires-Dist: qiskit>=1.0.0; extra == 'simulation'
Description-Content-Type: text/markdown

# SoftQCOS™ SDK v2.0

> Full-coverage Python client for the **SoftQuantus QCOS™ API Gateway** — all 293 API routes, typed, with sync & async support.

```bash
pip install softqcos-sdk
```

## Quick Start

```python
from softqcos_sdk import QCOSClient

client = QCOSClient(api_key="sk-...")

# Submit a quantum job
job = client.jobs.submit(qasm="OPENQASM 2.0; ...", shots=1024)
result = client.jobs.wait(job["job_id"])
print(result["counts"])

# Or use the blocking shortcut
result = client.execute(qasm="OPENQASM 2.0; ...", shots=1024)
```

## Product APIs

| Property            | Product                 | Prefix                    |
|---------------------|-------------------------|---------------------------|
| `client.jobs`       | QCOS Jobs™              | `/api/v2/jobs/*`          |
| `client.circuits`   | QCOS Circuits™          | `/api/v2/circuits/*`      |
| `client.bench`      | QCOS Bench™             | `/api/v2/bench/*`         |
| `client.calibration`| QCOS GlassBox™          | `/api/v2/glassbox/*`      |
| `client.billing`    | QCOS ROI Engine™        | `/api/v2/roi/*`           |
| `client.network`    | QCOS QuantumNet™        | `/api/v1/network/*`       |
| `client.qec`        | QCOS QEC Runtime™       | `/api/v1/qec/*`           |
| `client.isolation`  | QCOS ZoneGuard™         | `/api/v1/isolation/*`     |
| `client.dri`        | QCOS DRI™               | `/api/v1/dri/*`           |
| `client.ledger`     | QCOS QuantumLedger™     | `/api/v1/ledger/*`        |
| `client.navcore`    | QCOS NavCore™           | `/api/v1/*`               |
| `client.acos`       | ACOS-ISA™               | `/api/v1/acos/*`          |
| `client.macro`      | Quantum Macro™          | `/api/v1/macro/*`         |
| `client.admin`      | QCOS Admin              | `/api/admin/*`            |
| `client.evidence`   | QCOS Evidence™          | `/api/v2/evidence/*`      |
| `client.backends`   | QCOS Backends™          | `/api/v2/backends/*`      |

## Async Client

```python
from softqcos_sdk import AsyncQCOSClient

async with AsyncQCOSClient(api_key="sk-...") as client:
    result = await client.get("/api/v2/jobs")
```

## Configuration

| Environment Variable | Description                              | Default                        |
|---------------------|------------------------------------------|--------------------------------|
| `QCOS_API_KEY`      | API key (required if not passed to ctor) | —                              |
| `QCOS_API_URL`      | API gateway URL                          | `https://api.softquantus.com`  |

## Examples

```python
# Calibration
devices = client.calibration.devices()
state = client.calibration.device_state("ibm_brisbane")

# Benchmarking
report = client.bench.run(backend="aer_simulator", suite="standard")
client.bench.verify(report["benchmark_id"])

# DRI — Device Reliability Index
dri = client.dri.run(backend="ibm_brisbane")
proof = client.dri.proof_run(backend="ibm_brisbane")

# Billing & ROI
estimate = client.billing.calculate(backend="ibm_brisbane", shots=10000)
plans = client.billing.plans()

# NavCore — GNSS/PNT
nav = client.navcore.navigate(lat=48.8566, lon=2.3522)
qrng = client.navcore.qrng_bytes(num_bytes=32)
key = client.navcore.pqc_keypair(algorithm="dilithium3")

# Network — Multi-QPU
topo = client.network.topology()
result = client.network.teleport(source="qpu_a", target="qpu_b", state=[1, 0])

# Error handling
from softqcos_sdk import QCOSError, AuthenticationError, RateLimitError

try:
    result = client.jobs.submit(qasm="invalid")
except RateLimitError as e:
    print(f"Rate limited — retry after {e.retry_after}s")
except AuthenticationError:
    print("Invalid API key")
except QCOSError as e:
    print(f"API error: {e}")
```

## License

Copyright © 2024-2026 SoftQuantus innovative OÜ. All Rights Reserved.

QCOS™ is a trademark of SoftQuantus innovative OÜ.
Registry Code: 17048927 | Tallinn, Estonia

- License: https://softquantus.com/legal/license
- EULA: https://softquantus.com/legal/eula
- Portal: https://platform.softquantus.com
