Skip to main content

Fast road network fragility analysis with contraction hierarchies

Project description

Gravel

Fast road network fragility analysis at scale.

License: Apache 2.0 Python 3.10+ C++20

Gravel is a C++ library (with Python bindings) for computing how vulnerable road networks are to edge failures. Given a graph, it answers questions like:

  • "How isolated does this location become when 10% of its roads fail?"
  • "Which counties are most dependent on a single critical route?"
  • "What's the composite fragility score for every US county?"

The library is built around contraction hierarchies for fast shortest-path queries, and a Dijkstra + incremental SSSP pipeline for edge-removal analysis. On a 200K-node county graph, it computes isolation fragility in ~2 seconds.

Installation

conda (recommended for C++ dependencies)

conda install -c conda-forge gravel-fragility

pip (source build — requires C++ compiler)

pip install gravel-fragility

For OSM data loading, install libosmium separately (brew install libosmium on macOS, apt install libosmium2-dev on Debian/Ubuntu).

From source

git clone https://github.com/rhoekstr/gravel.git
cd gravel
cmake -B build -DGRAVEL_BUILD_PYTHON=ON -DGRAVEL_USE_OSMIUM=ON
cmake --build build -j

Quick Start

Python

import gravel

# Load a road network (from OSM PBF)
graph = gravel.load_osm_graph("county.osm.pbf", gravel.SpeedProfile.car())

# Build contraction hierarchy (one-time cost)
ch = gravel.build_ch(graph)

# Compute isolation fragility for a location
cfg = gravel.LocationFragilityConfig()
cfg.center = gravel.Coord(35.43, -83.45)  # Bryson City, NC
cfg.radius_meters = 30000  # 30km
cfg.monte_carlo_runs = 20

result = gravel.location_fragility(graph, ch, cfg)
print(f"Isolation risk: {result.isolation_risk:.3f}")
print(f"Reachable nodes: {result.reachable_nodes}")
print(f"Directional coverage: {result.directional_coverage:.2f}")

C++

#include <gravel/gravel.h>

auto graph = gravel::load_osm_graph({"county.osm.pbf", gravel::SpeedProfile::car()});
auto ch = gravel::build_ch(*graph);

gravel::LocationFragilityConfig cfg;
cfg.center = {35.43, -83.45};
cfg.radius_meters = 30000;
cfg.monte_carlo_runs = 20;

auto result = gravel::location_fragility(*graph, ch, cfg);
std::cout << "Isolation risk: " << result.isolation_risk << "\n";

Key Features

Sub-library architecture

Six independent libraries with a strict dependency DAG — link only what you need:

Library Purpose Dependencies
gravel-core Graph representation, basic routing stdlib, OpenMP
gravel-ch Contraction hierarchy + blocked queries gravel-core
gravel-simplify Graph simplification, bridges + gravel-ch
gravel-fragility All fragility analysis (Eigen/Spectra) + gravel-simplify
gravel-geo OSM loading, regions, snapping (libosmium) + gravel-simplify
gravel-us US TIGER/Census specializations + gravel-geo

Analysis modules

  • Route fragility — per-edge replacement path analysis
  • Location fragility — isolation risk for a geographic point (new Dijkstra+IncrementalSSSP)
  • County fragility — composite index combining bridges, connectivity, accessibility, fragility
  • Scenario fragility — event-conditional analysis (hazard footprints)
  • Progressive elimination — degradation curve with Monte Carlo / greedy strategies
  • Tiled analysis — spatial fragility fields for visualization
  • Region assignment — node-to-polygon mapping (point-in-polygon)
  • Graph coarsening — collapse regions into meta-nodes

Performance

Measured on an Apple M-series laptop (see bench/baselines/routing_performance.md):

Operation 200K-node graph (Swain Co.) 593K-node graph (Buncombe Co.)
OSM PBF load 0.36s 0.99s
CH build 0.85s 3.92s
CH distance query 3.8 µs 8.8 µs
CH route (with path unpacking) 82.7 µs 144.8 µs
Distance matrix cell (OpenMP) 5.5 µs 6.3 µs
Route fragility (per path edge) ~60 ms ~124 ms
Location fragility (MC=20) 2.1 s ~8 s

