Qupac (Quantum Python Abstraction Compiler): lightweight language for quantum circuits transpiled to Qiskit 2.x
Project description
Qupac (Quantum Python Abstraction Compiler)
A lightweight language to design quantum circuits and transpile them to Python code using Qiskit 2.x. Write simple gate instructions; Qupac parses, transpiles, and can run the generated Python for simulation.
Highlights
- Minimal syntax for qubit/classical declarations, gate application, measurement, and simulate.
- CLI runs generated Python in the background by default on Windows.
- Optionally emit the generated Python without running it.
Project layout
qupac/grammar.lark— Lark grammar for the languagequpac/parser.py— Parser and transformer to an IRqupac/transpiler.py— IR -> Python (Qiskit 2.x) code generatorqupac/executor.py— Runs generated Python (bg/fg)qupac/cli.py— CLI entrypoint (background by default)
Language quick reference
- Use statement:
use qiskit - Qubits:
qubits: <int> - Classical bits (optional):
classical: <int> - Apply gate:
apply H to 0orapply CX from 0 to 1- Entangle two qubits:
entangle 0,1(shorthand forapply CX from 0 to 1) - Put a qubit in superposition:
superpose 0(shorthand forapply H to 0)
- Entangle two qubits:
- Measure all:
measure all - Measure one:
measure 0 -> 0 - Execute:
simulate- Shots (number of measurement samples):
shots: 1024(default 1024 if not provided) - Optimization level for transpile:
optimize: 0|1|2|3(maps to Qiskit's optimization_level) - Draw the generated circuit:
drawordraw mpl(text drawing is default;mplattempts a matplotlib rendering)
- Shots (number of measurement samples):
- Simulator backend method:
simulator: default|statevector|unitary - Simple noise model (depolarizing):
noise depol p=0.01(requires qiskit-aer noise modules) - Comments: lines starting with
#or//
Examples
Basic:
use qiskit
qubits: 2
entangle 0,1
measure all
simulate
Superpose:
use qiskit
qubits: 1
superpose 0
measure all
simulate
Draw and simulation options:
use qiskit
qubits: 2
entangle 0,1
draw
shots: 2048
optimize: 1
simulate
Parameterized gates and statevector:
use qiskit
qubits: 1
apply RY(1.5708) to 0
draw
simulator: statevector
shots: 1
simulate
Noise (depolarizing):
use qiskit
qubits: 2
entangle 0,1
noise depol p=0.02
shots: 2048
simulate
Setup
- Create and activate a Python 3.9+ environment.
- Install dependencies (Qiskit is large; installing only Lark lets you test parsing/transpiling):
- Minimal (parser/transpiler only): pip install lark
- Full (to actually run/simulate): pip install -r requirements.txt
Developer setup (lint, type-check, tests)
-
Using pip extras: pip install -e .[dev]
-
Or individually: pip install ruff mypy pytest
-
Lint (Ruff): ruff check .
-
Type check (mypy): mypy qupac
-
Run tests (pytest): pytest -q
How to run
- Emit generated Python (no Qiskit needed): python -m qupac.cli --emit examples/main.qu
- Run generated Python in the background (requires Qiskit installed): python -m qupac.cli examples/main.qu
- Run in foreground/blocking (requires Qiskit installed): python -m qupac.cli --fg examples/main.qu
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qupac-0.2.0.tar.gz.
File metadata
- Download URL: qupac-0.2.0.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b607bbd9d7c2d7f57a28db5770cf2e9ef5bc61cd45947ef335fc153cf7352486
|
|
| MD5 |
5eea9d166b9e98c887bd2af182122a64
|
|
| BLAKE2b-256 |
47fa0636b7547f88ae2e633729eddd0c35ac0325fd4feabb9ecf48517eb93c98
|
File details
Details for the file qupac-0.2.0-py3-none-any.whl.
File metadata
- Download URL: qupac-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5731e8d161faaa501178888cc2e33338f8070d70882b27525bb8965b28e14575
|
|
| MD5 |
6fa0dde43708c1cb54bdd8e41c6e378b
|
|
| BLAKE2b-256 |
8392d6236cb54165d3f852f3dac4d8e93d3e682f9cb9526d123a531b423929c6
|