Skip to main content

Fast graph reachability methods (C++17 core, Python API)

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyreachability-0.2.0.tar.gz (228.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyreachability-0.2.0-cp313-cp313-win_amd64.whl (377.1 kB view details)

Uploaded CPython 3.13Windows x86-64

pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (440.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (383.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (423.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

pyreachability-0.2.0-cp312-cp312-win_amd64.whl (377.7 kB view details)

Uploaded CPython 3.12Windows x86-64

pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (441.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (384.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl (424.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pyreachability-0.2.0-cp311-cp311-win_amd64.whl (385.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (459.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (383.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (423.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pyreachability-0.2.0-cp310-cp310-win_amd64.whl (385.2 kB view details)

Uploaded CPython 3.10Windows x86-64

pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (457.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (384.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (424.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pyreachability-0.2.0-cp39-cp39-win_amd64.whl (385.5 kB view details)

Uploaded CPython 3.9Windows x86-64

pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (458.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (384.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl (425.0 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file pyreachability-0.2.0.tar.gz.

File metadata

  • Download URL: pyreachability-0.2.0.tar.gz
  • Upload date:
  • Size: 228.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyreachability-0.2.0.tar.gz
Algorithm Hash digest
SHA256 176d51cce35084b4d2a7aedc26f6f627de166f4c0ddfde992a352b3ead07bed6
MD5 bfbdbeed1ac24ae0c0b73b607e80d76a
BLAKE2b-256 2baa773c64cb6d302c30f5ea37af74b0b12fdf3cdf3f0d0f4958d57cfde88ded

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0.tar.gz:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5bf83d48383aa4a3ee93bfacb9170da0821bfcb56fc903e1d0a691fc1540f74c
MD5 e60a95786c090923cc266d9c8fdcc33d
BLAKE2b-256 e4cb53d3046ab05679d62fdf813f3a05deba91bd7ff419b6b2030724c0b8d066

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e64ea4f950a018cb867dbcf45c65f664eb9ee1aee296fb78ee57f9ece46c42ab
MD5 8c3c474f063e75658077076e9dca25b9
BLAKE2b-256 052670d7363870d325460cde6198e57e41cfb4d464abb262169e6e3a9670a5bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 660995dd0fa64cf27ed379eda788939131014ccc093385b57a7302fc7af2894a
MD5 bfdd4de8d99ac8807a960c042c61fcdf
BLAKE2b-256 bc231e935be20fdf0077da402d8fa69090174659edc95a1308e882bf0443afe3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 70e92bb538082d205dcc0cba268806960073482afe73f3fea907b98b30040329
MD5 703c2475b68345de687b2a3663373451
BLAKE2b-256 4d7c055401cfa83253976ec3fadd503be81680291379b269266a5285b344b7c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 055f2cce73c483b10d0a3b75462cc81470fabd6c07b2b7958f84037554d1ea65
MD5 9806163a06cca3c30c45a2c1690c6a68
BLAKE2b-256 4987ff51a3d10de7e2b10686e49f9311fec0da8ca46a68b298983ce7286eb544

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 199a84546e5c97ab7cebad7afc6dcaca3418f1b20403f06ac0c4f9a1c7318155
MD5 cb527910eb97719f109b053e1fddb1a4
BLAKE2b-256 e96673d531f749a262524a334f0c09b46520c263a7bac89c955b59bb5e501303

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e085b43a0001f183c81ed034cc75533b3ef2e2f6c55e762923e7973baef588e0
MD5 04d2a438405d7d7f545e4ea12bb2998d
BLAKE2b-256 6b9a62821bb3f8c62e8bf7438eea897d1b520b389b39aa57d5f8d2c037166ed9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e1ea981beeff6cd09cd144603404fd40ae39c8cae2a71eeb368b3002dfafc050
MD5 60c014cb88eb223b2c57c6566ded75b8
BLAKE2b-256 9ac0f063d4331687015875df63262a2c996098040a7c127ffcf0b6876dd2d195

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a384358ae4f772c3a3fd33dbf1080c169c095c5b766427fc95e67a4e2d1ee502
MD5 e2fcd751748b637e9d83f0d0dc499c4f
BLAKE2b-256 5193c47c2093472be172e9fa43222c0b4bfafe0c43b54f045b197056a9f35e8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4396a71ffd89da224bee449d0582dd8f6db8ade4524d9123932bc4720853336a
MD5 426b73009bc0ebd94d6dbcfa876d1dfb
BLAKE2b-256 992448e41aac55b2ef4ca01783fc1b4a3e0a0038186766c2c98c6cd51f575074

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15e9a593ba81ce0bf2f2eff691588936be36a165cf8baf23e40d1e7940c14048
MD5 0c6fca1bda4da892f9e66cd6a31374c6
BLAKE2b-256 c64601f20d294a5b97cbd7d9d48234045fc53b511b8a397628455e2d2542ad7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7000868461841bc4e06b7a4727bc3f1a1efd7194d3969bd924f0f9332b915924
MD5 733baaf4b57bcb59715a23814dbdb788
BLAKE2b-256 ed7c09ff9e213a0d9fde2b5a35d558d5ce0bca0b699df4207d6ab85cf641f80f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 53c507f1bd47cd440c5a423a89fd8c15402795a2a544240509d408cb342dba83
MD5 6fafeca075acfb90fd4e88a41b18eaa6
BLAKE2b-256 70c71a438c90a09d2b0c58a69199ba0de6e7ad4b6d7d695a72cfab6f78ee0ac9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce04e4c72a01e058c0089942b1c4ef1346db79e5c700f37c390f064b47846308
MD5 ed2d0be2f3c5fd4f5d22a2e0a9c5a6cf
BLAKE2b-256 5a9686ae7aded0e57f3bd3ae41362dbb79dc9583532fcae68287f2cef852cf71

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 01a45f39b9f37332e2606aaf1b44a0646e6eb0a95be27828d1bdfbc8f308939d
MD5 86607c8a4015df217e0fb8b7b3c9d34f
BLAKE2b-256 fa03d750e795b21ef0da609316381dec49888f4ee490ffb40856efb47621dffb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 694e517c9c303e2b85b997359ac6e28bd0cae1a5ecd5a45bfc2943e4e98fe441
MD5 49ba4a532973d1766d88a29265ae097f
BLAKE2b-256 5739d427846fa1fc7b05e03d148efb78d29539df8735677ef7c04d74e10a7766

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fba6357a559729a418e9d13e188c8aab5aface194942a86a97eab558b64cf1bc
MD5 9802d53767e0e8746de7ac61a3615eee
BLAKE2b-256 0ee752b20f2a25e7a999d25cef9c3053218e573e1823324167eff4ef0df0820a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9136b3e55067f03cd65c45b9e5d7acabb098a592cf4cb5089a4cf97f9ddf664b
MD5 f207d7bce837e3a9d80fd107c8aa997c
BLAKE2b-256 fa6648b232ace681ef62078f2a3b76494598d39a40fa57cbec300fe347542795

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3dece20f943aade0cc041f4333c8d83c9ceac930cb6bdca4f3c3d2a2986b1bca
MD5 5384b36b85425c9fa9a0cf19b748bcea
BLAKE2b-256 d50ceb465dd29470ca454fec380a22811c5f679cafe4bca349e8f8f4180a63fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 10aada2cac729b9ec236ac4c8f2c0d5f15c11cd8380b4144dceb4bc0d9e857bf
MD5 3135fef5e824b30829ec0c194ec16e9f
BLAKE2b-256 48a6d689931a8fb110593bf16568fe679a5622a83f7450899f50a4a2a7a0a2da

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5a01fb01dddaec2727847ad9a5d818ce5e59a8c89f08f8bd47d5134ce77122ed
MD5 7a930ea3c8fd1c58f0a5fca3b9fed788
BLAKE2b-256 e521a8ccfd4a979597d4865e653a9e0f4dd3728436b99a011e0bffacf9442a91

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 634f24ff0f593f3ffaff3ea140aa7fcf0728b1fbb0721ea4eca4ac12654f4ba6
MD5 dc11471c7d18d7db7fa70af51684a535
BLAKE2b-256 c436f5b0879c891bc5145302551a9950349f9b813da77c873ba2c0fa65f47905

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3042a5a368fc3a849e05369196e43435d6aceb08227116b1b1443b9330cf60a
MD5 6bff3db941b937518a7e8eed987a223d
BLAKE2b-256 ec93ff25904fe689359468c931a99024223bd0f9965370d6a23ea8386eaac59a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0051e6c54b39b0b6a86dfd81fe60b3a80acced3e9c20a1c78f771a45dbe55586
MD5 328136aa446756abc8a19da1cd7d1cc3
BLAKE2b-256 b3ea091d125f874ea9e23f509b8f1470126a8bf951847c57d08f5c56696ff8cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 82f817979e48c9413e9605ddcc3061f5c689baeeb3be9dd53369179ed344430b
MD5 ddc43c2436e1a8b95cea367a0fb7b5fe
BLAKE2b-256 aaf2b302ec3c5075288212cd9d1fb8a6db9e9e33a7a3466da1368c0f9aba9cba

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyreachability-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: release.yml on reneveloso/PyReachability

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page