Skip to main content

MWPF

Hypergraph Minimum-Weight Parity Factor Decoder for QEC

Unitary Fund

The paper is available at https://arxiv.org/abs/2508.04969.

We also provide a web page that allows people to play with some QEC codes, noise models and their decoding processes. Check it out here (https://mwpf.dev).

Hypergraph MWPF is proven to be NP-hard [1]. Our design is taking advantage of clustering technique to lower the average time complexity and reach almost-linear average time complexity at small physical error rate. Please wait for our paper for more discussion of the speed v.s. accuracy.

Color Code Example (click for YouTube video)

Installation

pip install -U mwpf_rational

Python 3.9 and newer are supported, including free-threaded Python 3.14 and 3.15+.

MWPF now supports stim simulation. You may experience high logical error rate due to some adaptor bugs prior to sinter version 1.15, so instead of using the mw_parity_factor decoder in sinter, you may want to manually import the latest MWPF decoder from the mwpf>=0.2.8 package.

pip install -U 'mwpf_rational[stim]'
from mwpf_rational import SinterMWPFRationalDecoder

sinter.collect(
    tasks = ...,
    num_workers = 1,
    decoders = ["mwpf_rational"],
    custom_decoders = { "mwpf_rational": SinterMWPFRationalDecoder(cluster_node_limit=50) },
)

# MWPF decoder now supports heralded error decoding in stim circuit!
#   Since the sinter.Decoder interface only gives a DEM (Detector Error Model), which doesn't include heralded error
#   information, you need to manually provide the circuit when constructing the decoder, like below
custom_decoders = { "mwpf_rational": SinterMWPFRationalDecoder(cluster_node_limit=50).with_circuit(circuit) }

Background

The Most-Likely Error (MLE) decoding problem can be formulated as a MWPF problem.

Naming

We named it Minimum-Weight Parity Factor because of a concept called "parity $(g,f)$-factor" in Lovász's 1972 paper [2]. In the context of QEC, the functions $g(v)$ and $f(v)$ associates with the measured syndrome as shown above. Without ambiguity, we just call it "parity factor".

Relationship with MWPM decoder

Minimum-Weight Perfect Matching decoder is the traditional decoder for QEC. When the decoding graph is a simple graph, the MLE decoding problem can be reduced to an MWPM problem on a generated complete graph with $O(|V|^2)$ edges. Two recent works [2] and [3] improves the average time complexity to almost theoretical upper bound of $O(|V|)$ by not explicitly generating the complete graph. This motivates our idea to design an algorithm directly on the model graph, hoping to reach the same $O(|V|)$ average time complexity even if the model graph is hypergraph.

Key Idea

We try to extend the blossom algorithm that solves the MWPM problem on simple graphs. An interesting attribute of the blossom algorithm is that it deals with an exponential number of linear constraints in order to relax the integer constraints. The added linear constraints, which we refer to as "blossom constraints", are based on a very simple idea: filtering out invalid solutions. The blossom constraints simply say "any odd cluster cannot be perfectly matched internally", which is obviously true. However, this "filtering" requires an exponential number of linear constraints [5], which is impossible to generate efficiently. Thus, the algorithm must implicitly consider those exponential number of constraints without ever listing them. In fact, the blossom algorithm only keeps track of $O(|V|)$ such constraints from the exponentially many. Surprisingly, this works! Inspired by this miracle, we now have the courage to use an exponential number of linear constraints to solve MWPF.

Rigorous Math

The ILP problem above is very similar to that of the blossom algorithm, except for the more complex "blossom"definition: it's now a subgraph $S=(V_S, E_S), V_S \subseteq V, E_S \subseteq E$ instead of just a subset of vertices $S\subseteq V$ in the blossom algorithm. We have mathematically proved the equivalence between hypergraph MWPF and this ILP. In the next step, we simply relax the integer constraints.

Clearly, as a relaxation, the minimum objective value is no larger than that of the ILP. Unfortunately, we haven't been able to rigorously prove that they have the same optimal objective value, nor can we find a counter example. We leave this conjecture as is for now, and do not assume its correctness.

Conjecture: $\min\text{ILP}=\min\text{LP}$.

The dual problem is a transpose of the primal LP problem. According to the duality theorem, they have the same optimal value. The key is that each primal constraint becomes a dual variable, and each primal variable becomes a dual constraint. Clearly, for the dual problem, $y_S = 0, \forall S \in \mathcal{O}$ is a solution (despite usually not the optimal solution). In this way, we can keep track of only non-zero dual variables to implicitly considering all the exponentially many primal constraints. Since the dual LP problem becomes a maximization problem, we have the whole inequality chain as below.

If we can find a pair of feasible primal and dual solutions with the same weight, then this inequality chain collapses to an equality chain and the primal solution is proven to be optimal. Even if they are not equal, we still get a proximity bound.

In fact, MWPM decoder using the blossom algorithm fits in this framework, where the alternating tree operation guarantees that in the end the primal must be equal to the dual. Union-Find decoder and hypergraph UF decoder can also be explained by this framework, but the proximity bound is usually not singleton.

Usage

The decoding process is two steps (shown in Background)

  1. offline: construct the model graph given the QEC code and the noise model
  2. online: compute the most-likely error $\mathcal{E}\subseteq E$ given the syndrome (represented by the defect vertices $D \subseteq V$) and some dynamic weights
from mwpf_rational import HyperEdge, SolverInitializer, SolverSerialJointSingleHair, SyndromePattern

# Offline
vertex_num = 4
weighted_edges = [
    HyperEdge([0, 1], 100),  # [vertices], weight
    HyperEdge([1, 2], 100),
    HyperEdge([2, 3], 100),
    HyperEdge([0], 100),  # boundary vertex
    HyperEdge([0, 1, 2], 60),  # hyperedge
]
initializer = SolverInitializer(vertex_num, weighted_edges)
hyperion = SolverSerialJointSingleHair(initializer)

# Online
syndrome = [0, 1, 3]
hyperion.solve(SyndromePattern(syndrome))
hyperion_subgraph = hyperion.subgraph()
print(hyperion_subgraph)  # out: [3, 5], weighted 160
_, bound = hyperion.subgraph_range()
print((bound.lower, bound.upper))  # out: (Fraction(160, 1), Fraction(160, 1))

The example hyergraph is below: grey edges are weighted 100 and the purple hyperedge is weighted 60.

In constrast, if we were to solve MWPF with MWPM decoder, then we have to ignore the hyperedge $e_4$ and thus leads to suboptimal result, as shown by the following Python script using the Fusion Blossom library.

from fusion_blossom import SolverInitializer, SolverSerial, SyndromePattern

# Offline
vertex_num = 5
weighted_edges = [(0, 4, 100), (0, 1, 100), (1, 2, 100), (2, 3, 100)]
virtual_vertices = [4]
initializer = SolverInitializer(vertex_num, weighted_edges, virtual_vertices)
fusion = SolverSerial(initializer)

# Online
syndrome = [0, 1, 3]
fusion.solve(SyndromePattern(syndrome))
fusion_subgraph = fusion.subgraph()
print(fusion_subgraph)  # out: [0, 2, 3], which is weighted 300 instead of 160

Advanced Usage

When trading off accuracy and decoding time, we provide a timeout parameter for the decoder. Also, one can specify whether you want the clusters to all grow together or grow one by one. More parameters are coming as we develop the library.

config = {
    "cluster_node_limit":  50,  # how many dual variables are allowed in each cluster before falling back to UF decoder,
                                # by default infinite but setting it to 50 works for circuit-level surface code d=7
                                # for millisecond decoding. I would recommend use this option alone (without timeout) to
                                # tune between decoding speed and accuracy.
    "timeout": 3.0,  # 3 second timeout for each cluster, by default infinite (preferred)
}
hyperion = SolverSerialJointSingleHair(initializer, config)

An embedded visualization tool is coming soon.

Examples

For surface code with depolarizing noise mode $p_x =p_y=p_z = p/3$, here shows physical error rates 1%, 2% and 4% (left to right).

Surface Code Example (click for YouTube video)

For triangle color code with X errors, here shows physical error rates 1%, 2% and 4% (left to right).

Triangle Color Code Example (click for YouTube video)

For circuit-level surface code, here shows physical error rate 0.03%, 0.1% and 0.3% (left to right).

Circuit-level Surface Code Example (click for YouTube video)

Reference

[1] Berlekamp, Elwyn, Robert McEliece, and Henk Van Tilborg. "On the inherent intractability of certain coding problems (corresp.)." IEEE Transactions on Information Theory 24.3 (1978): 384-386.

[2] Lovász, László. "The factorization of graphs. II." Acta Mathematica Academiae Scientiarum Hungarica 23 (1972): 223-246.

[3] Higgott, Oscar, and Craig Gidney. "Sparse Blossom: correcting a million errors per core second with minimum-weight matching." arXiv preprint arXiv:2303.15933 (2023).

[4] Wu, Yue, and Lin Zhong. "Fusion Blossom: Fast MWPM Decoders for QEC." arXiv preprint arXiv:2305.08307 (2023).

[5] Rothvoß, Thomas. "The matching polytope has exponential extension complexity." Journal of the ACM (JACM) 64.6 (2017): 1-19.

Metadata

Release files for mwpf-rational 0.2.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mwpf-rational 0.2.17
File Size Uploaded Provenance Actions
mwpf_rational-0.2.17.tar.gz 594.9 kB With provenance Details for mwpf_rational-0.2.17.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for mwpf-rational 0.2.17
File Actions
mwpf_rational-0.2.17-cp315-abi3.abi3t-win_arm64.whl CPython 3.15 abi3t, abi3 Windows ARM64 Details for mwpf_rational-0.2.17-cp315-abi3.abi3t-win_arm64.whl
mwpf_rational-0.2.17-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3t, abi3 Windows x86-64 Details for mwpf_rational-0.2.17-cp315-abi3.abi3t-win_amd64.whl
mwpf_rational-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl CPython 3.15 abi3, abi3t Linux musl 1.2+ x86-64 Details for mwpf_rational-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl CPython 3.15 abi3, abi3t Linux glibc 2.28+ x86-64 Details for mwpf_rational-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
mwpf_rational-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl CPython 3.15 abi3, abi3t macOS 10.15+ universal2 (ARM64, x86-64) Details for mwpf_rational-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl
mwpf_rational-0.2.17-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details for mwpf_rational-0.2.17-cp314-cp314t-win_arm64.whl
mwpf_rational-0.2.17-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details for mwpf_rational-0.2.17-cp314-cp314t-win_amd64.whl
mwpf_rational-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details for mwpf_rational-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details for mwpf_rational-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl
mwpf_rational-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64) Details for mwpf_rational-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl
mwpf_rational-0.2.17-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details for mwpf_rational-0.2.17-cp39-abi3-win_arm64.whl
mwpf_rational-0.2.17-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for mwpf_rational-0.2.17-cp39-abi3-win_amd64.whl
mwpf_rational-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details for mwpf_rational-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details for mwpf_rational-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mwpf_rational-0.2.17-cp39-abi3-macosx_10_12_universal2.whl CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) Details for mwpf_rational-0.2.17-cp39-abi3-macosx_10_12_universal2.whl

