Skip to main content

pySurprise

Compute the Surprise metric, run community detection algorithms, explore the Surprise landscape, and benchmark everything on synthetic networks. C++ core via pybind11 for maximum performance.

pip install pysurprise

Quick start

import pysurprise as pys

edges = [("a", "b"), ("a", "c"), ("b", "c"),
         ("c", "d"), ("d", "e"), ("d", "f"), ("e", "f")]
partition = {"a": 0, "b": 0, "c": 0, "d": 1, "e": 1, "f": 1}

pys.surprise(edges, partition)   # → 2.854...

Integer labels and list partitions also work:

edges = [(0, 1), (0, 2), (1, 2), (2, 3), (3, 4), (3, 5), (4, 5)]
partition = [0, 0, 0, 1, 1, 1]
pys.surprise(edges, partition)

Module overview

Module Purpose
pysurprise (root) Surprise computation (C++ core)
pysurprise.algorithms 14 community detection algorithms
pysurprise.landscape Surprise landscape exploration (merge/split curves)
pysurprise.metrics Partition quality metrics (NMI, VI, ARI, modularity)
pysurprise.benchmarks Synthetic graph generators (LFR, Relaxed Caveman)
pysurprise.parallel Parallel execution with disk caching
pysurprise.plotting Publication-ready figures

1. Surprise computation — pysurprise

The core functions live in the root module. The C++ backend makes them fast even on large graphs.

surprise(edges, partition, *, tol=1e-17) → float

Main entry point. Computes Surprise in −log₁₀ scale (higher = better partition).

import pysurprise as pys

S = pys.surprise(edges, partition)
  • edges — list[(str, str)] or list[(int, int)]: undirected edge list.
  • partition — dict[node, int] or list[int]: community assignment.
  • tol — summation tolerance of the hypergeometric tail (see below).

compute_surprise(F, M, n, p, tol=1e-17) → float

Low-level four-parameter Surprise. Computes the cumulative hypergeometric probability directly from the graph statistics:

  • F — total possible node pairs, N(N−1)/2.
  • M — possible intra-community pairs, Σ sᵢ(sᵢ−1)/2.
  • n — total number of edges.
  • p — number of intra-community edges.

Surprise = −log₁₀ P(X ≥ p) with X ~ Hypergeometric(F, M, n), summed over the full tail (exact to double precision). The original SurpriseMe code stopped the summation with an inverted test and in practice kept only the first two terms; pySurprise computes the exact value everywhere (the package, the optimisers and the bundled computeSurprise / jerarca binaries), so values can differ from SurpriseMe in the last decimals for good partitions and substantially for partitions close to random.

tol (also accepted by surprise, surprise_from_partition and surprise_from_partition_dict): terms are added until an upper bound of the remaining tail is below tol times the accumulated sum, so the probability has relative error < tol and Surprise an absolute error < tol / ln 10. The default 1e-17 is exact to double precision; 0 sums every term; larger values (e.g. 1e-8) trade accuracy for speed. Must be in [0, 1).

log_hyper_probability(F, M, n, j) → float

Single hypergeometric term in log₁₀ scale. Used internally by compute_surprise.

surprise_from_partition(edges, partition) → float

C++ fast-path for integer-indexed edges and list partitions.

surprise_from_partition_dict(edges, partition) → float

C++ fast-path for string-labelled edges and dict partitions.


2. Community detection algorithms — pysurprise.algorithms

All functions accept list[(str, str)] edges and return dict[str, int] partitions.

Classic algorithms (SurpriseMe bundle)

Seven algorithms from the original SurpriseMe distribution, each wrapping a compiled C++ binary:

Function Algorithm Reference
cpm(edges) Constant Potts Model Traag et al., Phys Rev E 84 (2011)
infomap(edges) Map equation Rosvall & Bergstrom, PNAS 105 (2008)
rb(edges) Reichardt-Bornholdt Reichardt & Bornholdt, Phys Rev E 74 (2006)
rn(edges) Ronhovde-Nussinov Ronhovde & Nussinov, Phys Rev E 81 (2010)
rnsc(edges) Restricted Neighbourhood Search King et al., Bioinformatics 20 (2004)
scluster(edges) SCluster (Jerarca) Aldecoa & Marín, PLoS ONE 5 (2010)
uvcluster(edges) UVCluster (Jerarca) Arnau et al., Bioinformatics 21 (2005)

