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.1.0.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.1.0-cp310-abi3-win_amd64.whl (29.5 MB view details)

Uploaded CPython 3.10+Windows x86-64

hugr_qir-0.1.0-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.1.0-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.1.0-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.1.0.tar.gz.

File metadata

  • Download URL: hugr_qir-0.1.0.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.1.0.tar.gz
Algorithm Hash digest
SHA256 83a6bd5fbfdb9cdef4594ee39dbc0f906a6cc0923d8a1ede6f96be0af006f801
MD5 6f8ef53be523c1745b93ba1549506d2f
BLAKE2b-256 fdf291c5e8ebd318ace69b4770c1468b6d9096564af9aeee3aa78bd577472b14

See more details on using hashes here.

File details

Details for the file hugr_qir-0.1.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: hugr_qir-0.1.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 29.5 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for hugr_qir-0.1.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 78f43bf22853dab8060e5e08a9b280d048825588fa022b175210036dfbc52b57
MD5 e19f3dc746da78e1edcb852ec14493bf
BLAKE2b-256 7a8e5454b20e8e26449ff50723e1f7067cb2ab1350c0120c26b9230725192437

See more details on using hashes here.

File details

Details for the file hugr_qir-0.1.0-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.1.0-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 846824cc95b9ac28f1cb3acad1ed0ac2ecf508b4d545cf99faa30393f02fd2f6
MD5 1a700c5f06db5169b4997ec27ec05dfe
BLAKE2b-256 03645f6d22e3fc37585d02038a7cffd3d486920d1bd47102a4bda5f5ba946510

See more details on using hashes here.

File details

Details for the file hugr_qir-0.1.0-cp310-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.1.0-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3b84d9b36c53035ea4d9c5a90227a39f8daa7b30e42e406676292e50c5605852
MD5 a034f6ac419d2883c110769d90b281cc
BLAKE2b-256 f24569c37153dbb729f1db2bc3e3d660f1d7dbd1f1d72e2f6be588590f774a32

See more details on using hashes here.

File details

Details for the file hugr_qir-0.1.0-cp310-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.1.0-cp310-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3a3d8263a3eed52b2e2c8c65aa8d94da6130beddae1dd0d91071a0dca7e961b5
MD5 4451127afab3a44a123c621373706171
BLAKE2b-256 c304a700e12dac68bb857f004e26e15cbdb9986ecb8cd507e0918c0052743546

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