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_incr

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_incr[stim]'
from mwpf_incr import SinterMWPFIncrDecoder

sinter.collect(
    tasks = ...,
    num_workers = 1,
    decoders = ["mwpf_incr"],
    custom_decoders = { "mwpf_incr": SinterMWPFIncrDecoder(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_incr": SinterMWPFIncrDecoder(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_incr 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-incr 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-incr 0.2.17
File Size Uploaded Provenance Actions
mwpf_incr-0.2.17.tar.gz 594.8 kB With provenance Details for mwpf_incr-0.2.17.tar.gz

Built distributions (wheels)

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

Total release size: 286.8 MB

Release files / mwpf_incr-0.2.17.tar.gz

Download URL mwpf_incr-0.2.17.tar.gz
Size 594.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0325b78d7c06f9b49791c0395dc08fe0d5f3fca7ba621c5404d43a7c9556b2d7
BLAKE2b-256 checksum
How to use checksums
f1e1424be76863ed82f149c0db14eb9fa44b866e8d4c8052d42e748e8938429f
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_incr-0.2.17-cp315-abi3.abi3t-win_arm64.whl

Download URL mwpf_incr-0.2.17-cp315-abi3.abi3t-win_arm64.whl
Size 4.1 MB
Tags CPython 3.15 Windows ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
c95ac19878cb9d1129497fd469eb8e1644a59074e4215bd56a926d02e070aadd
BLAKE2b-256 checksum
How to use checksums
9a2f74e33e89b260caade69b8351d5d61149cc33fb74a5e81733249ca32d18e8
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_incr-0.2.17-cp315-abi3.abi3t-win_amd64.whl

Download URL mwpf_incr-0.2.17-cp315-abi3.abi3t-win_amd64.whl
Size 4.1 MB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
af728333684546a1718a2763a478d66d1a41d6d355186bf802cc9c24fd2a793a
BLAKE2b-256 checksum
How to use checksums
66346620fa51d2edd25e140f7c91fbed18ec0b8ca174b2881642db0cd4283c10
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_incr-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl

Download URL mwpf_incr-0.2.17-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
Size 39.3 MB
Tags CPython 3.15 Linux musl 1.2+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
881d536394cbfb2eb9fdc67ece9a2d2a0b3c634f92eb2ae64d83de9612d368cf
BLAKE2b-256 checksum
How to use checksums
007e55248c44c46bd03fea089a0a34a1835d8904e5985c15806ee1a85ece8c91
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_incr-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL mwpf_incr-0.2.17-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 41.4 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
74a55efeaa2356380a410b1dbddf5dc8f777b55fd47cc8f1b73563b204b26422
BLAKE2b-256 checksum
How to use checksums
cd9de0fe5d76d51f4aa0617e5ac9bfb365c6ae751ae087a0a576d44e3b50ae25
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_incr-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl

Download URL mwpf_incr-0.2.17-cp315-abi3.abi3t-macosx_10_15_universal2.whl
Size 7.9 MB
Tags CPython 3.15 abi3 abi3t macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
f9c51b02616a1a5ec77ead8fef6c7f0f18e3f0e075b65c500cb2bd207398b0fa
BLAKE2b-256 checksum
How to use checksums
bc3ec037cd3aff11c3c87f827b2e3f4ec838052328183bb417a40cf47d9a5d72
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_incr-0.2.17-cp314-cp314t-win_arm64.whl

Download URL mwpf_incr-0.2.17-cp314-cp314t-win_arm64.whl
Size 4.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
b16c098f0dcc5e8fbc7dbbc228aa61d74773aaba67a14ec10eedaf448f1a1551
BLAKE2b-256 checksum
How to use checksums
64db240348adf9af7bef21ad3b28d48177bfbd4ac950c26d03a2847514469acc
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_incr-0.2.17-cp314-cp314t-win_amd64.whl

Download URL mwpf_incr-0.2.17-cp314-cp314t-win_amd64.whl
Size 4.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
916549714a8a4e6bfb70baacdb7a72bb80055d88f6c9db3455cb9e1f5cc63aa7
BLAKE2b-256 checksum
How to use checksums
a1728d0892f601652e3b3afadcd25dfdf332d21bae22c2d7025ff6c48c10ddb4
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_incr-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL mwpf_incr-0.2.17-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 38.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
83c459903bb4f8f6031d7cd846ce8892d94a29bb603f96d3f22505bf229f54d1
BLAKE2b-256 checksum
How to use checksums
bd3b1b6ecb9169a33114a03971cebb4b54c93e3b74fb032e0d807e2b766e6423
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_incr-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL mwpf_incr-0.2.17-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 40.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
574b6570bd0e6a136036bb97b53ce1ca621f2276919c369eb4f75b642064a3b3
BLAKE2b-256 checksum
How to use checksums
ec6b913ba9cf65a702257a03b1ab1d227115a4c5dbda29e6b5ec69d5395cd711
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_incr-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl

Download URL mwpf_incr-0.2.17-cp314-cp314t-macosx_10_15_universal2.whl
Size 7.6 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
df1d05e0085d67f1bac9010bb6c47d5966ba05dea988533dfee58158007c9a8b
BLAKE2b-256 checksum
How to use checksums
54665744ca9481839eeb5525eaa256a6de986c5447010c371ca89ef5ad57fc88
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_incr-0.2.17-cp39-abi3-win_arm64.whl

Download URL mwpf_incr-0.2.17-cp39-abi3-win_arm64.whl
Size 3.9 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
0c58911153f4483d10d0e35ddcda873d93d6eb7166f4989138fbf34b29abcfed
BLAKE2b-256 checksum
How to use checksums
4883b3acec96ffa18d0b5cdfb16f6257a14b01761f4b3049aa2c215d7d604607
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_incr-0.2.17-cp39-abi3-win_amd64.whl

Download URL mwpf_incr-0.2.17-cp39-abi3-win_amd64.whl
Size 3.9 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
49b67088f019ba85cabcc952eab4c05b431fe32621903963ff482021fad9c7eb
BLAKE2b-256 checksum
How to use checksums
36527dd7e842c45092ba0acf8bb321ed8a51b71e8ef28b9b85339813a7d2194f
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_incr-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL mwpf_incr-0.2.17-cp39-abi3-musllinux_1_2_x86_64.whl
Size 38.6 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
ce35eaacacd0c7312ba020cbe746e204f8560eed9869d0c1b26ee664d5e6310c
BLAKE2b-256 checksum
How to use checksums
e0f47a907cc3042250325bc408f25f14b7a9fd7e80443401295a29fd2470c5a7
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_incr-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mwpf_incr-0.2.17-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 40.5 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
0ddde7cea759e72bb4653c16778061de9dce17ccb64e87d017438a11b87c0e28
BLAKE2b-256 checksum
How to use checksums
fead4fabfc4bf320409ba6a46bfbe46daab6b33d81c501947c75c344f5b52347
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_incr-0.2.17-cp39-abi3-macosx_10_12_universal2.whl

Download URL mwpf_incr-0.2.17-cp39-abi3-macosx_10_12_universal2.whl
Size 7.6 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
8b8fa6836d97b49334db1ef84601a9e6f34fdaf6efa54c2251bd911a3ebb2250
BLAKE2b-256 checksum
How to use checksums
10dd70a9325316b6a5ed06547361d33ac6e19e3fda4988f8b51e45daa38d68e6
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-incr 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_incr-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