Optional parameters: timeout=None (seconds), and algorithm-specific settings (e.g. iterations for scluster/uvcluster, attempts for infomap).

Modularity-based

Function Algorithm Reference
duch_arenas(edges) Extremal optimisation for modularity (pure Python) Duch & Arenas, Phys Rev E 72 (2005)

Surprise optimisers

These directly maximise Surprise using different strategies:

Function Description
surprise_refine(edges, partition) Louvain-style greedy refinement (node relabelling + community merges). Pure post-processor — can sharpen any initial partition. Params: max_iters=100, allow_merge=True.
surprise_anneal(edges, init_partition=None) Simulated Annealing global optimiser. Escapes local optima via Metropolis–Hastings. Params: T_start=2.0, T_end=1e-4, steps=200_000, singleton_prob=0.25, seed=None. Finishes with a surprise_refine polish.
surprise_louvain(edges) Louvain optimiser of the exact (hypergeometric) Surprise: algorithm SP0 of Tang et al. (2019), i.e. their Louvain_process (multilevel node moves + aggregation into super nodes) from the singleton partition. n_restarts=1 (the paper's algorithm).
surprise_fagso(edges) FAGSO (Jiang et al. 2014). Ranks edges by Jaccard similarity, greedily merges communities. O(m·log m).
surprise_sp2(edges) SP2 (Tang et al. 2019). Pre_CS → Louvain_process → Post_CS, transcribed from the paper's pseudo-code (Functions 2–4). n_restarts=1 (the paper's algorithm).
surprise_sp4(edges) SP4 (Tang et al. 2019). Pre_TS → Pre_CS → Louvain_process → Post_CS. Pre_CS and Louvain_process run on the Pre_TS-rewired network; Post_CS runs on the original network (post_cs_original=True, default; the paper does not specify it — False keeps the whole pipeline on the rewired network, as in 2.0.0). Params: tau=3, k=None (round(mean degree)), n_restarts=1.
pre_ts(edges) Pre_TS topology pre-processing (Tang et al. 2019): links each node to its k most similar nodes by cosine similarity of tau-step random-walk profiles.
surprise_m2(edges) M² (Marin Squared). Hybrid: FAGSO warm-start → asymptotic KL-divergence Louvain → exact Surprise refinement. Multi-restart (n_restarts=4).

Embedding-based

These learn node embeddings and cluster them with K-Means. Require optional dependencies (pip install gensim scikit-learn networkx or pip install node2vec scikit-learn networkx or pip install torch scipy scikit-learn networkx).

Function Algorithm Reference
deepwalk(edges) Random-walk + Word2Vec + K-Means Perozzi et al., KDD 2014
node2vec(edges) Biased random-walk + Word2Vec + K-Means Grover & Leskovec, KDD 2016
vgae(edges) Variational Graph Auto-Encoder (GCN-VAE) + K-Means Kipf & Welling, NeurIPS Workshop 2016

Common params: n_clusters=None (auto-estimated), dimensions=128, walk_length=80, num_walks=10, seed=None, refine=False (apply surprise_refine after clustering).

Batch execution

from pysurprise.algorithms import run_all

results = run_all(edges)                          # all 7 classic algorithms
results = run_all(edges, algorithms=["CPM", "UVCluster"], parallel=True)

run_all(edges, *, algorithms=None, timeout=None, parallel=False, n_workers=None) → dict[str, dict[str, int]]

Runs the requested algorithms (default: all 7 classic) and returns {name: partition}. Set parallel=True for multi-process execution.


3. Landscape exploration — pysurprise.landscape

Tools for analysing how Surprise changes as community structure is modified through merge and split operations.

Partition operations

Function Description
relabel(partition) Relabel community IDs to contiguous 0..K−1.
merge_communities(partition, c1, c2) Merge community c2 into c1, relabel.
split_community(partition, edges, community) Bisect a community by internal degree (or random). Params: method="degree", seed=42.

surprise_landscape(edges, partition) → LandscapeResult

Evaluates Surprise for all single-step merge/split neighbours of a partition.

from pysurprise.landscape import surprise_landscape

