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; Surprise is optimised on the Pre_TS-rewired network. 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.0.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.0.0
File Size Uploaded
pysurprise-2.0.0.tar.gz 291.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pysurprise 2.0.0
File
pysurprise-2.0.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pysurprise-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pysurprise-2.0.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.0.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.0.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pysurprise-2.0.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pysurprise-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pysurprise-2.0.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.0.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.0.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pysurprise-2.0.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pysurprise-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pysurprise-2.0.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.0.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.0.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pysurprise-2.0.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pysurprise-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pysurprise-2.0.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.0.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.0.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pysurprise-2.0.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pysurprise-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pysurprise-2.0.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.0.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.0.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 19.4 MB

Release files / pysurprise-2.0.0.tar.gz

Download URL pysurprise-2.0.0.tar.gz
Size 291.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3c6bfde2b1eb5b9d47b50a2ce493fcdef4b32cd32ef2387227d549617d6f8f96
BLAKE2b-256 checksum
How to use checksums
a5c941fdfb908379cade111c2f9c2cd5e1a8f5558ca8c451207061fb2545d865
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.0.0-cp313-cp313-win_amd64.whl

Download URL pysurprise-2.0.0-cp313-cp313-win_amd64.whl
Size 557.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
dc186b610c8554574a0925f3d380d370ee54c3b6fe002052b3ef042b20d5482d
BLAKE2b-256 checksum
How to use checksums
1a2d7e854910e276a4838d3af40df764b1f18d55ee8149bd8b31d29e04e8627e
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.0.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.0.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
7517442d5b566433ef5c33d65d5a0a2cb7e9fb010d0d31743e847245637494d7
BLAKE2b-256 checksum
How to use checksums
2646f5d556a713ff0ca9e83d57530d6c0376f2af65efcaaf824aee1f5a069058
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.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 599.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a6291dc3fbfc0f8d8578f1a7b17330450dcf28080f3856500b6339c1cb1709a3
BLAKE2b-256 checksum
How to use checksums
1894aa64c9a861a1e2a7321cd24bb067b7d0bb2c980f279e365e6ea5f48c4c4f
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.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Size 620.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
a158b3db45444e6a753c65f58e2cd0d88924b97d184844cf3f2e5ab21c1bb327
BLAKE2b-256 checksum
How to use checksums
1eed3ac3ae6d0e09d7055b78df44549b8d468124d7087d7d4b0021bcf8e7d308
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.0.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pysurprise-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
Size 513.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2829542effeb36104d45f36f74cfd7db9ea80707eed215bcd664b10e71303ef3
BLAKE2b-256 checksum
How to use checksums
c54201f5acd005e72012b2f34c556f4e4b2e4931d5255a0b99927088d8278a6a
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.0.0-cp312-cp312-win_amd64.whl

Download URL pysurprise-2.0.0-cp312-cp312-win_amd64.whl
Size 557.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7763f771d2c9543ffe90653fcfd4a3cd10191c27e3e647e8d89285f6009937df
BLAKE2b-256 checksum
How to use checksums
5db2e3b838b0ea2a7db853026e9ed8a25cc48c760582d4066bf3749e237e71bd
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.0.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.0.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
565948640c3ff1a476fbca4377cc27c5bc5cfe86235c35b6babeca1cbd44bd8d
BLAKE2b-256 checksum
How to use checksums
72585fbc97c9a5d239c0e12b2bfc1c4175b2bb9282aa40da8538a749a6ef2e32
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.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 599.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
39229fbb66e2c1bc029889e23706c1a00d88935929bee19e30332dfa8e999b70
BLAKE2b-256 checksum
How to use checksums
4347cd907fad78514d22a8d5279752f9ec3b8168d416066a7eb5d4cf853a3054
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.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Size 619.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
163b01a69c2ab3425cd1cec9317c9876131ab55eb1c4ada58b86d57b45609d67
BLAKE2b-256 checksum
How to use checksums
4298f3d57a654612025d9fa3b3afea49c5433715005565fa35708e7fe3401f2a
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.0.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pysurprise-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
Size 513.9 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7b441b05d7b107356c9cfcc9001e60f58114c53ddbfff58c5a7172e13db874f6
BLAKE2b-256 checksum
How to use checksums
6000c85c93c4c11257b8fc2a62e384eff1eea468f7a6468bea3c3d9cb238a785
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.0.0-cp311-cp311-win_amd64.whl

