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.0rc1.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.2.0rc1-cp310-abi3-win_amd64.whl (24.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

hugr_qir-0.2.0rc1-cp310-abi3-manylinux_2_34_x86_64.whl (34.3 MB view details)

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

hugr_qir-0.2.0rc1-cp310-abi3-macosx_13_0_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.10+macOS 13.0+ x86-64

hugr_qir-0.2.0rc1-cp310-abi3-macosx_13_0_arm64.whl (24.4 MB view details)

Uploaded CPython 3.10+macOS 13.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for hugr_qir-0.2.0rc1.tar.gz
Algorithm Hash digest
SHA256 3a490c2be74420fbb90e3543dda422af9b541198c812b6e57c5adbc12d97d8e8
MD5 64842abe8c89225da17b94f20799b6c6
BLAKE2b-256 da13196f36c7d8949bd079d6e66b403ecc2cf506fb917f000a25baa802df2933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 964235a2c5b34e526766c3a8a784c4a6db25e178dd6541af9bae4a033214e87c
MD5 ce1181b91290861013873726c6f887ce
BLAKE2b-256 508b77079903f7a4bd34a6438d9c9984ceefc04413a196871dadd3afb077d6ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc1-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b763f47ed73a5f97e4aeb09b7b4da0d86f40e3c8e67b0808be86095760743ed9
MD5 49e1c6d58a75d7901a4f57325a2ccb04
BLAKE2b-256 612d992cb1e6cccb7103e22eb6ce0e133e4e102f0abfa124177cbde4ad4bbca0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc1-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4dbe2f68e38d128d694d470f1c77660ccd2c37a86946a840a51587be4d9d1912
MD5 a75f4e9ccba11ec079b1aedffa7de160
BLAKE2b-256 6e523e73044aed698563bb62bf21e1c8f4b572edd7c592cb28c8efeb25d82fbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hugr_qir-0.2.0rc1-cp310-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 203f80d215f445cda46567fde324f8b16fa10f6d0e95da93ff8b8ecf48ad20e1
MD5 e20423579ee53cecb2fe2cc7d5888a27
BLAKE2b-256 fff1b2f2e4708322879f6ebb93d830cd477fb42ef2adb5849c48d3537cf4e1f5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0rc1 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