ls = surprise_landscape(edges, partition, operations="merge_split")
print(f"Current S = {ls.surprise_current:.1f}, K = {ls.k_current}")
print(f"Best merge: ΔS = {ls.best_merge.delta_surprise:+.2f}")
print(f"Best split: ΔS = {ls.best_split.delta_surprise:+.2f}")
  • operations — "merge", "split", or "merge_split" (default).
  • Returns LandscapeResult with .merges (list of MergeInfo), .splits (list of SplitInfo), .best_merge, .best_split, .best_move.

surprise_curve(edges, partition) → list[CurvePoint]

Traces S vs K by greedily merging (or splitting) communities.

from pysurprise.landscape import surprise_curve

curve = surprise_curve(edges, partition, direction="both",
                       keep_partitions=True, verbose=True)
for pt in curve:
    print(f"K={pt.k}  S={pt.surprise:.1f}  {pt.operation}")
  • direction — "merge" (K→1), "split" (K→N), or "both".
  • keep_partitions — if True, each CurvePoint.partition stores the full partition dict at that step.
  • Returns list of CurvePoint(k, surprise, operation, partition).

surprise_path(edges, partition) → list[PathStep]

Greedy walk that considers both merges and splits at each step, freely navigating the landscape (unlike surprise_curve which only goes in one direction).

from pysurprise.landscape import surprise_path

path = surprise_path(edges, partition, max_steps=50,
                     operations="merge_split", verbose=True)
  • Returns list of PathStep(step, k, surprise, operation, delta_surprise, partition).

metric_landscape(edges, partition, score_fn) → GenericLandscapeResult

Generic version of surprise_landscape — accepts any scoring function.

from pysurprise.landscape import metric_landscape
from pysurprise.metrics import modularity

ls_q = metric_landscape(edges, partition, modularity, metric_name="Q")

metric_curve(edges, partition, score_fn) → list[GenericCurvePoint]

Generic version of surprise_curve — traces any metric along the greedy merge path.

from pysurprise.landscape import metric_curve
from pysurprise.metrics import modularity

curve_q = metric_curve(edges, partition, modularity, label="Q", verbose=True)

Data classes

Class Fields
CurvePoint k, surprise, operation, partition
PathStep step, k, surprise, operation, delta_surprise, partition
MergeInfo c1, c2, surprise_after, delta_surprise, size_c1, size_c2
SplitInfo community, surprise_after, delta_surprise, size_before
LandscapeResult surprise_current, k_current, merges, splits, best_merge, best_split, best_move
GenericCurvePoint k, score, operation, partition
GenericMergeInfo c1, c2, score_after, delta_score, size_c1, size_c2
GenericSplitInfo community, score_after, delta_score, size_before
GenericLandscapeResult score_current, k_current, metric_name, merges, splits

4. Metrics — pysurprise.metrics

Partition comparison and quality metrics for benchmark evaluation.

Partition comparison

Function Description Range
nmi(partition1, partition2) Normalised Mutual Information [0, 1] (1 = identical)
vi(partition1, partition2) Variation of Information [0, ∞) (0 = identical)
nvi(partition1, partition2) Normalised VI = VI / log(n) [0, 1] (0 = identical)
ari(partition1, partition2) Adjusted Rand Index (−0.5, 1] (1 = identical)

All accept dict[str, int] partitions.

Graph-level

Function Description
modularity(edges, partition) Newman modularity Q. Requires networkx.
n_communities(partition) Number of distinct communities in a partition.

Composite / ranking

Function Description
performance(algo_scores) Performance P = K − avg_rank for each algorithm (single evaluation).
performance_over_reps(reps) Mean P averaged over multiple repetitions.
nmi_best_surprise(edges, partitions, gt) NMI of the partition that maximises Surprise (NMI_S).
nmi_best_modularity(edges, partitions, gt) NMI of the partition that maximises modularity (NMI_Q).

5. Benchmarks — pysurprise.benchmarks

Synthetic graph generators with known ground-truth community structure.

LFR benchmark

Power-law degree and community-size distributions. Uses the native C++ binary from Lancichinetti et al. (exact μ, supports τ₂ = 1).

from pysurprise.benchmarks import lfr_generate, lfr_benchmark, LFR_PAPER_PRESETS

# Generate at μ = 0.3
edges, gt, sizes = lfr_generate(1000, mu=0.3, seed=42)

# Generate + closed degradation
edges, gt = lfr_benchmark(1000, mu=0.1, degradation=0.5, mode="closed", seed=42)

