Skip to main content

Quantinuum's tool for converting HUGR to QIR

Project description

hugr-qir

build_status codecov

A tool for converting Hierarchical Unified Graph Representation (HUGR, pronounced hugger) formatted quantum programs into QIR format.

[!NOTE] Not all Guppy/HUGR programs can be converted to QIR.

Documentation

Project documentation lives in docs/ and can be viewed online here.

To build the documentation locally:

uv run --group docs sphinx-build -M html docs docs/_build

Then open docs/_build/html/index.html in a browser.

Installation

You can install from pypi via pip install hugr-qir.

Usage

Python

Use hugr_to_qir to convert a HUGR package or serialized HUGR bytes into QIR.

from hugr_qir.hugr_to_qir import hugr_to_qir
from hugr_qir.output import OutputFormat

qir = hugr_to_qir(
    hugr_package,
    validate_qir=False,
    output_format=OutputFormat.LLVM_IR,
)

By default, basic validity checks are run on the generated QIR. These can be disabled by passing validate_qir=False.

You can find an example notebook at examples/submit-guppy-h2-via-qir.ipynb showing the conversion and the submission to Quantinuum System Model H2.

CLI

You can use the available CLI after installing the python package.

This will generate qir for a given hugr file:

hugr-qir test-file.hugr

Run hugr-qir --help to see the available options.

If you want to generate a HUGR file from Guppy, you can do this in two steps:

  1. Add this to the end of your guppy file:

    if __name__ == "__main__":
        sys.stdout.buffer.write(main.compile().to_bytes())
        # Or to compile a non-main guppy function:
        sys.stdout.buffer.write(guppy_func.compile_function().to_bytes())
    
  2. Generate the hugr file with:

    python guppy_examples/general/quantum-classical-1.py > test-guppy.hugr
    

See docs/guppy-for-h-series/support-matrix.md for the current Guppylang support matrix and caveats.

Development

Setting up the development environment

The easiest way to set up the development environment is to use the provided devenv.nix file. This will set up a development shell with all the required dependencies.

To use this, you will need to install devenv. Once you have it running, open a shell with:

devenv shell

All the required dependencies should be available. You can automate loading the shell by setting up direnv.

Run tests

You can run the rust test with:

cargo test

You can run the Python test with:

uv run pytest -n auto

You can type-check the Python sources with:

uv run ty check

You can run the Python formatter and linter with:

uv run ruff format --check python guppy_examples
uv run ruff check python guppy_examples

You can run the configured Git hooks with:

uvx prek run --all-files

If you want to update the snapshots you can do that via:

uv run pytest --snapshot-update

License

This project is licensed under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

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

hugr_qir-0.0.28rc0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distributions

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

hugr_qir-0.0.28rc0-cp310-abi3-win_amd64.whl (29.5 MB view details)

Uploaded CPython 3.10+Windows x86-64

hugr_qir-0.0.28rc0-cp310-abi3-manylinux_2_34_x86_64.whl (34.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ x86-64

hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_x86_64.whl (32.5 MB view details)

Uploaded CPython 3.10+macOS 13.0+ x86-64

hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_arm64.whl (29.7 MB view details)

Uploaded CPython 3.10+macOS 13.0+ ARM64

File details

Details for the file hugr_qir-0.0.28rc0.tar.gz.

File metadata

  • Download URL: hugr_qir-0.0.28rc0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for hugr_qir-0.0.28rc0.tar.gz
Algorithm Hash digest
SHA256 5ee75f2be8af52a6be38663f64a3e84d0dd8947d8298b511c498a638fda1fdfa
MD5 21cf9fd09a8f4608c4d01d64d80095ad
BLAKE2b-256 d8df4f14e533c1e45a953a4449cfc9fd989fa07a377263e0bf2747b0a1f0ac55

See more details on using hashes here.

File details

Details for the file hugr_qir-0.0.28rc0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.0.28rc0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ada76b2dc2c60627a4881432fb76b1e8fc44dc1d385123d4261a0b39afcbfbb4
MD5 ac603b364105465911cf1bd80b150155
BLAKE2b-256 d188208431d62e5978a61df8fd4355ff07da9f20bac4d9442300da4df79bd9c7

See more details on using hashes here.

File details

Details for the file hugr_qir-0.0.28rc0-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.0.28rc0-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2ffaea8d577b3c24f4e05b104f13b6815fde3cd309fca36b6ebe900603d36dd4
MD5 27b7da12f728cf8145c8339696391586
BLAKE2b-256 fee2af61441c561516a1c23d5c9a1d787250908d7da31ee56a62d585f7e00375

See more details on using hashes here.

File details

Details for the file hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 367051f13d0e4d048deaa869074535600a080276aca4c2d479e462011216bfed
MD5 4d1be1e63fc417e3766a269e52410291
BLAKE2b-256 43a08750f1c31922b85143c166147988380af0da92d9039ca0a693eeb47b37f7

See more details on using hashes here.

File details

Details for the file hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.0.28rc0-cp310-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9a75c1e56b9e726284a82a1d75c16224bfc270be9b3af14a171989c2fe56419b
MD5 62c462a432b1c671fa5f17ae0172055a
BLAKE2b-256 553a8ff22015b467e6e4f9914cf926dba4627a6a291aa15b4d6eb8b3d1679399

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