Python wrapper around mbqc_scheduling crate
This package provides an interface to the the mbqc_scheduling crate. It is usually used
together with the Pauli tracker package.
Documentation
To the docs
Since this here is mainly a wrapper, we did not document everything extensively, but
rather refer to the documentation of the underlying Rust crates, for now.
Examples
See examples/simple.py for a very basic example. examples/compile_flow.py is a
specific example describing how the Pauli tracking and the scheduling can be used when
combining/stitching graphs that, for example, represent parts of a larger circuit (it's a
specific example for the project for which this library was initially developed).
Installation
You can install the package from PyPI, e.g., with
pip install mbqc-scheduling
The package contains pre-built wheels for manylinux_2_28_x86_64 (works on most Linux
distribuitions), latest Windows and latest MacOS (latest with respect to when the package
was built) for Python 3.8 to 3.12. Additionally, there is an manylinux_2_28_x86_64
abi3 wheel for Python >= 3.8. You can also build the package from source, e.g., force it
during a pip install with pip install --no-binary mbqc-scheduling mbqc-scheduling
,
however, note that this requires Python >= 3.8 and a Rust toolchain >= 1.65.
At the moment, you may also find a more up-to-date wheel in the artifacts of the latest
"pypackage" github actions workflow; this is unstable though.
Manually Building
The package has to be build with maturin. The make package
commands builds it through
a docker container such that it is compatible with manylinux_2_28_x86_64 for Python >=
3.8. With make update_docs
the documentation can be build. The output of both make
commands is in the dist
directory.
Versioning
The Python package follows SemVer, however, the underlying Rust crate is unstable.