# Paper preset
edges, gt = lfr_benchmark(**LFR_PAPER_PRESETS["2013_scirep_N1000"], mu=0.3, seed=42)
Function Description
lfr_benchmark(n_nodes, mu, ...) Full pipeline: generate + optional degradation. Params: degradation=0.0, mode="open" or "closed", average_degree, max_degree, tau1, tau2, min_community, max_community, seed.
lfr_generate(n_nodes, mu, ...) Generate only → (edges, gt, sizes).
lfr_degrade_closed(edges, gt, degradation) Apply closed degradation to an existing graph.
set_lfr_binary(path) Manually set the LFR binary path.
get_lfr_binary() Get the currently configured binary path.
describe_lfr(...) Print a human-readable description of LFR parameters.
LFR_PAPER_PRESETS Dict of preset configurations: "2011_N1000", "2011_N5000", "2012_closed_N1000", "2013_scirep_N1000", "2013_scirep_N5000".

Relaxed Caveman benchmark

Clique-based benchmark with tunable degradation.

from pysurprise.benchmarks import rc_benchmark, rc_generate, RC_PAPER_PRESETS

# Generate + degrade at 30%
edges, gt = rc_benchmark(512, 16, degradation=0.3, mode="open")

# Two-step: generate cliques, then degrade at multiple D values
from pysurprise.benchmarks import rc_generate, rc_degrade_open
clique_edges, gt, sizes = rc_generate(512, 16, seed=42)
edges_30 = rc_degrade_open(clique_edges, degradation=0.3, seed=100)
edges_50 = rc_degrade_open(clique_edges, degradation=0.5, seed=200)
Function Description
rc_benchmark(n_nodes, n_communities, degradation, ...) Full pipeline. Params: pielou=None, sizes=None, mode="open" / "closed" / "removal", min_size=3, seed=None.
rc_generate(n_nodes, n_communities, ...) Generate cliques only → (edges, gt, sizes).
rc_degrade_open(edges, degradation, ...) Open degradation (replace intra edges with random).
rc_degrade_closed(edges, gt, degradation, ...) Closed degradation (rewire within budget).
rc_degrade_removal(edges, degradation, ...) Pure edge removal.
rc_degrade(...) Alias for rc_degrade_open.
pielou_index(sizes) Compute Pielou's evenness index for community sizes.
broken_stick_sizes(n_nodes, n_communities, seed) Generate random community sizes via broken-stick model.
describe_rc(...) Print human-readable RC parameter description.
RC_PAPER_PRESETS Dict of paper presets.
RC_ASYMMETRIC_SIZES Asymmetric community sizes from Aldecoa & Marín (2011).

6. Parallel execution — pysurprise.parallel

pmap(func, tasks, *, n_workers=None, cache_dir=None, desc=None, on_error="warn") → list

Parallel map with optional disk caching. Results are returned in order.

from pysurprise.parallel import pmap

def experiment(p):
    edges, gt, _ = lfr_generate(p["n"], p["mu"], seed=p["seed"])
    return evaluate(edges, gt)

tasks = [{"n": 1000, "mu": mu, "seed": 42 + r * 100}
         for mu in [0.1, 0.2, 0.3] for r in range(10)]

results = pmap(experiment, tasks, n_workers=4, cache_dir="./cache")
  • func must be a top-level (module-scope) function for pickling.
  • cache_dir — when set, results are cached to disk; rerunning skips completed tasks.
  • on_error — "warn" (store None) or "raise".

evaluate(edges, ground_truth, ...) → dict

Standardised benchmark evaluation: run algorithms + compute metrics.

from pysurprise.parallel import evaluate

result = evaluate(edges, gt, algorithms=["CPM", "UVCluster"],
                  metrics=("nmi", "surprise", "modularity"))
# result["algorithms"]["UVCluster"]["nmi"] → 0.95
# result["best_surprise_nmi"] → 0.97
  • algorithms — subset of algorithm names (default: all 7 classic).
  • metrics — tuple of "nmi", "surprise", "modularity".
  • parallel / n_workers — run algorithms in parallel.

7. Plotting — pysurprise.plotting

Publication-ready figures. All functions return (Figure, Axes) and accept an optional ax parameter for embedding in existing figures.

Core plots

