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.0.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.0-cp313-cp313-win_amd64.whl (233.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pottslab-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (354.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pottslab-1.0.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (317.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pottslab-1.0.0-cp312-cp312-win_amd64.whl (233.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pottslab-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pottslab-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pottslab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (317.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pottslab-1.0.0-cp311-cp311-win_amd64.whl (231.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pottslab-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pottslab-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (351.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pottslab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (317.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pottslab-1.0.0-cp310-cp310-win_amd64.whl (231.9 kB view details)

Uploaded CPython 3.10Windows x86-64

pottslab-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pottslab-1.0.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (317.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pottslab-1.0.0-cp39-cp39-win_amd64.whl (232.2 kB view details)

Uploaded CPython 3.9Windows x86-64

pottslab-1.0.0-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.0-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.0-cp39-cp39-macosx_11_0_arm64.whl (317.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pottslab-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 079cd42cf482bf06d8b192e633da15c724ea4afb10cd074bb46bc29469352c65
MD5 0200e0116268b6812b206954e0bef917
BLAKE2b-256 d671ac059f1c2909b21b40f9f6667395b662e9a6c19fc9f4df2e8770db1d7d3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0.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.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 233.0 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 badec339fbcbef2512e183abeee5a608393b1f30d102997dbee89cea4ed6321c
MD5 a28e77d35babe853e7b169a4344bfad4
BLAKE2b-256 428d66c29210a7b87efa2314ea7b45763dbc4c6ea1f2eaa9fc205d3f9abdec7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73813c61cc5eba1957a0129a638a94168b8bffb75ebdd65c89f8472daaf7b8e4
MD5 14ba9fc442e87afd5f4219455657ebdd
BLAKE2b-256 4f71987e3fcac6748604c055273ebac77477ba7224380e9f023d3589843d0226

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ce6a6bd655b2e049079c39bcfcef6aefba61fe87c809f04407330fd98f273e05
MD5 45bc4f80390eb3da2407a2e918b15685
BLAKE2b-256 44f37a1ddba8cef8da99cb8ed5c3210466238450177bb6e6e3bdf23ac25395f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a94dadbc9ffc5dd6529b7c112f23b2f5ef13afb30b10c9271e9d0314ad4f69c
MD5 3597b9c72e7202fd4e24123b490fcda4
BLAKE2b-256 00d7afb1502744f3e9f931119aeb4038c3025fde514920efd1620a62dd1251c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 233.5 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7144842a0be64e9b64742896b002dcf6e55d16ccb619bc243fa9a3556429f948
MD5 69fe366f2ba378ed22bd785172fc7adc
BLAKE2b-256 bbc2dba1defab3f2172261928f3a6c703bd4fe555b9e04e76d4cfe45d4ea4a54

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de4d31e550c9cb1c1fa351a39be2ca7884c8b44e7e24bea6fe92e576e7286f29
MD5 f1ff5fba32334a3d26302f891f15f861
BLAKE2b-256 8ae3c73f04210a461d7dcce90ba91ddd7040357da2b229eab3df917688414530

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3cb1acacc02f96b9bdec562713c3b2cb41d7524276c6fa8dc068cf45bd484c8b
MD5 13302d3671e68adf9667f63332541556
BLAKE2b-256 f040cf03ce85547f35e0980562143abcacc59cbf31ad8f8298316f5c404bd988

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a68a204eec46185090b04cf845e18a75212dfb587d1377de3cbc36f2c00c40f2
MD5 eaa918b69f3d97c05c0d85d56d4a1737
BLAKE2b-256 7817b036d459c387b9d5ba44dc42d78fafd40b14c5c8c080eb8c889074c5f428

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 231.8 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9040850442aa71eae2a448548c5eb59e3a83d83b5cfae428f25de3955fdd7563
MD5 a1dbf0a06909ed3ca44080d52c098787
BLAKE2b-256 8dc0bbcaec6b0f3bd5fa809b0b235e9d98795c60cb956d34b1bab48d414a0cbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc4cef4f695e62b69e9fd7d0a37be2ca7f23bea2741ff797c69ae55ac6efa130
MD5 79dd7927084e723896b5585bc408a32a
BLAKE2b-256 63984a6962c092be5a01b065a844aa325eb181ede79e5f59216d804f32368bf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9f815c440fc2f276de5215af0461f14ab76756bf2dddb14e7461dc804e1e1ee
MD5 3f3afcc05fdcc4bca2573dd5ae7a6c59
BLAKE2b-256 7c52c718a3358cb9bef28f6ad2655a48d14c35fe400008ffbaa0faa054cc36ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5efc76a7e6b137eacc6b3413393cd594cb4ea167595520c67f2cca51f4b63f84
MD5 edefde9e71be048900a115f6db85f776
BLAKE2b-256 7aef6d436e7a05cad8a2efb5e71aa40f615b90f6ac00794bcb334dd064311f37

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 231.9 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 523e22a40879c27c4fa16a25b4161699fe98c0c4e899c26fd9891f3be9ce551a
MD5 f6a60c07f6b7e8785cb6920882474d0b
BLAKE2b-256 b3dac86c0ce9590add50ea34ddf8f2e34e1969fd62ac6082753fc9b4e60e6cc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd86244ed89d2c5dd64bc1a892a7962cd4f88065b0a13882bbd96c3a642ed06b
MD5 46924ffd246004d191e8144bc832755e
BLAKE2b-256 c4089a16e0bfe04e3673850477b2802ef9c58d7f4bed8c27d582b41876ccb8db

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eed3f02e69c2a0139f68282af393e25076f8a6ec74c7dd1a7e022a1a9aa83233
MD5 0e0cd34cf9b91bd23507bdc7f4c41f53
BLAKE2b-256 4fc976f4a34d68f33a1076d1601f55306667e1d1000bd74e869bb923ebd0ce56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c26ebb6be53df0d1a7ef8d043530d0d88d4860f449918406b7e0d48e3cbde33e
MD5 04932b47980b33465d78328bf1d63d81
BLAKE2b-256 b193c41779221bad0bcaa7678ab2d2283f06e7cc310c5d5e224d7d441fd11635

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pottslab-1.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 232.2 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 cdb5500d7e76610ae62efddb78f620031c02312559444c39d6ecc15152347fdb
MD5 68e18cdc9b504835d502caa366ce664f
BLAKE2b-256 3d8b4cb5d5dc9e9fb77485225a6c71a477080741ea082c17f972f4bfb3922535

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3b49c52d233f79212919745c35d1a93a322fd9cf9f22679b56729b30817c29f
MD5 74c8a2f029ffec2a65ffa6d6c1e4006b
BLAKE2b-256 10ed5769e93fde72c66a3b830b2a9e5e304a97acdefdf8392f1dfb032be912a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4be711daa20e0d4a9ee5f91e59c280b2d50dd49a79ef8777483555e9835c888e
MD5 4818d3388e52155a9dda33c6034b32fa
BLAKE2b-256 8f9133e0f1023a83100ca3c055f5666d8201de2322ebc376e0d819e87dcc39b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pottslab-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d39c7bef6aef154cb68d09d9c9c51197d11bb2ccb001511c355cfaa0b1bd44c5
MD5 3da65338e4fd3767f60907e617dc88ef
BLAKE2b-256 c663fecd72a0255df9d36ab48cf4ed52fa6582e7bff994419cad3f3706120d86

See more details on using hashes here.

Provenance

The following attestation bundles were made for pottslab-1.0.0-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