At-scale benchmarks:

  • National per-county isolation fragility (3,221 counties): 3.1 hours
  • National inter-county fragility (8,547 adjacent pairs incl. cross-state): ~22 hours

Documentation

  • REFERENCE.md — complete API reference (all functions, all types)
  • docs/PRD.md — product requirements and architecture
  • docs/ — full documentation site (also on GitHub Pages)
  • examples/ — Python notebooks and C++ sample programs

Example: National US County Analysis

# Run fragility analysis on all ~3,221 US counties
python scripts/national_fragility.py --output-dir output/

# Results are in output/county_isolation_fragility.csv
# Visualize with:
python scripts/visualize_results.py

Sample findings from the national run (April 2026):

Most vulnerable states Mean risk
New Hampshire 0.638
Maine 0.571
Rhode Island 0.570
Connecticut 0.563
Most resilient states Mean risk
Kansas 0.146
Nebraska 0.162
Iowa 0.163
North Dakota 0.165

The Great Plains grid-states score lowest — flat land with rectangular road networks have extensive redundancy. Mountain and coastal states score highest — constrained geography forces single-path corridors.

Requirements

Runtime:

  • C++20 compiler (GCC 11+, Clang 14+, MSVC 2022+)
  • CMake 3.20+
  • Python 3.10+ (for bindings)

Optional:

  • libosmium (for OSM PBF loading)
  • Apache Arrow (for Parquet output)

Bundled (via CMake FetchContent):

  • pybind11
  • Eigen + Spectra
  • nlohmann/json
  • Catch2 (tests)

Contributing

See CONTRIBUTING.md. Bug reports and feature requests welcome via GitHub Issues.

License

Apache 2.0 — see LICENSE. Free for commercial and research use.

Citation

If you use Gravel in academic work, please cite:

