Skip to main content

Potts model signal/image processing — Python/Rust port of MATLAB/Java pottslab (Storath & Weinmann)

Project description

pottslab — Python/Rust package

Python package for reconstructing jump-sparse signals and images using the Potts model (piecewise-constant Mumford-Shah / L0-gradient model). Port of the original MATLAB/Java pottslab by Martin Storath & Andreas Weinmann.

Time-critical algorithms are implemented in Rust (via PyO3); the Python layer provides a clean, type-annotated API.


About this port

This package was written entirely by Claude Sonnet (Anthropic's AI coding agent) in 2026 as a port of the original MATLAB/Java library. The original library authors (Martin Storath, Andreas Weinmann) did not write or review this Python/Rust code.

What the agent built

Layer Files Source
Rust core src/l2potts.rs Ported from Java/src/pottslab/L2Potts.java
Rust core src/l1potts.rs Ported from Java/src/pottslab/IndexedLinkedHistogram.java
Rust core src/processor.rs Ported from Java/src/pottslab/PLProcessor.java
Rust core src/admm.rs Ported from Java/src/pottslab/JavaTools.java (ADMM routines)
Python API pottslab/potts1d.py Ported from Potts/minL2Potts.m, minL1Potts.m
Python API pottslab/potts2d.py Ported from Potts2D/minL2Potts2DADMM.m
Python API pottslab/inverse.py Ported from Potts/PottsCore/iPottsADMM.m
Python API pottslab/sparsity.py Ported from Sparsity/SparsityCore/minSpars.m
Python API pottslab/tikhonov.py Ported from Tikhonov/minL2Tikhonov.m, minL1Tikhonov.m
Python API pottslab/utils.py Ported from Auxiliary/ helpers
Tests tests/ (418 tests) Written from scratch
Benchmark benchmark.py, Java/src/pottslab/Benchmark.java Written from scratch

Bug found and fixed

During porting, the agent identified an off-by-one error in the weighted-median computation inside IndexedLinkedHistogram. The original code used cumulative_weight > half_total → median = previous_node, which is incorrect for inputs with odd total weight: the true weighted median is the first node whose cumulative weight reaches or exceeds half the total (lower-median convention).

The bug caused the L1-Potts dynamic program to sometimes prefer a suboptimal multi-jump solution when a single constant segment is provably optimal. It was fixed in both the new Rust port (src/l1potts.rs) and in the original Java source (Java/src/pottslab/IndexedLinkedHistogram.java). Regression tests are in tests/test_l1_median_bug.py.

Performance work

The initial Rust L1-Potts port was slower than the Java original at large n because of two O(n²) allocation hot-spots: the entire arena was cloned on every compute_deviations call, and a fresh Vec<f64> was allocated for each deviations output. Both were eliminated:

  • compute_deviations now mutates temporary fields directly (&mut self) instead of cloning the arena, relying on the invariant that insert_sorted resets all temp fields before each call.
  • A single dev_buf is allocated once outside the DP loop and reused via compute_deviations_into(&mut slice).

After these fixes Rust is 3× faster than Java at n=100 and roughly on par at n=10 000 (the remaining gap is structural: arena linked-list pointer-chasing vs. HotSpot JIT optimisation for object graphs).

Hardening

A second pass added input-validation guards across every public function:

  • NaN / Inf in signal or weight arrays → ValueError
  • Non-monotone samples argument → ValueError
  • mu_init ≤ 0 in min_l2_potts_2dValueError
  • lam < 0 in Tikhonov solvers → ValueError
  • Negative tau in soft_thresholdValueError
  • Empty array to weighted_medianValueError
  • Negative weights in weighted_medianValueError
  • Invalid connectivity (not 4 or 8) in seg_to_labelValueError
  • Incompatible u / f sizes in energy_l2_pottsValueError
  • Sparse-matrix input to min_l1_tikhonov now converts to dense cleanly instead of producing a silent object array

Installation

Pre-built wheels (recommended)

pip install pottslab

Pre-built wheels for Linux (x86_64, aarch64), macOS (x86_64, arm64), and Windows (x86_64) are published to PyPI for Python 3.9–3.13. No Rust toolchain required.

From source (with Rust)

pip install maturin
maturin develop --release   # builds the Rust extension in-place
# or produce a wheel:
maturin build --release && pip install dist/pottslab-*.whl

Requires a Rust toolchain (stable ≥ 1.70).

From source (without Rust — pure-Python fallback)

pip install .

If cargo is not found, the Rust compilation is skipped and the package falls back to pure-Python implementations of all algorithms. A RuntimeWarning is printed at import time to make this visible. The fallback is 10–100× slower on large inputs but produces identical results.

Requirements: Python ≥ 3.9, NumPy ≥ 1.20, SciPy ≥ 1.7.


Quick start

import numpy as np
import pottslab as pl

# ── 1-D denoising (L2-Potts) ─────────────────────────────────────────────
rng = np.random.default_rng(0)
u_true = np.array([0.0] * 50 + [1.0] * 50)
f = u_true + rng.normal(0, 0.1, 100)

u = pl.min_l2_potts(f, gamma=0.3)
print(pl.count_jumps(u))          # → 1

# ── 1-D robust denoising (L1-Potts) ──────────────────────────────────────
u, data_err, n_jumps, energy = pl.min_l1_potts(f, gamma=0.3)

# ── 2-D image segmentation ────────────────────────────────────────────────
img = rng.standard_normal((64, 64)).clip(0, 1)
seg = pl.min_l2_potts_2d(img, gamma=0.05)

# ── Inverse problem: deblur then segment ─────────────────────────────────
n = 50
A = np.eye(n)                    # replace with your forward operator
u_rec, *_ = pl.min_l2_ipotts(f[:n], gamma=0.3, A=A)

# ── Sparsity ──────────────────────────────────────────────────────────────
u_sparse, *_ = pl.min_l2_spars(f, gamma=1.0)   # hard threshold
u_soft,   *_ = pl.min_l1_spars(f, gamma=1.0)   # soft threshold (LASSO)

API reference

1-D Potts solvers

Function Problem Returns
min_l2_potts(f, gamma, *, weights, samples) min γ‖Du‖₀ + ‖u−f‖₂² ndarray
min_l1_potts(f, gamma, *, weights, samples) min γ‖Du‖₀ + ‖u−f‖₁ (u, data_err, n_jumps, energy)

Both accept scalar signals (n,) and vector-valued signals (n, channels). weights applies per-sample weights; samples accepts non-equidistant sample positions (converted via trapezoidal quadrature). samples must be strictly increasing; a ValueError is raised otherwise.

2-D Potts solver

min_l2_potts_2d(
    f,             # (H, W) or (H, W, C) image
    gamma,         # jump penalty
    *,
    isotropic=True,   # True → 8-connected (near-isotropic); False → 4-connected
    tol=1e-10,        # ADMM convergence tolerance
    mu_init=None,     # initial ADMM coupling (default: gamma * 1e-2); must be > 0
    mu_step=2.0,      # ADMM penalty growth factor (must be > 1)
    quantize=True,    # round output to 8-bit grid (matches MATLAB behaviour)
    verbose=False,
) -> ndarray

Inverse Potts (deconvolution / compressed sensing)

u, data_err, n_jumps, energy = min_l2_ipotts(f, gamma, A, *, tol, mu_step, imax)
u, data_err, n_jumps, energy = min_l1_ipotts(f, gamma, A, *, tol, mu_step, imax)

A may be a dense/sparse matrix or a scipy.sparse.linalg.LinearOperator.

Tikhonov regularisation

u, flag = min_l2_tikhonov(f, gamma, A, *, init, maxit)   # lam >= 0
u, flag = min_l1_tikhonov(f, gamma, A, *, maxit)          # lam >= 0

Sparsity

u, data_err, n_spikes, energy = min_l2_spars(f, gamma)   # hard threshold
u, data_err, n_spikes, energy = min_l1_spars(f, gamma)   # soft threshold

Utilities

Function Description
count_jumps(u) Number of positions where u changes (raises on NaN/Inf)
energy_l2_potts(u, f, gamma) Evaluate L2-Potts energy
samples_to_weights(s) Strictly-increasing sample positions → trapezoidal weights
seg_to_label(u, connectivity=4) Piecewise-constant image → integer label map
soft_threshold(x, tau) Soft (proximal L1) threshold; tau must be ≥ 0
weighted_median(data, weights) Weighted median; raises on empty or negative weights

Performance

Comparison against the original Java backend (as called from MATLAB), on an ARM64 machine (median of 5 runs):

Function n Java (ms) Rust (ms) Speedup
min_l2_potts 1-D scalar 1 000 2.1 0.5
min_l2_potts 1-D scalar 10 000 62 52 1.2×
min_l2_potts vector-valued (3 ch) 1 000 0.5 0.4 1.3×
min_l1_potts 1-D 1 000 11.2 8.6 1.3×
min_l1_potts 1-D 100 0.29 0.09 3.2×
min_l2_potts_2d 256×256 241 114 2.1×
min_l2_potts_2d 512×512 1 130 506 2.2×

Notes: Java timings are the raw Java class timings, not including the MATLAB script and MEX bridge overhead which was typically 2–5× additional cost. The Rust port eliminates that overhead entirely.

The min_l1_potts DP uses an arena-based linked-list histogram; Java's JIT outperforms Rust at very large n (> 5 000) due to HotSpot's aggressive pointer-chasing optimisation. For typical signal lengths this is not a practical concern.


What is the Potts model?

The L2-Potts functional is

E(u) = γ ‖Du‖₀ + ‖u − f‖₂²

where ‖Du‖₀ counts the number of jumps in u. Minimising E yields a piecewise-constant approximation of f with the optimal trade-off between fidelity and number of segments, controlled by γ.

The L1 variant replaces ‖u − f‖₂² with ‖u − f‖₁, giving robustness to outliers. The inverse variant replaces ‖u − f‖ with ‖Au − f‖, enabling joint deconvolution/deblurring and segmentation.


Citation

If you use this package in research, please cite the original pottslab work:

@article{storath2017joint,
  title={Joint image reconstruction and segmentation using the Potts model},
  author={Storath, Martin and Weinmann, Andreas and Frikel, J{\"u}rgen and Unser, Michael},
  journal={Inverse Problems},
  volume={31}, number={2}, pages={025003}, year={2015},
  publisher={IOP Publishing}
}
@article{storath2014fast,
  title={Fast partitioning of vector-valued images},
  author={Storath, Martin and Weinmann, Andreas},
  journal={SIAM Journal on Imaging Sciences},
  volume={7}, number={3}, pages={1826--1852}, year={2014},
  publisher={SIAM}
}

Attribution

Original library: pottslab by Martin Storath & Andreas Weinmann (MIT licence, https://github.com/mstorath/pottslab).

This Python/Rust port was written by Claude Sonnet (Anthropic's AI coding agent), 2026. See PORTED_BY.md for the full list of what was ported, what changed, and what was fixed relative to the original Java source.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pottslab-1.0.1.tar.gz (6.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pottslab-1.0.1-cp313-cp313-win_amd64.whl (232.8 kB view details)

Uploaded CPython 3.13Windows x86-64

pottslab-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pottslab-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (350.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pottslab-1.0.1-cp313-cp313-macosx_11_0_arm64.whl (316.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pottslab-1.0.1-cp312-cp312-win_amd64.whl (233.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pottslab-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pottslab-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pottslab-1.0.1-cp312-cp312-macosx_11_0_arm64.whl (317.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pottslab-1.0.1-cp311-cp311-win_amd64.whl (231.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pottslab-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pottslab-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pottslab-1.0.1-cp311-cp311-macosx_11_0_arm64.whl (317.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pottslab-1.0.1-cp310-cp310-win_amd64.whl (231.7 kB view details)

Uploaded CPython 3.10Windows x86-64

pottslab-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pottslab-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

pottslab-1.0.1-cp310-cp310-macosx_11_0_arm64.whl (317.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pottslab-1.0.1-cp39-cp39-win_amd64.whl (232.1 kB view details)

Uploaded CPython 3.9Windows x86-64

pottslab-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pottslab-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

pottslab-1.0.1-cp39-cp39-macosx_11_0_arm64.whl (318.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pottslab-1.0.1.tar.gz.

File metadata

  • Download URL: pottslab-1.0.1.tar.gz
  • Upload date:
  • Size: 6.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1.tar.gz
Algorithm Hash digest
SHA256 3511c2c841c8ca7f3ead9993424bf5cd097123d108f3dc1507d7becd19f48f67
MD5 cf91c706657a3748de3fc1b68a86fc62
BLAKE2b-256 a4c32c0070d6711c1f568a736005cba7150cbfb32688d5976411dd67ab9c6790

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1.tar.gz:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 232.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 59949e2e3025bd4ccc7da24ea284b8e26668b7857c37b00a90eeb95b5b401927
MD5 3637a13afe8a48aec305ddaedfb3ef61
BLAKE2b-256 4687d376b4615b40553bb6693f68c5948be642749bcfad1e19bb2e20218dac12

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp313-cp313-win_amd64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 47183fcd1a83d15ed355c72ad9674d4df81ec2f8db5974754d2e573d8ea19a95
MD5 d07b36e7c0af862d3eeb9aa6e49123c6
BLAKE2b-256 d1e4cda63d21a71eab33d92588f5d332f3c3d12cc79e1d299ea542b43e96dbd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b9fcea3ce5c17f4f051523533e62350381d337ead61c05b8044df11bebabdbd6
MD5 03552afd4b551df14c0c3c7d329c6fb1
BLAKE2b-256 c7644acdb34089be0606fde3101f790c20a466ea13217d8ff0da61f383b32114

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e347ceb02ad84f2f70ea27d70d72d56e0cff4a7c1385416227b5e3fbe3f292cb
MD5 d63fed172ab5137525b4af8654f7d290
BLAKE2b-256 81fad81878ffc2d14e9e79ebd0385472501f6708b6eccee4d3d24c26554668a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 233.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8532ffe5fdf800a774c8921768d226509a3fdedd6b5ad957ad82d885f4045346
MD5 e603f41e5f28f0cb9e071eb8bcae052c
BLAKE2b-256 5170a6a6aa0b6383faf59d7b5d8b8c5fedf72e02e8c410f2c2b552cc0f1bd183

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp312-cp312-win_amd64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff132a58545ab16e66bcd0b239286b4179c34f2501f957f270a99c08bf23e65d
MD5 105998437be6dfb334101bd76fe19de0
BLAKE2b-256 f96b8631e34d9ad655cc4a9421d02ec07a09485c050b746a836e5b983dc39858

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4d8fdeab5416589b3b1fb6ea76b3658c041da9b46fd5e2bc254a2040fef5863c
MD5 bc32b42d0ebcffa5b5c1bb86f4475032
BLAKE2b-256 9b53ed5f250ba1fd8fddb917aa4066c35b7ffe97eb787d46e6bf8594af72270d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da4cbf81b39ebe73b9af8f22e7228eccead0bcf1667dead982d26feec88a665a
MD5 d927ea199c9677707bca768c735c36cd
BLAKE2b-256 3d1ad61ed5dc995ecebdadc2c074007ea0e5b7c35870a2c38d820b1da69fb9b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 231.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d0add0aaccf14021903eef0c5c97db3a19b2564e02f72aeec4fd3d158a20361b
MD5 7792814dd21896e80590e3e3c1d14bb5
BLAKE2b-256 775987910a74b67c68fbdf02ded67b396b0f01ca387009ffb786318ad4fea711

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp311-cp311-win_amd64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65270816385848f44b2d7d86737fc9040add638d4280a23aace7fd72e3cdf301
MD5 c184fde533597d5a266c4ee94845eff8
BLAKE2b-256 2e3d526e2634606b413edb5d5d43b627236d767a5dc8500c322804be556b3b20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a0e61b8ba68561f7a51ff1bc122d247470bac835ec8244c0221eca440b266fc1
MD5 15c14bebaa6fc05d013f38a0abd118b6
BLAKE2b-256 7fc09048fcdf703e1fda3a5f9191a59afba13b8c405dae5269bb58249292b634

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b46122237f6d82ae0ec0956bd99fbd30074941318b0a7c9f0d1cf7340a3cc831
MD5 ba7573198472788aa0362e86d042d5bf
BLAKE2b-256 915b26f47f2277bd19f3e712bb82d1867603d7d6784e15505991c036eb7a6b41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 231.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b2276b1a5cdfb5fcab70243760db23252122e470a60e6df24d4e6bbf05ea05ed
MD5 e9dcb1ff6c431220d9ef23c471784c34
BLAKE2b-256 354793de3b61d186d0a766edf789ff507246eff7454e278000a9cbd3d4a91a0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp310-cp310-win_amd64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8308d1a94ebaac13e5f9570dbe62d673c1e98faa62d7a410282feed6fb17eada
MD5 70624503f1e36befdc59c9b91990a2fd
BLAKE2b-256 33959d4ba94f8d1d1490383a7c019cde0b506a8786f5daa130a559b957b72012

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ae11252468facbbb2e5ec518dfc673ca990c3a90661df67454ebc40ee6c60e99
MD5 aa96c49192feb4eae5f826e3023bdb8f
BLAKE2b-256 982959496c2fd6335ba1e7f8f541887915cc141723a3a4a05cf5413f27cdb261

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae8846aad2c9f4734734b1b2fb4025c1630b9d3225757be10d9f35eae5fb85ae
MD5 85cbfbb0a06e21512e09ea925edc52da
BLAKE2b-256 bd8fec7a26b0d8d1234dc35090c4b47d71db8d04e1e4551d2193c56370d89feb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 232.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pottslab-1.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a424b972c9608e18574b4dfaeba7ba344423a367d253deaaab520ed5ae945a7e
MD5 c09299f174228fae7b61bb59ca244b5d
BLAKE2b-256 9a171233801beccaaf6899a9558a818f72c71d7193a88947c82c2d91d25b7ff6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp39-cp39-win_amd64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28ed6911dbcd6d80e9ce50053f03b51562b7836745af7b0d4c344c2d32193234
MD5 9526c67ecb7b62da979b5900cd8faed2
BLAKE2b-256 84f49a55bb82fb2a289aae79e3da2c368010eb53a9bcf00ab24bc2fcdb6387b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba24d517d9308f32613e82a2af366776e1348f4c74508fd3db8a02cdbfc0013e
MD5 4707dbfafc91edc3a77ab43aeadb5b25
BLAKE2b-256 e68aa358e327984aed5011b89e6ce9b7b4e66b00b6dc5781be3a57ad5cac8e52

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pottslab-1.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 632206175de2a1aea03f5e1a063c2c06576d93116544eb9a3e095183db76faf4
MD5 9e2f93a86b321c629538e482589a53ec
BLAKE2b-256 4424ad63f6db6abb4a854eeefb8f2b4225ebaedb0f8b085b077d81e4b00864b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on mstorath/Pottslab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page