Skip to main content

PyReachability

CI PyPI DOI Python License

Fast graph reachability methods with a C++17 core and an ergonomic Python API.

A reachability query asks: given a directed graph and two vertices u and v, is there a directed path from u to v? PyReachability packages a representative, best-in-class set of reachability indexing methods under a single, common interface — so you can build an index once and answer millions of queries fast, and swap methods to fit your graph's size/memory/query-time trade-off.

The library has a high-performance C++17 core exposed through Cython (C++ mode), an extensible method catalog (each method is a plug-in implementing one interface), and a reproducible, catalog-driven benchmark harness (benchmarks/run_benchmark.py).

Status: v0.1.0 — 25 methods implemented and verified against the BFS/DFS oracle. The static half is all 22 static plain-reachability indexes of the CSUR 2025 survey (Table 1) plus the two baselines, spanning every static index class — traversal and transitive-closure baselines, interval/tree-cover labeling, the 2-hop family, approximate transitive closure, and chain covers. Plus one dynamic method, FelinePK — seeded from a graph, then maintained under edge/vertex insertions and deletions — from outside the survey; see docs/methods.md for its provenance. See the Roadmap for what's next.


Installation

From PyPI (wheels for Linux/macOS/Windows, Python 3.9–3.13):

pip install pyreachability

From source (a C++17 compiler and CMake ≥ 3.15 are required to build):

git clone https://github.com/reneveloso/PyReachability.git
cd PyReachability
pip install .

For development (editable install + test extras):

pip install -e ".[test]"

Pre-built wheels on PyPI (pip install pyreachability, no compiler needed) are planned for a later milestone.

Quickstart

import numpy as np
from pyreachability import Graph
from pyreachability.static import BFSDFS

# Build a graph from a NumPy edge list: edges 0->1, 1->2, 2->0 (a cycle), 3 isolated.
src = np.array([0, 1, 2], dtype=np.int32)
dst = np.array([1, 2, 0], dtype=np.int32)
g = Graph.from_edges(src, dst, num_nodes=4)

# Pick a method, build its index, then query.
idx = BFSDFS()
idx.build(g)

idx.query(0, 2)        # True  (0 -> 1 -> 2)
idx.query(0, 3)        # False (3 is unreachable)
idx.query(3, 3)        # True  (reachability is reflexive)

# Batch queries: (M, 2) int array -> (M,) bool array.
pairs = np.array([[0, 2], [2, 0], [0, 3]], dtype=np.int32)
idx.query_batch(pairs) # array([ True,  True, False])

from_edges also accepts a single (E, 2) array of [u, v] rows:

edges = np.array([[0, 1], [1, 2], [2, 0]], dtype=np.int32)
g = Graph.from_edges(edges, num_nodes=4)

Load a graph from a file (.gz is decompressed transparently):

g = Graph.from_file("graph.txt", fmt="edgelist")        # one "u v" edge per line
g = Graph.from_file("graph.scc.gra.gz", fmt="gra")      # GRAIL/GREACH adjacency format

Export the edges back out (inverse of from_edges, reconstructed from CSR):

src, dst = g.to_edges()

Discover available methods dynamically through the catalog:

from pyreachability import catalog
catalog.methods()          # ['3hop', 'bfl', 'bfsdfs', 'chaincover', 'dl', 'dual', 'feline', 'feline-pk', 'ferrari', 'grail', 'gripp', 'hl', 'ip', 'optchain', 'oreach', 'pathhop', 'pathtree', 'pll', 'preach', 'sspi', 'tc', 'tfl', 'tol', 'treecover', 'twohop']
Method = catalog.get("bfsdfs")
idx = Method()

catalog.methods() mixes both halves; ask for one explicitly when that matters (e.g. a benchmark whose build-once cost has no dynamic counterpart):

catalog.methods(kind="static")     # the 24 build-once-then-read-only methods
catalog.methods(kind="dynamic")    # ['feline-pk']

Dynamic methods live in their own subpackage — the import says which half you are in:

from pyreachability.dynamic import FelinePK

A runnable version of this walkthrough lives in examples/quickstart.py.

Methods

