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)]orlist[(int, int)]: undirected edge list. - partition —
dict[node, int]orlist[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
LandscapeResultwith.merges(list ofMergeInfo),.splits(list ofSplitInfo),.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, eachCurvePoint.partitionstores 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pysurprise-2.0.0.tar.gz | 291.3 kB | Details |
Built distributions (wheels)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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