Function Description
plot_sweep(param_values, series, ...) Line plot: metric vs parameter (μ, D) with multiple series.
plot_ratio(param_values, ratios, ...) NMI_Q / NMI_S ratio vs parameter.
plot_performance(param_labels, algo_performance, ...) Grouped bar chart of Performance P = K − avg_rank.
plot_heatmap(param_labels, algo_values, ...) Algorithm × parameter heatmap (NMI, S, etc.).
plot_community_sizes(partition, ...) Community size distribution (bar or histogram).

Paper figure composites

Function Description
plot_figure1(lfr_nmi_s, lfr_ratios, rc_nmi_s, rc_ratios, ...) Complete 4-panel Figure 1 (Aldecoa & Marín 2011): NMI_S and ratio for LFR and RC.
plot_figure2(lfr_performance, rc_performance, algo_names, ...) Two-panel Figure 2: Performance ranking bars for LFR and RC.

Landscape plots

Function Description
plot_surprise_curve(curve, ...) S vs K from surprise_curve(). Highlights max and optional true K.
plot_merge_heatmap(landscape, ...) ΔS heatmap for all pairwise merges from surprise_landscape().
plot_surprise_path(path, ...) Greedy walk trajectory from surprise_path(). Optional ΔS twin axis.

Dual metric comparison

Function Description
plot_dual_merge_heatmap(landscape_a, landscape_b, ...) Side-by-side merge heatmaps for two metrics (e.g. ΔS vs ΔQ).
plot_dual_landscape(curve_a, curve_b, ...) Two metric curves on dual y-axes (e.g. Surprise + Modularity vs K).

Aggregation helper

Function Description
aggregate_sweep(results, keys, ...) Convert raw pmap results into plot-ready dicts for plot_figure1 / plot_figure2.

Style constants

  • ALGO_COLORS_2011 — algorithm colour palette matching Aldecoa & Marín (2011).
  • CONFIG_STYLES — {config_name: {color, marker}} for LFR configs.
  • DEFAULT_COLORS — colourblind-friendly 8-colour cycle.

Credits

Developed by José Marín, based on the original SurpriseMe software by Rodrigo Aldecoa and Ignacio Marín. The bundled C++ binaries (Surprise computation, Jerarca, CPM, RB, RNSC, RN, Infomap) originate from SurpriseMe. The LFR benchmark binary is from Lancichinetti et al.

References

Aldecoa R, Marín I (2014). SurpriseMe: an integrated tool for network community structure characterization using Surprise maximization. Bioinformatics 30(7): 1041–1042.

Aldecoa R, Marín I (2011). Deciphering network community structure by Surprise. PLoS ONE 6(9): e24195.

Aldecoa R, Marín I (2013). Surprise maximization reveals the community structure of complex networks. Scientific Reports 3: 1060.

Aldecoa R, Marín I (2012). Closed benchmarks for network community structure characterization. Physical Review E 85: 026109.

Lancichinetti A, Fortunato S, Radicchi F (2008). Benchmark graphs for testing community detection algorithms. Physical Review E 78: 046110.

Jiang J Z, et al. (2014). A fast algorithm for community detection in networks by greedy surprise optimization. (FAGSO)

Tang Y-N, Xiang J, et al. (2019). An effective algorithm for optimizing Surprise in network community detection. IEEE Access 7: 148814–148827. (SP2, SP4)

Perozzi B, Al-Rfou R, Skiena S (2014). DeepWalk: Online Learning of Social Representations. KDD 2014.

Grover A, Leskovec J (2016). node2vec: Scalable Feature Learning for Networks. KDD 2016.

Kipf T, Welling M (2016). Variational Graph Auto-Encoders. NeurIPS Workshop on Bayesian Deep Learning.

License

GPL-3.0-or-later

Metadata

Release files for pysurprise 2.1.0

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

Source distribution (sdist)

Source distribution for pysurprise 2.1.0
File Size Uploaded
pysurprise-2.1.0.tar.gz 291.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pysurprise 2.1.0
File
pysurprise-2.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pysurprise-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pysurprise-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
pysurprise-2.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-32 Details
pysurprise-2.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pysurprise-2.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pysurprise-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pysurprise-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pysurprise-2.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-32 Details
pysurprise-2.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pysurprise-2.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pysurprise-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pysurprise-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pysurprise-2.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-32 Details
pysurprise-2.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pysurprise-2.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pysurprise-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pysurprise-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pysurprise-2.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-32 Details
pysurprise-2.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pysurprise-2.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pysurprise-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pysurprise-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
pysurprise-2.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-32 Details
pysurprise-2.1.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 19.5 MB

