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

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.18
File Size Uploaded Provenance Actions
mwpf_rational-0.2.18.tar.gz 597.8 kB With provenance Details for mwpf_rational-0.2.18.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for mwpf-rational 0.2.18
File Actions
mwpf_rational-0.2.18-cp315-abi3.abi3t-win_arm64.whl CPython 3.15 abi3, abi3t Windows ARM64 Details for mwpf_rational-0.2.18-cp315-abi3.abi3t-win_arm64.whl
mwpf_rational-0.2.18-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3, abi3t Windows x86-64 Details for mwpf_rational-0.2.18-cp315-abi3.abi3t-win_amd64.whl
mwpf_rational-0.2.18-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.18-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.18-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.18-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
mwpf_rational-0.2.18-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.18-cp315-abi3.abi3t-macosx_10_15_universal2.whl
mwpf_rational-0.2.18-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details for mwpf_rational-0.2.18-cp314-cp314t-win_arm64.whl
mwpf_rational-0.2.18-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details for mwpf_rational-0.2.18-cp314-cp314t-win_amd64.whl
mwpf_rational-0.2.18-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.18-cp314-cp314t-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.18-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.18-cp314-cp314t-manylinux_2_28_x86_64.whl
mwpf_rational-0.2.18-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.18-cp314-cp314t-macosx_10_15_universal2.whl
mwpf_rational-0.2.18-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details for mwpf_rational-0.2.18-cp39-abi3-win_arm64.whl
mwpf_rational-0.2.18-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for mwpf_rational-0.2.18-cp39-abi3-win_amd64.whl
mwpf_rational-0.2.18-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details for mwpf_rational-0.2.18-cp39-abi3-musllinux_1_2_x86_64.whl
mwpf_rational-0.2.18-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.18-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mwpf_rational-0.2.18-cp39-abi3-macosx_10_12_universal2.whl CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) Details for mwpf_rational-0.2.18-cp39-abi3-macosx_10_12_universal2.whl

Total release size: 302.6 MB

Release files / mwpf_rational-0.2.18.tar.gz

Download URL mwpf_rational-0.2.18.tar.gz
Size 597.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b8251d286a53c564a93ef8a7557795e1a68b1ea0d5cf347ae8977a88e0f2198b
BLAKE2b-256 checksum
How to use checksums
ce27036a600f399437f74abf607590a1ce046bbbffc3543426d8bda98300203b
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.18-cp315-abi3.abi3t-win_arm64.whl

Download URL mwpf_rational-0.2.18-cp315-abi3.abi3t-win_arm64.whl
Size 4.4 MB
Tags CPython 3.15 Windows ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
e3aae19a2cf3af2d17cfd424ba6bcfb8a7cb7c48db7ed0f55e01aba6903853d8
BLAKE2b-256 checksum
How to use checksums
64e3269a6d695a9b13bed30f27a0c20a88b71fa9eff43924b783b3e1dea0914b
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.18-cp315-abi3.abi3t-win_amd64.whl

Download URL mwpf_rational-0.2.18-cp315-abi3.abi3t-win_amd64.whl
Size 4.4 MB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
80e8656998a914ad4bfa39703373448b2e14507a7cb46bb7423c35d508d0cf15
BLAKE2b-256 checksum
How to use checksums
537c35ea88c28f03360f4a8ae02ad2bcd9de9f0380179ff446b184ceee6c362b
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.18-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.18-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
Size 41.2 MB
Tags CPython 3.15 Linux musl 1.2+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
2b5cb8d10ae0317f6905c854a1d8d8b8e649e73ed3d3a6fafdb5bf8402239ec1
BLAKE2b-256 checksum
How to use checksums
76dbd1a07fde80213a79c488884e9f44d2a555ad10b7c6cbe00679f66f700543
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.18-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL mwpf_rational-0.2.18-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 43.7 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
6f96d2eab26b583682846882b4b6d7cdc1715b1c8fea3eadd985cb5625097e39
BLAKE2b-256 checksum
How to use checksums
30a1e35404753fe6d664be77a856aa51df4947eee50bf6afe331518015ed5a48
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.18-cp315-abi3.abi3t-macosx_10_15_universal2.whl