Every method implements the same ReachabilityIndex interface (build / query / query_batch / index_size_bytes) and is registered in the catalog. A method only enters the library if it has a peer-reviewed publication.

Each Reference cell names the source and links ([N]) to its full citation in References.

Method Family Status Reference
BFSDFS online traversal (baseline / oracle) ✅ implemented CLRS, Introduction to Algorithms [1]
TC transitive closure (bitset) ✅ implemented Warshall, JACM 1962 [2]
TreeCover tree / interval cover ✅ implemented Agrawal, Borgida, Jagadish, SIGMOD 1989 [3]
GRAIL tree-cover, interval-label pruning ✅ implemented Yıldırım, Chaoji, Zaki, PVLDB 2010 [4]
FELINE refined online search (2 topological orders) ✅ implemented Veloso, Cerf, Meira Jr., Zaki, EDBT 2014 [5]
PLL 2-hop labeling ✅ implemented Yano, Akiba, Iwata, Yoshida, CIKM 2013 [6]
BFL approximate TC (Bloom filters) ✅ implemented Su, Zhu, Wei, Yu, TKDE 2017 [7]
ChainCover chain-decomposition TC compression ✅ implemented Jagadish, ACM TODS 1990 [8]
PReaCH contraction hierarchies + bidirectional search ✅ implemented Merz & Sanders, ESA 2014 [9]
TwoHop 2-hop labeling (near-minimum greedy cover) ✅ implemented Cohen, Halperin, Kaplan, Zwick, SICOMP 2003 [10]
TFLabel 2-hop labeling via topological folding ✅ implemented Cheng, Huang, Wu, Fu, SIGMOD 2013 [11]
TOL 2-hop labeling, contribution-score order ✅ implemented Zhu, Lin, Wang, Xiao, SIGMOD 2014 [12]
HL hierarchical 2-hop (recursive backbone) ✅ implemented Jin & Wang, PVLDB 2013 [13]
OReach constant-time observations + guided fallback ✅ implemented Hanauer, Schulz, Trummer, ACM JEA 2022 [14]
ThreeHop 3-hop: chains as highways (TC-contour compression) ✅ implemented Jin, Xiang, Ruan, Fuhry, SIGMOD 2009 [15]
PathHop path-hop: trees as highways (residual-TC compression) ✅ implemented Cai & Poon, CIKM 2010 [16]
Ferrari budgeted exact/approx intervals + guided search ✅ implemented Seufert, Anand, Bedathur, Weikum, ICDE 2013 [17]
DualLabeling tree intervals + transitive link table (sparse graphs) ✅ implemented Wang, He, Yang, Yu, Yu, ICDE 2006 [18]
TreeSSPI tree-cover + predecessor index + guided search ✅ implemented Chen, Gupta, Kurul, VLDB 2005 [19]
GRIPP pre/postorder order-tree instances + hop technique ✅ implemented Trißl & Leser, SIGMOD 2007 [20]
PathTree path-tree cover (3-tuple labels) + residual TC ✅ implemented Jin, Ruan, Xiang, Wang, ACM TODS 2011 [21]
IP independent-permutation labels (approx TC) + guided search ✅ implemented Wei, Yu, Lu, Jin, PVLDB 2014 [22]
OptimalChainCover minimum-chain decomposition (Dilworth) + chain labels ✅ implemented Chen & Chen, ICDE 2008 [23]
DL distribution labeling (2-hop, equivalent to PLL) ✅ implemented Jin & Wang, PVLDB 2013 [13]

Together these cover all 22 static plain-reachability indexes of the CSUR 2025 survey's Table 1, plus the two baselines — see docs/methods.md for the source-backed coverage map (including why the four dynamic-only rows are deferred).

See docs/architecture.md for how the pieces fit together and how to add a new method to the catalog, docs/fidelity.md for how faithfully each method follows its source publication, and docs/AI_GUIDE.md for contributor conventions, the method inclusion policy, and verified references.

Roadmap