Release files / pysurprise-2.1.0.tar.gz

Download URL pysurprise-2.1.0.tar.gz
Size 291.9 kB
Tags Source
SHA-256 checksum
How to use checksums
609c6ad1d24b659b02c761587d36a32c9a3dc7a956d48d568e8b6d7c78cc8ac9
BLAKE2b-256 checksum
How to use checksums
5eb791cac983f2c7cf419c0defbb0148f7c90c47ab9ad6afb193c514e16482c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp313-cp313-win_amd64.whl

Download URL pysurprise-2.1.0-cp313-cp313-win_amd64.whl
Size 559.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
eed877221ed46b6c3191935ea0f4b0c24dbd8070a458588e94dc74fb47208224
BLAKE2b-256 checksum
How to use checksums
0cecba58d7620328f68982fe365d5f16931127f0d93982ddd95e94fd61df860d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
258e6bdc611d79a5d2c766f00191b39ec3081ddc4fa18b290f044b2cd50a72f3
BLAKE2b-256 checksum
How to use checksums
e97cea41507d7c5b877bcc16ff8cf6685a24034a0cdd0815dd8a95e793cdbe90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 601.9 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
80d7f90daaa79eebc90344cecaab13e366e9a4ee54bfd2088b76d7ab93ae4038
BLAKE2b-256 checksum
How to use checksums
3d0abbce5d10a46d06faad019c82ba4bb58922db07ecb7a34053ec12ea6316b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Size 623.8 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
88f4245a67a6ff8d439841c87369414c5587d539f7396939dae9dc1bdee0aadd
BLAKE2b-256 checksum
How to use checksums
4b30963fd8dc33a485d51cccb215e2b9a4a423307b6f5ac7161799862f9a842c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pysurprise-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 514.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d6622a7a65ab3fdd41ebe2a87cb5617b086245f7e809e63cf2457746dc3dee2c
BLAKE2b-256 checksum
How to use checksums
3a134b13df7fb9f950bdc34ed967bebb9726448cce60e771384340a736ac9b25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp312-cp312-win_amd64.whl

Download URL pysurprise-2.1.0-cp312-cp312-win_amd64.whl
Size 559.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
18e6d7946efcd2b6857ed6fe939ea411fe98070a33eb6c0e8cc7ce4c771de7a3
BLAKE2b-256 checksum
How to use checksums
223497f0cc95494e9dd1ac4d51b055d7f4daa64421c3f3d40c25fabecee01287
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
bfbef9f89361dba4b118907bc5ef8bb10ee12ce8ca6ec27845184edeba7819ce
BLAKE2b-256 checksum
How to use checksums
c7493c1f0e2dec1ab3aaa6945865a076faecb2723c2869271da5882914082e7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 601.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8b80d3bcba5a625c6836d06d33f6b2f47df96f2b442f8bcc15caff107c8f9432
BLAKE2b-256 checksum
How to use checksums
46b3b5f0d0e9765bb10107ff6b161094a99e05e46f1a13099066fade516c54fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Size 623.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
3d00a8e2f35561eb3d4d5b3f11d86e923c51dbc332b7a686c945518c601d8f56
BLAKE2b-256 checksum
How to use checksums
a8f4216ed4caaf6b98bef54e21c55bc1df1cdd515bb28d035d770b8080d935e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pysurprise-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 514.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d58fa6960c63e9aea530046dce7da665aaf5dadfd4dda20eba84bb8842c8119d
BLAKE2b-256 checksum
How to use checksums
609f2a756ed18b0dbcaa997ea4f6de1a50e4a30954a1f5794f5ac136110a67d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp311-cp311-win_amd64.whl