@software{gravel2026,
  author = {Hoekstra, Robert},
  title = {Gravel: Fast Road Network Fragility Analysis},
  year = {2026},
  url = {https://github.com/rhoekstr/gravel},
  version = {2.2.0}
}

About the Author

Built by Robert Hoekstra — more projects and writing at awrylabs.com.

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

gravel_fragility-2.2.0.tar.gz (670.6 kB view details)

Uploaded Source

Built Distributions

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

gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

gravel_fragility-2.2.0-cp313-cp313-macosx_11_0_arm64.whl (4.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gravel_fragility-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

gravel_fragility-2.2.0-cp312-cp312-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gravel_fragility-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gravel_fragility-2.2.0-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gravel_fragility-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

gravel_fragility-2.2.0-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gravel_fragility-2.2.0-cp310-cp310-macosx_10_15_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file gravel_fragility-2.2.0.tar.gz.

File metadata

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

File hashes

Hashes for gravel_fragility-2.2.0.tar.gz
Algorithm Hash digest
SHA256 31d0c4799a6f7bd61cdf208f017436bd7da8ae5693cadbf418183ec7f6745ccb
MD5 01ae165462f6dafaf94d8fad4473e0fe
BLAKE2b-256 e5a88d5f3ad8d7f82d9648ebb89d9e502c03c5afb3986bd433502b25a8ed16ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0.tar.gz:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4739748fd22f33a807a98bfa39120053fc34a544427849c249c0725aec23bd68
MD5 4a0e75c9b4f119f11f0c4dde6dd5ea6e
BLAKE2b-256 550e4d94697b6cbdc831fa3f101917150e7872a0ab9b1bdebde6e0ea1926061e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9e4640cd7adc73d95d12806c1d5110c66dd5582a4093fa0b14698625e798688c
MD5 8c647080e588a0d6ce59c90db417dfb2
BLAKE2b-256 15bc786d21c4afe2861cce683d8e65fcefc014ce5a9b2f1c42f6e98482ab55e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2be25053a3396a2e24e206af3df4ac4f3b85ba3a9a174c3c1292daef389b21a
MD5 8a9b241a98dc4145093f8bfa263b2024
BLAKE2b-256 2904dd39a6b947ba9a45a2df70c4f18b8b17dc46ff0fc2f6f11c186580a35372

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f14f17be1f78ed446ba5844aafc7ca4c88170512e512095942001ca58846ae57
MD5 a54c4bfc5685718ba13864d6210f167f
BLAKE2b-256 a576b9512c8e16766772c54512aa117a7269d2ca8a2db1d47bb68c01902ab2a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e224eea6c5229b0b4d9cf0ed4170963c00fe27ba1b4764cca62663366e84f9f
MD5 d0a0d48bedcba6dc12f38c2a6fda3108
BLAKE2b-256 f291e5c4061c10ed8ee20a876533118958f638a0df059c7c81b0a132b091807c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9267e1d15c41e20d478922474bb80383baffdfbd6c273a56c0e418ded7d54347
MD5 7679d3dc9a79a0ea51869f7d1cbe0565
BLAKE2b-256 4cdae28db7f501347b1c0b7651bfcb9d96134791d92e1daf5bab7aaae07f0ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbe305b6962022b980a5424c3d7ccd6c0da981be26a681907aa237b9797e4576
MD5 ef1fac539288d1cb33c1f7a208812553
BLAKE2b-256 22b683d5eed0d6c6c7923495755ec2191b6e89bacdca24272e4366952eaf9c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 28ead300aa725f3767568f6eb810c790d3821d96f5eff2afa556d5134cf4136d
MD5 28cb981854f1bd10d2a327d259efac64
BLAKE2b-256 da090f9f001ffc674b1bbc30ae8dfebbc6a0a54fd6eebfc6e9963eba8cbfe190

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e5c07cd754d1f432431993ebd7a7fa616363898b306452d595ce8b620e6a367
MD5 588d8505955c6658b836932ea3f9539c
BLAKE2b-256 819362b00cb2046c9c19a7fd393998091c5ceeddcfb7ac3c25e40c15a01c9dbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6244873a91c805fb9275f4417ce78c419bba94867bfd3ad59c8deb0474c41175
MD5 123655b63fdf243772d45fd9a57107cc
BLAKE2b-256 60c5675886b6ba2348e13d623b872530906f71606cb8796b86f7825733ddc06c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 524a5a3134ee7b8348f8358796f496c84078957e461a7aad7bf51a225ee53ba6
MD5 36902f4cab8f064b78a7f0b58d2b1c21
BLAKE2b-256 9e1b53551542d97e05aec33fbe4cc659a438c25b6feaa8236dc9613d38124359

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ddec7b80901f0abdb8c062e5eceef7670c83406a9e1da5f810824fbd129066d2
MD5 7f8e51a28baec59ab661313b852ac598
BLAKE2b-256 15ed3a19111d576de888768fd90241ecfd99dc1ffd6399d2c9349e50eb7f29dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3d57a21fbe742b80282529363379f3a54d95753cf6cad6bee67520522a53224
MD5 29647d527800ecd03e35af1222b61742
BLAKE2b-256 ee40f1dab26a6bd65eb7a704d1f4cfed8b47f4a67efeacb486d8b2482f485b63

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 060b2c6f741d495428899a42d93a347dffa8b0bca4871e4a8e2407bf3c47ac0b
MD5 11a24dea7c447198b4fca127a7d65838
BLAKE2b-256 9c5925eda8c079582a7a89d30536b0f0c60d1a87e92de2890c2f7539df010832

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63d87bae9cba5f4fc077592bd1c0f403705f527f7aacbc90b208079adb5294b2
MD5 998ec8e1ef4e4daa2aa654b871511c4f
BLAKE2b-256 fd16d9fdb7ae6e1a6a2a7839304328ee84a53abe890dfd6f44298a8c9b2cd279

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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

File details

Details for the file gravel_fragility-2.2.0-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gravel_fragility-2.2.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 cb8bd0dbbf8c405ee66684f10f993727f6498556e55670ece83f554e7da4cb44
MD5 0429c449f14855d2b608a6b33a39bfb5
BLAKE2b-256 9df251059dae05bd77447c249930d9b5528a4cd0925da53a6cde24fc5f8a37a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gravel_fragility-2.2.0-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on rhoekstr/gravel

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