https://github.com/cqcl/pytket-qir
Public repo for the pytket-qir package
https://github.com/cqcl/pytket-qir
Last synced: 9 months ago
JSON representation
Public repo for the pytket-qir package
- Host: GitHub
- URL: https://github.com/cqcl/pytket-qir
- Owner: CQCL
- License: apache-2.0
- Created: 2022-07-18T13:03:34.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-09-08T05:05:07.000Z (9 months ago)
- Last Synced: 2025-09-10T05:58:50.153Z (9 months ago)
- Language: LLVM
- Size: 1.8 MB
- Stars: 11
- Watchers: 10
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# pytket-qir -- Pytket QIR Extension
[](https://tketusers.slack.com/join/shared_invite/zt-18qmsamj9-UqQFVdkRzxnXCcKtcarLRA#)
[](https://quantumcomputing.stackexchange.com/tags/pytket)
This repository contains the pytket-qir extension, using Quantinuum's
[pytket](https://tket.quantinuum.com/api-docs/index.html) quantum SDK.
[Pytket](https://tket.quantinuum.com/api-docs/index.html) is a python module for interfacing
with tket, a quantum computing toolkit and optimising compiler developed by Quantinuum.
`pytket-qir` is an extension to `pytket` that allows `pytket` circuits to
be converted to qir.
Some useful links:
- [API Documentation](https://tket.quantinuum.com/extensions/pytket-qir/)
## Getting started
`pytket-qir` is available for Python 3.10, 3.11, 3.12 and 3.13, on Linux, MacOS
and Windows. To install, run:
```shell
pip install pytket-qir
```
This will install `pytket` if it isn't already installed, and add new classes
and methods into the `pytket.extensions` namespace.
## Bugs, support and feature requests
Please file bugs and feature requests on the Github
[issue tracker](https://github.com/CQCL/pytket-qir/issues).
There is also a Slack channel for discussion and support. Click [here](https://tketusers.slack.com/join/shared_invite/zt-18qmsamj9-UqQFVdkRzxnXCcKtcarLRA#/shared-invite/email) to join.
## Development
First setup your virtual environment (or ignore if you already have it):
```sh
python -m venv .venv
source .venv/bin/activate
```
Then install required dependencies:
```sh
pip install -U pip setuptools
pip install build pre-commit pytest wheel mypy~=1.4 black~=23.7 pylint~=2.17 ruff==0.0.282
pre-commit install
```
Then install this extension in editable mode, simply change to this directory, and run:
```shell
pip install -e .
```
You could also use `make` targets such as:
```sh
make install # for installation
make dev # for editable install
make lint # run linters and formatters
make tests # for running tests
make build # for source and wheel distribution packages
make clean # to clean up autogenerated files
```
## Contributing
Pull requests are welcome. To make a PR, first fork the repo, make your proposed
changes on the `main` branch, and open a PR from your fork. If it passes
tests and is accepted after review, it will be merged in.
### Code style
#### Formatting
All code should be formatted using
[ruff](https://docs.astral.sh/ruff/formatter/), with default options. This is
checked on the CI.
#### Type annotation
On the CI, [mypy](https://mypy.readthedocs.io/en/stable/) is used as a static
type checker and all submissions must pass its checks. You should therefore run
`mypy` locally on any changed files before submitting a PR. Because of the way
extension modules embed themselves into the `pytket` namespace this is a little
complicated, but it should be sufficient to run the script `./mypy-check`
(passing as a single argument the root directory of the module to test).
#### Linting
We use [ruff](https://github.com/astral-sh/ruff) on the CI to check compliance with a set of style requirements (listed in `ruff.toml`).
You should run `ruff` over any changed files before submitting a PR, to catch any issues.
An easy way to meet all formatting and linting requirements is to issue `pre-commit run --all-files`
or `make lint` before sending a PR.
### Tests
To run the tests:
1. `cd` into the `tests` directory;
2. ensure you have installed `pytest`, `hypothesis`, and any modules listed in
the `test-requirements.txt` file (all via `pip`);
3. run `pytest`.
When adding a new feature, please add a test for it. When fixing a bug, please
add a test that demonstrates the fix.