Metadata-Version: 2.4
Name: arvak-lite
Version: 0.1.1
Summary: Lightweight quantum circuit compiler. Drop-in replacement for Qiskit transpile, Cirq optimize, and more. Powered by Arvak.
Project-URL: Homepage, https://arvak.io
Project-URL: Repository, https://github.com/hiq-lab/arvak-lite
Author-email: The HAL Contract <hello@hal-contract.org>
License: LGPL-3.0-or-later
License-File: LICENSE
Keywords: circuit,cirq,compiler,pulser,qiskit,quantum,transpiler
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Requires-Dist: arvak>=1.9.3
Provides-Extra: all
Requires-Dist: cirq>=1.0.0; extra == 'all'
Requires-Dist: pennylane>=0.32.0; extra == 'all'
Requires-Dist: pulser-core>=1.0.0; extra == 'all'
Requires-Dist: qbraid>=0.8.0; extra == 'all'
Requires-Dist: qiskit-qasm3-import>=0.5.0; extra == 'all'
Requires-Dist: qiskit>=1.0.0; extra == 'all'
Requires-Dist: qrisp>=0.4.0; extra == 'all'
Provides-Extra: cirq
Requires-Dist: cirq>=1.0.0; extra == 'cirq'
Provides-Extra: dev
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Provides-Extra: pennylane
Requires-Dist: pennylane>=0.32.0; extra == 'pennylane'
Provides-Extra: pulser
Requires-Dist: pulser-core>=1.0.0; extra == 'pulser'
Provides-Extra: qbraid
Requires-Dist: qbraid>=0.8.0; extra == 'qbraid'
Provides-Extra: qiskit
Requires-Dist: qiskit-qasm3-import>=0.5.0; extra == 'qiskit'
Requires-Dist: qiskit>=1.0.0; extra == 'qiskit'
Provides-Extra: qrisp
Requires-Dist: qrisp>=0.4.0; extra == 'qrisp'
Description-Content-Type: text/markdown

# arvak-lite

Lightweight quantum circuit compiler wrapping [Arvak](https://arvak.io).
Takes circuits from any major framework, compiles them, and returns the same type.

```python
from arvak_lite import transpile

compiled = transpile(circuit)
```

Also registers as a [Qiskit transpiler plugin](https://docs.quantum.ibm.com/guides/transpiler-plugins):

```python
from qiskit.compiler import transpile

compiled = transpile(circuit, optimization_method="arvak")
```

## Installation

```bash
pip install arvak-lite
```

With framework extras:

```bash
pip install arvak-lite[qiskit]      # Qiskit + transpiler plugin
pip install arvak-lite[cirq]        # Cirq
pip install arvak-lite[pennylane]   # PennyLane
pip install arvak-lite[pulser]      # Pulser (Pasqal)
pip install arvak-lite[qrisp]       # Qrisp
pip install arvak-lite[qbraid]      # qBraid multi-backend
pip install arvak-lite[all]         # Everything
```

## Usage

### Any framework

```python
from arvak_lite import transpile

compiled = transpile(circuit)  # Qiskit in → Qiskit out, Cirq in → Cirq out, etc.
```

### Qiskit transpiler plugin

Once installed, `arvak` is available as a named plugin in Qiskit's `transpile()`:

```python
from qiskit.compiler import transpile

# Use Arvak for optimization
compiled = transpile(circuit, optimization_method="arvak")

# Use Arvak for routing
compiled = transpile(circuit, coupling_map=coupling, routing_method="arvak")

# Or via pass manager
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
pm = generate_preset_pass_manager(optimization_level=3, optimization_method="arvak")
compiled = pm.run(circuit)
```

### With metrics

```python
compiled, metrics = transpile(circuit, return_metrics=True)
print(f"{metrics['time_ms']:.2f}ms, {metrics['gate_count']} gates")
```

## Parameters

```python
transpile(
    circuit,                          # Any supported circuit type
    optimization_level=3,             # 0=parse, 1=basic, 2=standard, 3=aggressive
    coupling_map=[[0,1], [1,2]],      # Device connectivity (None = all-to-all)
    basis_gates=["cx", "rz", "sx"],   # Target gate set
    return_metrics=True,              # Return (circuit, metrics) tuple
)
```

## Supported frameworks

| Framework | Type | Round-trip |
|---|---|---|
| Qiskit | `QuantumCircuit` | Yes |
| Cirq | `cirq.Circuit` | Yes |
| PennyLane | QNode / tape | Yes |
| Pulser | `Sequence` (digital) | QASM output |
| Qrisp | `QuantumCircuit` / `QuantumSession` | Yes |
| OpenQASM | `str` (2.0 / 3.0) | Yes |
| Arvak | `arvak.Circuit` | Yes |

## How it works

arvak-lite is a thin Python wrapper (~12 KB). The actual compilation happens in
[Arvak](https://github.com/hiq-lab/arvak), a Rust-native compiler exposed via
PyO3. The full compiler fits in a ~600 KB wheel — no LLVM, no JVM, no heavy
runtime. The speed comes from Rust, not from skipping optimization passes.

1. Detect the input framework from the circuit's type
2. Convert to `arvak.Circuit`
3. Compile in Rust (gate decomposition, routing, optimization)
4. Convert back to the original framework type

## License

LGPL-3.0-or-later. See [LICENSE](LICENSE).