The library is built in milestones, each producing working, tested software:

  1. Foundation ✅ — build system, CSR graph, SCC condensation, catalog, BFSDFS oracle, property-based tests, CI.
  2. Representative methods ✅ — GRAIL, TC, TreeCover, FELINE, PLL (one+ per index class of the survey, plus the baselines).
  3. Benchmark harness + datasets ✅ — benchmarks/run_benchmark.py compares build time, index size, and query time across all methods vs the BFS/DFS oracle on standard DAGs (bash benchmarks/fetch_datasets.sh).
  4. Comprehensive catalog ✅ — all 22 static plain-reachability indexes of the CSUR 2025 survey (Table 1) plus the two baselines: 24 methods implemented. The method list is taken from a peer-reviewed survey, not chosen ad hoc — see docs/methods.md for the coverage map.
  5. First public release ✅ — PyPI wheels, Zenodo DOI, GitHub Release. Docs site follows in v0.2.0.
  6. The dynamic half ✅ — indexes that are maintained under updates rather than rebuilt: the DynamicReachabilityIndex contract (capabilities declared as data, since the published methods do not form a clean incremental/fully-dynamic hierarchy), catalog.methods(kind=...), a C++ substrate under src/cpp/dynamic/, and its first inhabitant, FelinePK. A dynamic index maintains its own SCC condensation instead of condensing once and freezing.

Still ahead: the survey's four dynamic-only Table 1 rows — DAGGER, U2-hop, DBL, and HOPI (the row CSUR 2025 lists as "Ralf et al.") — all fully dynamic except DBL, which is insertion-only; and label-constrained / path-constrained reachability (edge-labeled graphs, the survey's Table 2). See docs/methods.md for per-method citations and caveats, including the two that affect DAGGER: it is an arXiv preprint, and its reference code is GPL v3 against this project's MIT licence, so it must be written from the paper rather than ported.

Benchmarks

