Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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).

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.2.0rc2.tar.gz (1.3 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.2.0rc2-cp310-abi3-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.10+Windows x86-64

hugr_qir-0.2.0rc2-cp310-abi3-manylinux_2_34_x86_64.whl (34.8 MB view details)

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

hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_x86_64.whl (26.2 MB view details)

Uploaded CPython 3.10+macOS 13.0+ x86-64

hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_arm64.whl (24.7 MB view details)

Uploaded CPython 3.10+macOS 13.0+ ARM64

File details

Details for the file hugr_qir-0.2.0rc2.tar.gz.

File metadata

  • Download URL: hugr_qir-0.2.0rc2.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for hugr_qir-0.2.0rc2.tar.gz
Algorithm Hash digest
SHA256 42142e7fe8b59f97ede18d81823d839f931e384b2152f07dba89bd48fd20ac39
MD5 06b7eae6478ee70ab87e113093613963
BLAKE2b-256 a1fe27860b2303774b0dd04eb3ab7cfb9d5d0e285fd43a5b05363e22f6d73be2

See more details on using hashes here.

File details

Details for the file hugr_qir-0.2.0rc2-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7f7389bbddbeffa29c846af905bce00c1cc61d46321e61a2f1b3590d42ed548d
MD5 838b8b929ab088d1f2ebb36b8f70bdd7
BLAKE2b-256 a6b331f5df3a2b112e82c5214740a7e1b922fb79a7fb14fcd8e2452179409fb9

See more details on using hashes here.

File details

Details for the file hugr_qir-0.2.0rc2-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc2-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0166a7d12712a2954c55ebe7c63978a1295208c0ddfb436778bbd444708b7d13
MD5 8d95ca56f3e5a4ceb3d59cef17da30cb
BLAKE2b-256 346aa54259deaa13fcd2028f8139dc090cffc362206e3eb5ccf47ae88141f66f

See more details on using hashes here.

File details

Details for the file hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a8336c1056a8536808895b2961d74ce38e82171030bc01457df057e3ce4ebec9
MD5 76110ee1642b1f15bd8d907c60b07944
BLAKE2b-256 6f15af091d81e78b89e20a7f180138be2f053d4836cb3da699023afd8dc0d00a

See more details on using hashes here.

File details

Details for the file hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc2-cp310-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a53f2ddc849e741040585936b51f35b772061e4e11e27bccfcbb9b3a762aab0f
MD5 c72f57f71ca636e6a57844a1d474c070
BLAKE2b-256 25f639c6e4799f3ca6070cbb093d56f2d206203b7d7d3527abe0724f2fa4ce60

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0rc2 This release

5 files

0.1.2

5 files

0.1.1

5 files

0.1.0

5 files

0.0.27

5 files

0.0.26

5 files

0.0.25

5 files

0.0.24

5 files

0.0.22

5 files

0.0.20

5 files

0.0.19

5 files

0.0.18

5 files

0.0.17

5 files

0.0.16

5 files

0.0.14

5 files

0.0.13

5 files

0.0.12

5 files

0.0.11

5 files

0.0.10

5 files

0.0.9

5 files

0.0.8

5 files

0.0.7

5 files

0.0.6

5 files

0.0.5

5 files

0.0.4

5 files

0.0.3

5 files

0.0.2

5 files

0.0.1

2 files

Supported by

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