Metadata-Version: 2.4
Name: westquant
Version: 0.1.0a1
Summary: WestQuant Open — Search the representation, not just the parameters
Author: WestQuant Open / David Vesterlund
License: Apache-2.0
Project-URL: Homepage, https://github.com/WestQuantOpen
Project-URL: Source, https://github.com/WestQuantOpen/westquant
Project-URL: Documentation, https://github.com/WestQuantOpen/westquant#readme
Keywords: quantum,compilation,representation,search,optimization
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: westquant-core>=0.2.0a1
Provides-Extra: qiskit
Requires-Dist: westquant-qiskit>=0.1.0a3; extra == "qiskit"
Provides-Extra: pytket
Requires-Dist: westquant-pytket>=0.1.0a1; extra == "pytket"
Provides-Extra: pennylane
Requires-Dist: westquant-pennylane>=0.1.0a1; extra == "pennylane"
Provides-Extra: pulser
Requires-Dist: westquant-pulser>=0.1.0a1; extra == "pulser"
Provides-Extra: orchestrator
Requires-Dist: westquant-orchestrator>=0.1.0a1; extra == "orchestrator"
Provides-Extra: bridges
Requires-Dist: westquant-bridges>=0.1.0a1; extra == "bridges"
Provides-Extra: all
Requires-Dist: westquant-qiskit>=0.1.0a3; extra == "all"
Requires-Dist: westquant-pytket>=0.1.0a1; extra == "all"
Requires-Dist: westquant-pennylane>=0.1.0a1; extra == "all"
Requires-Dist: westquant-pulser>=0.1.0a1; extra == "all"
Requires-Dist: westquant-orchestrator>=0.1.0a1; extra == "all"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"

# WestQuant Open

**Search the representation, not just the parameters.**

WestQuant Open is an open-source representation-search layer for quantum computing. It searches alternative compilation and representation paths across multiple software stacks, while preserving verification and full provenance.

## Quick Start

```bash
pip install westquant[qiskit]
```

Then:

```python
from westquant import optimize

result = optimize(circuit, framework="qiskit", backend=backend, budget=64)
print(result.pareto_front)
```

Or from the command line:

```bash
westquant doctor          # Check what's installed
westquant compare circuit.qasm  # Compare default vs WestQuant search
westquant plugins        # List available plugins
```

## Packages

| Package | Status | Description |
|---------|--------|-------------|
| `westquant-core` | SDK_TESTED | Core contracts, WQIR, RepGraph |
| `westquant-qiskit` | SDK_TESTED | Qiskit transpiler stage plugins |
| `westquant-pytket` | SDK_TESTED | pytket compiler pass search |
| `westquant-pennylane` | SDK_TESTED | PennyLane transform search |
| `westquant-pulser` | SDK_TESTED | Pulser neutral-atom search |
| `westquant-orchestrator` | SDK_TESTED | Cross-framework normalization |
| `westquant-bridges` | EXPERIMENTAL | Cirq/Braket/QIR/OpenQASM bridges |

## Installation

```bash
# Single framework
pip install westquant[qiskit]
pip install westquant[pytket]
pip install westquant[pennylane]
pip install westquant[pulser]

# Everything
pip install westquant[all]
```

## Compare

```bash
westquant compare circuit.qasm -f qiskit
```

Output:
```
                      2Q gates   depth    verified
Qiskit default         143       212       yes
Qiskit opt-3           128       195       yes
WestQuant search       113       179       yes

Candidates evaluated: 64
Verification: EXACT
2Q gate reduction: 20.9%
Depth reduction: 15.6%
```

## Architecture

```
WestQuant Open
├── westquant-core          # WQIR, RepGraph, search contracts
├── westquant-qiskit        # Qiskit transpiler plugins
├── westquant-pytket        # pytket pass search
├── westquant-pennylane     # PennyLane transform search
├── westquant-pulser        # Pulser neutral-atom search
├── westquant-orchestrator  # Cross-framework normalization
├── westquant-bridges       # Experimental framework bridges
└── westquant               # Umbrella package (this repo)
```

## Verification

Every transformation is independently verified:
- **EXACT**: Unitary equivalence via `Operator.equiv()`
- **UNKNOWN**: Conservative — never promoted to EXACT
- **same_problem_different_dynamics**: Pulser-specific — never collapsed with EXACT

## License

Apache-2.0