Download URL pysurprise-2.0.0-cp311-cp311-win_amd64.whl
Size 555.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
bb8cec8f6c576fc096210ef88f1dc3d9383a68ae2925400ae6ac8ecaa167576a
BLAKE2b-256 checksum
How to use checksums
41fce4fa964bf78a932afd84af71139c7f3ad204744b85c9664d2f2769701e67
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.0.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.0.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
7ffc79d1e18df6053140b2fd389f9d530297a2fa7a9d46f85f50ad3a120f159e
BLAKE2b-256 checksum
How to use checksums
b9e46a3483bc7210f994c31c9f1caba13d53a61e3eaa6e6dc1a3eaa65554ee9f
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.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 599.4 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5bf29c7ae4747408d7d2202fefe14d54c51d9daaa0b0c7f11cce72596768ce86
BLAKE2b-256 checksum
How to use checksums
66b83883e0a55a64bc9c91c76f1491b0e7dde5ca94de2f6c077e2c85d95f0ef2
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.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Size 620.2 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
184dc4c9b4e6cc71f333a4b884307f6cf6146637782531502514bc94bfad24b8
BLAKE2b-256 checksum
How to use checksums
9a358abc3ea284a364aa15f04cffa846de20ff8600791826e589286ba6cd82fb
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.0.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pysurprise-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
Size 513.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fdda50ef6d2c61d01110e3941ace4a2802f4123ab078e09fb304c85c1729cf86
BLAKE2b-256 checksum
How to use checksums
22a8dd4463990c735c6eeb5997b3d85bc214fe6528a46de355afff16a00634a5
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.0.0-cp310-cp310-win_amd64.whl

Download URL pysurprise-2.0.0-cp310-cp310-win_amd64.whl
Size 554.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a091e918c6b273694ef644a789f53b19a8a3f1a2a075935e1b2b80b8cc788369
BLAKE2b-256 checksum
How to use checksums
7914b0ae062ef1f4d053bc348640fadc0de1fb7d669314f5c18bb167120b8642
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.0.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.0.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
21ccb9a0230d6e7acff47258296b1c3e66e649ef33e8a4f293d5ab1dc245937e
BLAKE2b-256 checksum
How to use checksums
ac153fa42ba164c1f62cdd76286807fe18a9e19094679d5ef2ff920da8ff89cd
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.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 597.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
273b50e5962273ffd31b210641316bbc7ebc78092d2af40845570ec538e8550b
BLAKE2b-256 checksum
How to use checksums
c77abdbabb2d800560e64a71bd8b11913ac6b2764c86b56e63f5fdd90d32ce84
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.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Size 618.8 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
4d381fec90c0e2be6fee0f555a269462056d8fb88dab6e73ae564f7db77179ad
BLAKE2b-256 checksum
How to use checksums
de037875d3bd3dcc58fce45d8e36ea4cef8c2d6122d0713b0e4701fc61f2438e
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.0.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pysurprise-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
Size 511.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
20130c1032801517b3b9f8c7a8042d76efc4eef5b0d8d375defb8a2bf294f812
BLAKE2b-256 checksum
How to use checksums
3b1aabf5bf6fb348bf1ba97e4895f970d5a5d82164ca19e75f8873b3b259b3cb
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.0.0-cp39-cp39-win_amd64.whl

Download URL pysurprise-2.0.0-cp39-cp39-win_amd64.whl
Size 555.0 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
d4b85dc09604b0e842afe2a8844dd5f9c3bf525cdb058f4d0e3cfff52c0cba9d
BLAKE2b-256 checksum
How to use checksums
231a6b3d3674da0baa3a2b7725122eeb4fbebcd375519d8663ed21f491c21ab6
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.0.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL pysurprise-2.0.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
795ee807d65cfa18a42d156751487c5425eb1a8004ff195fd63c9c7e236a844d
BLAKE2b-256 checksum
How to use checksums
43b28b506dfa3f649163fc1d328cb033e23e2db28013d12bb870df33d1590a68
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.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pysurprise-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 597.7 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
da0a0cacfbc86f7cc1e542002ab098bef88dbaf89d9c60b9060b9db8f7ae6112
BLAKE2b-256 checksum
How to use checksums
85b661f3826ccbc3f75df811ce689a6973f995c8b6cd7ba486f6e7186bd49987
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.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pysurprise-2.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Size 619.2 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
f9654eb819ca4a3d49b21b0102f4a6f66fa9a22d58b96acf47bebbb3a1fd6393
BLAKE2b-256 checksum
How to use checksums
a2648ef0f910e38dfb71689a639f4b1a47d46f5250fc6e6da831a4c8fbe3b663
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.0.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL pysurprise-2.0.0-cp39-cp39-macosx_11_0_arm64.whl
Size 511.8 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
06775ec3d0ad9f70e2949856ea70e2f71ca97c20c42468b4edad0f92d3a428d3
BLAKE2b-256 checksum
How to use checksums
3cdf7dc2fe14a0b0e145622d9dc56743870cbe2cb9454ab5d75108cda393ea19
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

2.1.0

26 release files

This release

2.0.0 This release

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