bash benchmarks/fetch_datasets.sh                     # standard SIGMOD'08 DAGs -> benchmarks/data/
python benchmarks/run_benchmark.py benchmarks/data/*.gra --csv results.csv

The harness builds every catalog method on each graph and reports construction time, index size, and average query time on random pairs, checking each method against the BFS/DFS oracle. Methods with super-linear construction are capped to smaller graphs (shown as skip); a tiny all-methods graph can be generated with python benchmarks/make_synthetic.py.

Development

pip install -e ".[test]"     # build + install with test deps
pytest -v                    # Python test suite (incl. property-based tests)

# C++ unit tests (doctest):
cmake -S . -B build-cpp -DCMAKE_BUILD_TYPE=Debug
cmake --build build-cpp --target cpp_tests
./build-cpp/cpp_tests

CI runs the suite on Ubuntu for every push to main; the full Linux/macOS/Windows × Python 3.9–3.13 matrix runs on pull requests and manual dispatches.

Citing

If you use PyReachability in academic work, please cite it via CITATION.cff (GitHub renders a "Cite this repository" button). The accompanying Software Impacts article reference will be added on publication.

References

Every catalog method follows a peer-reviewed publication. The Methods table links each method to its entry below.

[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms, 3rd ed. MIT Press, 2009.

[2] S. Warshall. A theorem on Boolean matrices. Journal of the ACM, 9(1):11–12, 1962. doi:10.1145/321105.321107

[3] R. Agrawal, A. Borgida, and H. V. Jagadish. Efficient management of transitive relationships in large data and knowledge bases. In ACM SIGMOD, pp. 253–262, 1989. doi:10.1145/67544.66950

[4] H. Yıldırım, V. Chaoji, and M. J. Zaki. GRAIL: Scalable reachability index for large graphs. PVLDB, 3(1):276–284, 2010. doi:10.14778/1920841.1920879

[5] R. R. Veloso, L. Cerf, W. Meira Jr., and M. J. Zaki. Reachability queries in very large graphs: A fast refined online search approach. In EDBT, pp. 511–522, 2014. doi:10.5441/002/edbt.2014.46

[6] Y. Yano, T. Akiba, Y. Iwata, and Y. Yoshida. Fast and scalable reachability queries on graphs by pruned labeling with landmarks and paths. In CIKM, pp. 1601–1606, 2013. doi:10.1145/2505515.2505724

[7] J. Su, Q. Zhu, H. Wei, and J. X. Yu. Reachability querying: Can it be even faster? IEEE TKDE, 29(3):683–697, 2017. doi:10.1109/TKDE.2016.2631160

[8] H. V. Jagadish. A compression technique to materialize transitive closure. ACM TODS, 15(4):558–598, 1990. doi:10.1145/99935.99944

[9] F. Merz and P. Sanders. PReaCH: A fast lightweight reachability index using pruning and contraction hierarchies. In ESA, LNCS 8737, pp. 701–712, 2014. doi:10.1007/978-3-662-44777-2_58

[10] E. Cohen, E. Halperin, H. Kaplan, and U. Zwick. Reachability and distance queries via 2-hop labels. SIAM Journal on Computing, 32(5):1338–1355, 2003. doi:10.1137/S0097539702403098

[11] J. Cheng, S. Huang, H. Wu, and A. W.-C. Fu. TF-Label: A topological-folding labeling scheme for reachability querying in a large graph. In ACM SIGMOD, pp. 193–204, 2013. doi:10.1145/2463676.2465286

[12] A. D. Zhu, W. Lin, S. Wang, and X. Xiao. Reachability queries on large dynamic graphs: A total order approach. In ACM SIGMOD, pp. 1323–1334, 2014. doi:10.1145/2588555.2612181

[13] R. Jin and G. Wang. Simple, fast, and scalable reachability oracle. PVLDB, 6(14):1978–1989, 2013. doi:10.14778/2556549.2556578 (introduces both HL and DL)

[14] K. Hanauer, C. Schulz, and J. Trummer. O'Reach: Even faster reachability in large graphs. ACM Journal of Experimental Algorithmics, 27:1–27, 2022. doi:10.1145/3556540

[15] R. Jin, Y. Xiang, N. Ruan, and D. Fuhry. 3-HOP: A high-compression indexing scheme for reachability query. In ACM SIGMOD, pp. 813–826, 2009. doi:10.1145/1559845.1559930

[16] J. Cai and C. K. Poon. Path-Hop: Efficiently indexing large graphs for reachability queries. In CIKM, pp. 119–128, 2010. doi:10.1145/1871437.1871457

[17] S. Seufert, A. Anand, S. Bedathur, and G. Weikum. FERRARI: Flexible and efficient reachability range assignment for graph indexing. In IEEE ICDE, pp. 1009–1020, 2013. doi:10.1109/ICDE.2013.6544893

[18] H. Wang, H. He, J. Yang, P. S. Yu, and J. X. Yu. Dual labeling: Answering graph reachability queries in constant time. In IEEE ICDE, p. 75, 2006. doi:10.1109/ICDE.2006.53

[19] L. Chen, A. Gupta, and M. E. Kurul. Stack-based algorithms for pattern matching on DAGs. In VLDB, pp. 493–504, 2005.

[20] S. Trißl and U. Leser. Fast and practical indexing and querying of very large graphs. In ACM SIGMOD, pp. 845–856, 2007. doi:10.1145/1247480.1247573

[21] R. Jin, N. Ruan, Y. Xiang, and H. Wang. Path-Tree: An efficient reachability indexing scheme for large directed graphs. ACM TODS, 36(1):7:1–7:44, 2011. doi:10.1145/1929934.1929941

[22] H. Wei, J. X. Yu, C. Lu, and R. Jin. Reachability querying: An independent permutation labeling approach. PVLDB, 7(12):1191–1202, 2014. doi:10.14778/2732977.2732992

[23] Y. Chen and Y. Chen. An efficient algorithm for answering graph reachability queries. In IEEE ICDE, pp. 893–902, 2008. doi:10.1109/ICDE.2008.4497498

License

MIT © Renê Rodrigues Veloso

Release files for PyReachability 0.2.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 PyReachability 0.2.0
File Size Uploaded
pyreachability-0.2.0.tar.gz 228.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for PyReachability 0.2.0
File
pyreachability-0.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
pyreachability-0.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
pyreachability-0.2.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
pyreachability-0.2.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
pyreachability-0.2.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size: 15.9 MB

Release files / pyreachability-0.2.0.tar.gz

Download URL pyreachability-0.2.0.tar.gz
Size 228.8 kB
Tags Source
SHA-256 checksum
How to use checksums
176d51cce35084b4d2a7aedc26f6f627de166f4c0ddfde992a352b3ead07bed6
BLAKE2b-256 checksum
How to use checksums
2baa773c64cb6d302c30f5ea37af74b0b12fdf3cdf3f0d0f4958d57cfde88ded
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp313-cp313-win_amd64.whl

Download URL pyreachability-0.2.0-cp313-cp313-win_amd64.whl
Size 377.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
5bf83d48383aa4a3ee93bfacb9170da0821bfcb56fc903e1d0a691fc1540f74c
BLAKE2b-256 checksum
How to use checksums
e4cb53d3046ab05679d62fdf813f3a05deba91bd7ff419b6b2030724c0b8d066
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyreachability-0.2.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
e64ea4f950a018cb867dbcf45c65f664eb9ee1aee296fb78ee57f9ece46c42ab
BLAKE2b-256 checksum
How to use checksums
052670d7363870d325460cde6198e57e41cfb4d464abb262169e6e3a9670a5bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 440.3 kB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
660995dd0fa64cf27ed379eda788939131014ccc093385b57a7302fc7af2894a
BLAKE2b-256 checksum
How to use checksums
bc231e935be20fdf0077da402d8fa69090174659edc95a1308e882bf0443afe3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Size 383.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
70e92bb538082d205dcc0cba268806960073482afe73f3fea907b98b30040329
BLAKE2b-256 checksum
How to use checksums
4d7c055401cfa83253976ec3fadd503be81680291379b269266a5285b344b7c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 423.2 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
055f2cce73c483b10d0a3b75462cc81470fabd6c07b2b7958f84037554d1ea65
BLAKE2b-256 checksum
How to use checksums
4987ff51a3d10de7e2b10686e49f9311fec0da8ca46a68b298983ce7286eb544
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp312-cp312-win_amd64.whl

Download URL pyreachability-0.2.0-cp312-cp312-win_amd64.whl
Size 377.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
199a84546e5c97ab7cebad7afc6dcaca3418f1b20403f06ac0c4f9a1c7318155
BLAKE2b-256 checksum
How to use checksums
e96673d531f749a262524a334f0c09b46520c263a7bac89c955b59bb5e501303
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyreachability-0.2.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
e085b43a0001f183c81ed034cc75533b3ef2e2f6c55e762923e7973baef588e0
BLAKE2b-256 checksum
How to use checksums
6b9a62821bb3f8c62e8bf7438eea897d1b520b389b39aa57d5f8d2c037166ed9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 441.6 kB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1ea981beeff6cd09cd144603404fd40ae39c8cae2a71eeb368b3002dfafc050
BLAKE2b-256 checksum
How to use checksums
9ac0f063d4331687015875df63262a2c996098040a7c127ffcf0b6876dd2d195
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Size 384.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a384358ae4f772c3a3fd33dbf1080c169c095c5b766427fc95e67a4e2d1ee502
BLAKE2b-256 checksum
How to use checksums
5193c47c2093472be172e9fa43222c0b4bfafe0c43b54f045b197056a9f35e8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 424.0 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
4396a71ffd89da224bee449d0582dd8f6db8ade4524d9123932bc4720853336a
BLAKE2b-256 checksum
How to use checksums
992448e41aac55b2ef4ca01783fc1b4a3e0a0038186766c2c98c6cd51f575074
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp311-cp311-win_amd64.whl

Download URL pyreachability-0.2.0-cp311-cp311-win_amd64.whl
Size 385.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
15e9a593ba81ce0bf2f2eff691588936be36a165cf8baf23e40d1e7940c14048
BLAKE2b-256 checksum
How to use checksums
c64601f20d294a5b97cbd7d9d48234045fc53b511b8a397628455e2d2542ad7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyreachability-0.2.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
7000868461841bc4e06b7a4727bc3f1a1efd7194d3969bd924f0f9332b915924
BLAKE2b-256 checksum
How to use checksums
ed7c09ff9e213a0d9fde2b5a35d558d5ce0bca0b699df4207d6ab85cf641f80f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 459.3 kB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
53c507f1bd47cd440c5a423a89fd8c15402795a2a544240509d408cb342dba83
BLAKE2b-256 checksum
How to use checksums
70c71a438c90a09d2b0c58a69199ba0de6e7ad4b6d7d695a72cfab6f78ee0ac9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Size 383.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce04e4c72a01e058c0089942b1c4ef1346db79e5c700f37c390f064b47846308
BLAKE2b-256 checksum
How to use checksums
5a9686ae7aded0e57f3bd3ae41362dbb79dc9583532fcae68287f2cef852cf71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 423.9 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
01a45f39b9f37332e2606aaf1b44a0646e6eb0a95be27828d1bdfbc8f308939d
BLAKE2b-256 checksum
How to use checksums
fa03d750e795b21ef0da609316381dec49888f4ee490ffb40856efb47621dffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp310-cp310-win_amd64.whl

Download URL pyreachability-0.2.0-cp310-cp310-win_amd64.whl
Size 385.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
694e517c9c303e2b85b997359ac6e28bd0cae1a5ecd5a45bfc2943e4e98fe441
BLAKE2b-256 checksum
How to use checksums
5739d427846fa1fc7b05e03d148efb78d29539df8735677ef7c04d74e10a7766
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyreachability-0.2.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
fba6357a559729a418e9d13e188c8aab5aface194942a86a97eab558b64cf1bc
BLAKE2b-256 checksum
How to use checksums
0ee752b20f2a25e7a999d25cef9c3053218e573e1823324167eff4ef0df0820a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 457.8 kB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9136b3e55067f03cd65c45b9e5d7acabb098a592cf4cb5089a4cf97f9ddf664b
BLAKE2b-256 checksum
How to use checksums
fa6648b232ace681ef62078f2a3b76494598d39a40fa57cbec300fe347542795
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Size 384.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3dece20f943aade0cc041f4333c8d83c9ceac930cb6bdca4f3c3d2a2986b1bca
BLAKE2b-256 checksum
How to use checksums
d50ceb465dd29470ca454fec380a22811c5f679cafe4bca349e8f8f4180a63fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 424.8 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
10aada2cac729b9ec236ac4c8f2c0d5f15c11cd8380b4144dceb4bc0d9e857bf
BLAKE2b-256 checksum
How to use checksums
48a6d689931a8fb110593bf16568fe679a5622a83f7450899f50a4a2a7a0a2da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp39-cp39-win_amd64.whl

Download URL pyreachability-0.2.0-cp39-cp39-win_amd64.whl
Size 385.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
5a01fb01dddaec2727847ad9a5d818ce5e59a8c89f08f8bd47d5134ce77122ed
BLAKE2b-256 checksum
How to use checksums
e521a8ccfd4a979597d4865e653a9e0f4dd3728436b99a011e0bffacf9442a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL pyreachability-0.2.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
634f24ff0f593f3ffaff3ea140aa7fcf0728b1fbb0721ea4eca4ac12654f4ba6
BLAKE2b-256 checksum
How to use checksums
c436f5b0879c891bc5145302551a9950349f9b813da77c873ba2c0fa65f47905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 458.3 kB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d3042a5a368fc3a849e05369196e43435d6aceb08227116b1b1443b9330cf60a
BLAKE2b-256 checksum
How to use checksums
ec93ff25904fe689359468c931a99024223bd0f9965370d6a23ea8386eaac59a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Size 384.6 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0051e6c54b39b0b6a86dfd81fe60b3a80acced3e9c20a1c78f771a45dbe55586
BLAKE2b-256 checksum
How to use checksums
b3ea091d125f874ea9e23f509b8f1470126a8bf951847c57d08f5c56696ff8cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl

Download URL pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Size 425.0 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
82f817979e48c9413e9605ddcc3061f5c689baeeb3be9dd53369179ed344430b
BLAKE2b-256 checksum
How to use checksums
aaf2b302ec3c5075288212cd9d1fb8a6db9e9e33a7a3466da1368c0f9aba9cba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

26 release files

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