Metadata-Version: 2.4
Name: eleqor
Version: 0.1.8
Summary: Local experiment tracker for Qiskit quantum runs
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: certifi>=2024.0.0
Requires-Dist: qiskit>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"

# EleQor Experiments

Log every Qiskit `backend.run()` to a searchable experiment record — circuits, backends, shots, and results — with zero workflow change.

## Install

```bash
pip3 install eleqor qiskit-aer
```

### TestPyPI (before publishing to real PyPI)

```bash
python3 -m venv ~/eleqor-test
source ~/eleqor-test/bin/activate
pip3 install --no-cache-dir --upgrade \
  -i https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple \
  "eleqor==0.1.8"
pip3 show eleqor
eleqor login
```

Use a virtual environment (recommended):

```bash
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip3 install eleqor qiskit-aer
```

## Quick start

1. **Create an account** on the EleQor dashboard (Sign up with Google).
2. **Link your terminal** — one command, no setup:

```bash
eleqor login   # opens https://eleqorgroup.com/sign-in to sign in
```

For local dev against `npm run dev`:

```bash
eleqor login --url http://localhost:3000
```

3. **Run Qiskit as usual** — every `backend.run()` is logged automatically.

```python
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

backend = AerSimulator()
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

job = backend.run(qc, shots=4096)
result = job.result()   # logged automatically after eleqor login
```

4. **View runs** on the dashboard while signed in. Each run uploads to the cloud automatically after `eleqor login`.

```bash
eleqor status
eleqor sync    # backfill any runs that failed to upload
```

Runs are saved locally to `~/.eleqor/experiments.db` and synced to the dashboard. Re-run `eleqor login` if cloud sync shows `needs re-login` in `eleqor status`.

## Explicit wrapper (optional)

If you prefer not to rely on autolog, or want a named project:

```python
from eleqor import wrap_backend
from qiskit_aer import AerSimulator

backend = wrap_backend(
    AerSimulator(),
    project="my-lab",
    tags=["jupyter", "bell-state"],
)
job = backend.run(qc, shots=4096)
result = job.result()
```

## Jupyter notebooks

Use the same Python environment as your install (`pip3 install ipykernel` if needed). Run `eleqor login` in a terminal, then **restart the notebook kernel** before running cells.

## Uninstall

```bash
eleqor uninstall -y
```

Removes the CLI, autolog hook, and `~/.eleqor/` (config, auth, local database).
