Skip to main content

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 language
  • qupac/parser.py — Parser and transformer to an IR
  • qupac/transpiler.py — IR -> Python (Qiskit 2.x) code generator
  • qupac/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 0 or apply CX from 0 to 1
    • Entangle two qubits: entangle 0,1 (shorthand for apply CX from 0 to 1)
    • Put a qubit in superposition: superpose 0 (shorthand for apply H to 0)
  • 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: draw or draw mpl (text drawing is default; mpl attempts a matplotlib rendering)
  • 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

  1. Create and activate a Python 3.9+ environment.
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qupac-0.2.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qupac-0.2.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

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

Hashes for qupac-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b607bbd9d7c2d7f57a28db5770cf2e9ef5bc61cd45947ef335fc153cf7352486
MD5 5eea9d166b9e98c887bd2af182122a64
BLAKE2b-256 47fa0636b7547f88ae2e633729eddd0c35ac0325fd4feabb9ecf48517eb93c98

See more details on using hashes here.

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

Hashes for qupac-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5731e8d161faaa501178888cc2e33338f8070d70882b27525bb8965b28e14575
MD5 6fa0dde43708c1cb54bdd8e41c6e378b
BLAKE2b-256 8392d6236cb54165d3f852f3dac4d8e93d3e682f9cb9526d123a531b423929c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page