Download URL mwpf_rational-0.2.18-cp315-abi3.abi3t-macosx_10_15_universal2.whl
Size 8.5 MB
Tags CPython 3.15 abi3 abi3t macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
a8093436be9ba97ebec10252fc3d2e46cbecd874813b199d772970b4cfc05478
BLAKE2b-256 checksum
How to use checksums
e5512f131cbbe12ce160cf6a9510c06160439fbbab644e69a771d3f3a81ed993
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.18-cp314-cp314t-win_arm64.whl

Download URL mwpf_rational-0.2.18-cp314-cp314t-win_arm64.whl
Size 4.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
524089d48e165d4ec140c11a599f81d5010c6b408b3822dd7025f3ad3d383a8e
BLAKE2b-256 checksum
How to use checksums
b8724ca033389f40112d1e2a9116c950ffa71f994a11a76b01f759c473934402
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.18-cp314-cp314t-win_amd64.whl

Download URL mwpf_rational-0.2.18-cp314-cp314t-win_amd64.whl
Size 4.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
870914f18de66caca0f78bb9c6f9bd5eb9b6bad955eba04ca0be30ef27a61039
BLAKE2b-256 checksum
How to use checksums
1246426f7bf283b2202c86bf1b0cad36b9d0894ff42a61d5ac52a9bf1e13b77b
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.18-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.18-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 40.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
561437500cb215f3d5b54e4d00f919c9a9e9814f6242dda911a0172acadd192d
BLAKE2b-256 checksum
How to use checksums
77146906b48745be1a13463f235b995ef2d7d1ab6a3afad43f66e26333bb3a92
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.18-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL mwpf_rational-0.2.18-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 43.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b01b20a3597fac2a05a2f0196c7ccd6988ff32ae2b3e96a4f8ae1f11249152dc
BLAKE2b-256 checksum
How to use checksums
6c59b5684808081186339b03e7fd1ac175fca4c23ddf2e1c9baf2e88f753ecad
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.18-cp314-cp314t-macosx_10_15_universal2.whl

Download URL mwpf_rational-0.2.18-cp314-cp314t-macosx_10_15_universal2.whl
Size 8.2 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
377fad87bfbb59833051678082ec9948d21c968111d8588d74bb9f5494309d23
BLAKE2b-256 checksum
How to use checksums
4a54570a49254da52b108baacc5ac4df41c00205417a9f68d8f647c6df9ff8d3
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.18-cp39-abi3-win_arm64.whl

Download URL mwpf_rational-0.2.18-cp39-abi3-win_arm64.whl
Size 4.1 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
30bed334a32a6c2632a239c62e1f627ee578f8dde10bc5a6845e578314082cd6
BLAKE2b-256 checksum
How to use checksums
fec063c0d110fa86e2a37b4066c171b9dae6a2300fe76fcb912f2465ab57336f
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.18-cp39-abi3-win_amd64.whl

Download URL mwpf_rational-0.2.18-cp39-abi3-win_amd64.whl
Size 4.2 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
12e2546076283dd2418fe6564467009b93cbfb17676bca9a13fdf63060343441
BLAKE2b-256 checksum
How to use checksums
d902eb7a0cc284a9de5ab0de82c94775a6d915426c97f52135c6c16677a2cc03
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.18-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL mwpf_rational-0.2.18-cp39-abi3-musllinux_1_2_x86_64.whl
Size 40.3 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
25c53ac4f7e8117be84400a1189a1e360c324428ca3608c406ceedecdb07e915
BLAKE2b-256 checksum
How to use checksums
ea9c0bf1241c6be38b405d85d897436bcf5c5faf1658cf511ba2a72cc2cd0dea
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.18-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mwpf_rational-0.2.18-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 42.7 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
85e96ba65cc6e0cb890066fcb2e0e98b34fd50486a6021356c778b776dc4de49
BLAKE2b-256 checksum
How to use checksums
c6ca3dd7d06895687cb213e0436ff82614d00ba14cdd5dfefc54a6ef7a98f03f
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.18-cp39-abi3-macosx_10_12_universal2.whl

Download URL mwpf_rational-0.2.18-cp39-abi3-macosx_10_12_universal2.whl
Size 8.2 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
995513ce42e2a5657364e5947ee413aaa88c149e0836a15160e803f03f00ac2e
BLAKE2b-256 checksum
How to use checksums
920c5cf9c1d11b43fb0babd983163448cc6e2605019f5ba957307c64bbd054c5
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.18

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