Download URL pysurprise-2.1.0-cp311-cp311-win_amd64.whl
Size 557.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
fcc84c960cf224973d81aa70ddd9ac86b1d0c85bbd6a124ca9ae8964a124b500
BLAKE2b-256 checksum
How to use checksums
7cc03d912de98e9aa321fbfa88413facfcc9ad1025b02d42b59505b3ab759227
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
092596dc79bbd0c0dcdf23260504ccb7b245407e01c0f8cfc6e74a133c0aa752
BLAKE2b-256 checksum
How to use checksums
fce1e2881f3d3ae87114a32b75fd65ca49f1d095765993838ca8ad9fa181ab14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 602.1 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f0453bb2431eb31e59b42e5cac889bd37f2971ab45a7a3962a4f0829c3b97247
BLAKE2b-256 checksum
How to use checksums
aebb7a37e7abdac78d5e81c74bc240dc21500677b5dfebdad7f61e785932b4d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Size 623.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
ef25c753c925c3790f05792e91f81561fb3ec4540a53fa8a023ebfdb3790eb6e
BLAKE2b-256 checksum
How to use checksums
9b60e2600ed0b5da6bab189706d0657c51163dd0288aecfbbc8224d284a46423
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pysurprise-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 514.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce445196d7b8951c3bfc6e7a44fdd1d20e18bf29739b780b73811d14312621a2
BLAKE2b-256 checksum
How to use checksums
a02bd121a5785f87a20aec38498b49dde7060742337e0c5a54a7bfc7826329bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp310-cp310-win_amd64.whl

Download URL pysurprise-2.1.0-cp310-cp310-win_amd64.whl
Size 556.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
27082b2511baa01fab900de6cfc449114eed17204829cf598cc0847ac3cadeea
BLAKE2b-256 checksum
How to use checksums
7bd9c7ccbf420747b7029a745d1f078a5f5068a4cf7c50a48187a85f5a19f159
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3e2f168f6901659e3607344e2b36cde0af3b4f0c09ac5f964b81c62ab081ab9a
BLAKE2b-256 checksum
How to use checksums
faf76a1164ca961064476c76ae6b71c274b4219205586cb9d7a887765b6d97f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 600.5 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ff3d933d1806bcccc4fce1f4d919983d0574c3a86bbd6115be8235ca0d0edf2a
BLAKE2b-256 checksum
How to use checksums
69fb70b523ae1a97d5f1f2b182b51d07a333f9c75cae4ebc72fc2b4f79cc794a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Size 622.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
e9281f360bb7e75a458d58cb469b75af85d44386b96f47ea3951670878818081
BLAKE2b-256 checksum
How to use checksums
493a2315540761afebda3513263366069c9f368040e6eaea04ed2ab58307e724
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pysurprise-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
Size 512.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b336ea810943d1a91ca0e1274d94aefb9e7264ddd37d9482feadf7e441b1e26f
BLAKE2b-256 checksum
How to use checksums
5a4aabd264620157d06ff96360fd2859e3125a51019e5ebcb9eecbd709d7f280
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp39-cp39-win_amd64.whl

Download URL pysurprise-2.1.0-cp39-cp39-win_amd64.whl
Size 556.8 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
151368e3fa303ea2b8e1df2f00f9e8f333f1e449a9243de9d19da98a672785dc
BLAKE2b-256 checksum
How to use checksums
f619d407e65694c08919edbbfb32f810c36b15729c86acfcfb08ddf006349428
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4225dd90a85eab55f40cc5afafd6eaf32565efe5dd19250e30662ec3f14f4843
BLAKE2b-256 checksum
How to use checksums
b8d77efa38f57c46d9ef5a27633d0bc5f1f5b32b7d6411fc97bad43bbc215c5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 600.6 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4951078cf08dee9f0850f6bc6fd08c18275fe8158f7807c9a63a728a67a9700c
BLAKE2b-256 checksum
How to use checksums
85da61fe70def5be1321ccee05a5023016a1ece460b827b753a81833aba71fa4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Size 622.9 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
b5992dd04e550c95400baf280d25b66ac4e511a176f7cc7aa311273686d2f89b
BLAKE2b-256 checksum
How to use checksums
06b386dfde8558314aed6a4348e2bf6ff12a32b993e87f907088ef6472a571df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pysurprise-2.1.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL pysurprise-2.1.0-cp39-cp39-macosx_11_0_arm64.whl
Size 512.9 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4447a38b2fff87248776307f2f29307b928942d065dced53138a36ee4e0b6db5
BLAKE2b-256 checksum
How to use checksums
9b6b0167d1d16b8a3d5664814822554e3af8d1c8f0ae6d92a07f63f6db3ffbd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.1.0 This release

26 release files

2.0.0

26 release files

1.2.0

26 release files

1.1.1

31 release files

1.1.0

1 release file

1.0.1

31 release files

1.0.0

1 release file

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