Total release size: 262.5 MB

Release files / mwpf_rational-0.2.17.tar.gz

Download URL mwpf_rational-0.2.17.tar.gz
Size 594.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4dc9990d8f43218b7678a10f2843beac69efc421511d8f31054eaf0e86f802c0
BLAKE2b-256 checksum
How to use checksums
5b55a0335d02e98702e8ee8e91218ae040010debed00a5bb90fdbd2dc9c75dcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp315-abi3.abi3t-win_arm64.whl

Download URL mwpf_rational-0.2.17-cp315-abi3.abi3t-win_arm64.whl
Size 2.4 MB
Tags CPython 3.15 Windows ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
f085e953814f0fc3aaab3835b23c17ca862ab74496f824294ad37695c1b33c69
BLAKE2b-256 checksum
How to use checksums
0839e049ebadcfbf63490158fce531a7c8eb42e2dbed0ab854844c0472f87b12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp315-abi3.abi3t-win_amd64.whl

Download URL mwpf_rational-0.2.17-cp315-abi3.abi3t-win_amd64.whl
Size 2.5 MB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
8f1b071ce57970da0ac2379fbee7e336d399274dd997aa41a52596572e2fb775
BLAKE2b-256 checksum
How to use checksums
7b8c47dad630f9c791aa77192b137da690b639d081ee4d53084f1f2dae48161b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
Size 37.7 MB
Tags CPython 3.15 Linux musl 1.2+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
36d13a22ecc956103c6e9f9926dd73a54f323b0736007910ac79e34b3506ad76
BLAKE2b-256 checksum
How to use checksums
874857554ca1c586169c50f9333b8c763009560d1cc1fa4d1d66a1b59bc22709
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL mwpf_rational-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 41.2 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
62983538fc6e5a7816c9af3057546ead30a1dbe035af008947b63971a2436a49
BLAKE2b-256 checksum
How to use checksums
461b6788188714ec518f600511a1537e43a9af74af71aa751750f9229c5866b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl

Download URL mwpf_rational-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl
Size 5.0 MB
Tags CPython 3.15 abi3 abi3t macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
d0980ec74363da222e06da2ac02bf36f9a586bd83bfe053166d334dc8b8fd1ac
BLAKE2b-256 checksum
How to use checksums
16550b11ae80b0f5b97b67a24b766752703fe1e4a6f6d94b0352d6469fd497ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp314-cp314t-win_arm64.whl

Download URL mwpf_rational-0.2.17-cp314-cp314t-win_arm64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
43b2f50065ecec5c572ecb0f2535a9967c609fd40e0bdfc1b191bda7b07d76aa
BLAKE2b-256 checksum
How to use checksums
ae413cca87f2118d37612c1701686a695fadcbb071865a17bd167134b11b3a72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp314-cp314t-win_amd64.whl

Download URL mwpf_rational-0.2.17-cp314-cp314t-win_amd64.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
6bd32f1c322d268d3cb01338f7f5fcd4030cee27d60446fee1792068ffdb7188
BLAKE2b-256 checksum
How to use checksums
d82b130f7594e776dee868c916307971e1d999f85dcaa213784e6e231bea9232
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 36.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ccf04f72115da7086c4b423c33e4db455f2a17ad8bc80df7e3aced0c2f8589b6
BLAKE2b-256 checksum
How to use checksums
f0672a7bde68f3a26f8e798ee68455377b7dec2b43e88f362d4f6447a226c46a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL mwpf_rational-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 40.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1ccdcafb68b114df6b4b152478c218d6499863453a094445183d26c433973435
BLAKE2b-256 checksum
How to use checksums
8221b45e82afcf9ff0e8d07038b620466f1178ef45316feeae182b8a4160f7a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl

Download URL mwpf_rational-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl
Size 4.7 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
7496b2d1a2477a49d60849dcb6a5f46bf699fce818c4522a5c04fc019829a62c
BLAKE2b-256 checksum
How to use checksums
75c1bc9317d030a516e5ecd01b86bb995a9f5045da5e0d82eebfc4f1c5dff0c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp39-abi3-win_arm64.whl

Download URL mwpf_rational-0.2.17-cp39-abi3-win_arm64.whl
Size 2.2 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
2a26ec08d44e06e7e57e9dffe1e0c5e4f47b8807b704d48c6d978caf5341e858
BLAKE2b-256 checksum
How to use checksums
b935c1f6b8c38b938ae544148413921ccdf0b8e74de4bfa722d0eec567ac74cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp39-abi3-win_amd64.whl

Download URL mwpf_rational-0.2.17-cp39-abi3-win_amd64.whl
Size 2.4 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a90bee4fe2af4681c5392a33d187fa8f4bc062050c5e0740293d7dbe31880417
BLAKE2b-256 checksum
How to use checksums
4d3e5349aba3f13a748c09bcb02d65ff31201bdc57f126ab7f76f9c10d95b413
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl
Size 36.8 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
19fce7fb93b49fd26f6583c2cecad5d2753a8a179056dd9b0e194de1ad0f63ab
BLAKE2b-256 checksum
How to use checksums
f808c5470ff17513905ac638fda0808f8fbe2ea67cc24f3dd45a206eb6f07e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mwpf_rational-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 40.3 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
bad51f31a1b1cdb19699ab4064747a0a46d0ecffee7a27a975a4a7e782495c20
BLAKE2b-256 checksum
How to use checksums
ae570dcd581a7ffef62370b793aa4565725c152eec9b658c925c8ede47792127
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / mwpf_rational-0.2.17-cp39-abi3-macosx_10_12_universal2.whl

Download URL mwpf_rational-0.2.17-cp39-abi3-macosx_10_12_universal2.whl
Size 4.7 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
f56bd8affa988bc17997e263e00e6915ab9343569b272ca2dbc1108f792b1d85
BLAKE2b-256 checksum
How to use checksums
34bbb608cfa1a2061a7c2b226606b428779187e79af3e8e0ebcc8b3a889bf853
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Security for mwpf-rational 0.2.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 16 files in this release have been uploaded with provenance metadata.

Select from 16 files

Attestation for mwpf_rational-0.2.17.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page