Skip to main content

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

pip

pip install gravel-fragility

Binary wheels for Linux (x86_64, aarch64), macOS (x86_64, arm64), and Windows (AMD64) × Python 3.10–3.13. OSM loading (gravel.datasets.osm.load, OSMConfig, SpeedProfile) ships enabled on every wheel from v2.2.2 onward — no extra system dependencies required.

conda-forge

Not currently available. The conda-forge feedstock is out of date and does not track recent releases — install via pip (above) for the current version. (If the feedstock is revived, a conda install path will return here.)

From source

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

The default GRAVEL_USE_OSMIUM=AUTO enables OSM loaders when libosmium is present on the system and disables them gracefully when it isn't. CMake prints a clear status message either way. To hard-require libosmium (fail configure if missing), pass -DGRAVEL_USE_OSMIUM=ON. To opt out entirely, -DGRAVEL_USE_OSMIUM=OFF.

Install libosmium with:

  • macOS: brew install libosmium protozero
  • Debian/Ubuntu: sudo apt install libosmium2-dev
  • conda: conda install -c conda-forge libosmium
  • vcpkg (Windows): vcpkg install libosmium protozero

Checking OSM availability at runtime

import gravel
if gravel.HAS_OSM:
    graph = gravel.datasets.osm.load("county.osm.pbf")
else:
    # Running on a build without OSM support (e.g., source build without libosmium).
    raise RuntimeError("gravel was built without OSM support")

Quick Start

Python

import gravel

# Load a road network (from OSM PBF)
graph = gravel.datasets.osm.load("county.osm.pbf")

# 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}")

Datasets (2.7.0)

import gravel

# Browse the catalog of supported datasets
gravel.datasets.list()          # -> list[Dataset]
print(gravel.datasets.summary())  # prints (and returns) a feature matrix

# Load a road network via the OSM submodule
graph = gravel.datasets.osm.load("county.osm.pbf")

# Fetch a hazard footprint (needs the gravel[datasets] extra)
gdf, provenance = gravel.datasets.nfhl.fetch(bbox=(-83.6, 35.3, -83.3, 35.6))
print(provenance.summary())  # {dataset_id, endpoint, resolved_version, pulled_at}

The hazard fetchers (nfhl, shakemap, usdm, nri) require the gravel[datasets] extra (geopandas + shapely + pyproj); their edge_probabilities(...) output feeds stochastic_fragility.

Network substrates (2.7.0)

Beyond roads, gravel.datasets onboards five infrastructure networks — power grids, internet router topology, air routes, and transit — each load(...) returning (Graph, capacity) where capacity is a per-edge numpy array (empty when the source has no native capacity). Fragility analyses consume these graphs and their capacity vector, and the (topological) cascade runs on the graph structure, exactly like a road graph.

import gravel

# Power grid (thermal limits in MVA; node coords)
graph, capacity = gravel.datasets.gridsfm.load("case.json")

# Air network via OpenFlights: fetch the raw tables, then load
(airports, routes), prov = gravel.datasets.openflights.fetch("data/")
graph, capacity = gravel.datasets.openflights.load(airports, routes, with_codes=False)

# ...or with IATA codes, to key-join a BTS T-100 seat-capacity overlay
graph, capacity, node_iata = gravel.datasets.openflights.load(airports, routes, with_codes=True)
seats = gravel.datasets.t100.load("t100_segment.csv", value_field="SEATS")
capacity = gravel.datasets.t100.edge_capacity(graph, node_iata, seats)

The network loaders need only numpy; fetchers use stdlib urllib (gridsfm optionally huggingface_hub; gtfs needs a free Transitland API key). caida (internet) and t100 are bring-your-own-data — no fetcher — per their source licenses.

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

Seven 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 Regions, snapping, point-in-polygon + gravel-simplify
gravel-datasets Dataset onboarding: OSM/TIGER loaders + catalog (libosmium) + gravel-core, gravel-simplify, gravel-geo
gravel-us US TIGER/Census specializations + gravel-geo, gravel-datasets

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
  • Research depth (2.4.0) — capacity-aware importance (HCM PCE from OSM tags), stochastic fragility (Monte Carlo over per-edge failure probabilities, e.g. floodplain / FEMA-NFHL hazards), and experimental Motter–Lai cascading failure — all as disclosed, sweepable inputs
  • Visualization (2.5.0) — real per-edge road geometry plus static (plot_fragility), interactive (interactive_map), and animated (animate_failure, self-contained deck.gl HTML) maps via gravel-fragility[viz]
  • Dataset onboarding (2.6.0) — a unified gravel.datasets layer: a queryable catalog (list()/info()/summary()) plus per-dataset submodules with a consistent interface — osm and tiger loaders, and nfhl/shakemap/usdm/nri hazard overlays whose fetch(...) returns (GeoDataFrame, Provenance) and whose edge_probabilities(...) feeds stochastic_fragility. Hazard fetchers need the gravel[datasets] extra (geopandas + shapely + pyproj)
  • Network substrates (2.7.0) — five non-road infrastructure networks in gravel.datasets, each load(...) returning (Graph, capacity): gridsfm and opfdata (power grids, capacity in MVA), caida (internet router topology), openflights (air routes), and gtfs (transit, persons/hour capacity), plus the t100 BTS seat-capacity overlay for air graphs. Fragility analyses run on these graphs and their per-edge capacity, and the topological cascade on the graph structure, exactly like a road graph. The catalog now spans 12 datasets; loaders need only numpy
  • Flow layer (3.0.0, experimental) — gravel.flow, a demand-driven traffic-assignment layer on top of the topological core: stochastic User Equilibrium (BPR congestion + logit route choice), flow_fragility for the region-wide delay cost of a failure (ΔTSTT + stranded demand), and a θ-calibration harness against real closure-induced slowdowns. The solver is exact (Sioux Falls) and recovers a known θ synthetically, but real θ does not identify at corridor scale — it ships experimental, with the gap and the regional-ODME path documented in docs/FLOW_LAYER.md. The gravel.datasets.chicago_traffic adapter and example 10 walk the real-data study. Breaking: the 2.6 deprecation shims (gravel.hazards, top-level load_osm_graph/load_tiger_*) are removed — use gravel.datasets.*

Performance

Measured on an Apple M-series laptop, 10 cores, Release build (2026-07-01; see bench/baselines/routing_performance.md):

Operation 200K-node graph (Swain Co.) 593K-node graph (Buncombe Co.)
OSM PBF load 0.43s 0.96s
CH build 0.78s 3.81s
CH distance query 3.5 µs 7.8 µs
CH route (with path unpacking) 80.5 µs 112.8 µs
Distance matrix cell (OpenMP, 10 threads) 0.6 µs 1.3 µs
Route fragility (per path edge, OpenMP) ~13 ms ~28 ms
Location fragility (MC=20, 50-mi radius) 0.11 s 1.0 s

The parallel kernels (distance matrix, route fragility) scale ~5× from 1→10 threads on this machine. macOS builds only gained working OpenMP in 2.3.0 (Apple Clang needs Homebrew libomp) and route_fragility was parallelized in the same release — so on macOS those two rows are roughly 5–9× faster than pre-2.3.0. Single-threaded operations (load, CH build, point queries) are unchanged. Numbers vary by CPU; the perf_baseline.json Google-Benchmark regression gate is refreshed separately via gravel_perf.

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.24+
  • 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 = {3.1.0}
}

About

Gravel is an Awry Labs project — see the Gravel project page for an overview. Also from Awry Labs: Kindling.

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

Metadata

Release files for gravel-fragility 3.1.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 gravel-fragility 3.1.0
File Size Uploaded
gravel_fragility-3.1.0.tar.gz 1.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for gravel-fragility 3.1.0
File
gravel_fragility-3.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
gravel_fragility-3.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
gravel_fragility-3.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
gravel_fragility-3.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
gravel_fragility-3.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
gravel_fragility-3.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
gravel_fragility-3.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
gravel_fragility-3.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 55.2 MB

Release files / gravel_fragility-3.1.0.tar.gz

Download URL gravel_fragility-3.1.0.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
6c5a12c5e7315c6cfe3cb5d734c2c0bc87032248fb6d467b7e92d1de75038bf5
BLAKE2b-256 checksum
How to use checksums
00ce9917b017c2eaa3f2c2efc3a85f5368b5d1c8bf96b67b81350fe7247151af
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp313-cp313-win_amd64.whl

Download URL gravel_fragility-3.1.0-cp313-cp313-win_amd64.whl
Size 5.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
904b5829240f11dd5829557e6ed3bc969e17e38a4bf703707deddfb5709e8ba5
BLAKE2b-256 checksum
How to use checksums
8e7188582036ec9e9829cea752621d20d0493e8405788a234914d657f3b7f979
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 5.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9638752249fb6273e10f0bacec0b5c1773519f3301d22a9315b88379f1818744
BLAKE2b-256 checksum
How to use checksums
2daae52a3080d3f22f3ce3bfaf61e653c1627f8fb085bd8fb692016d49549385
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL gravel_fragility-3.1.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.9 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9d4ead580236a08f015e9cd8be1654708ea5dcc88d4cbfabb53f5fd53db9c92a
BLAKE2b-256 checksum
How to use checksums
a4992765ed8f20dd3a7216a876ba29028d9c89e0ca15c34cbc120a8340aaa013
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL gravel_fragility-3.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
66f687aa9e2a80374652edd753de794de019c69e06dea8459f22a2d75889c48c
BLAKE2b-256 checksum
How to use checksums
fa85f7e9f63e114ed48092ac4fb9132235c87f8941109990a3f2ce76b01cca17
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp312-cp312-win_amd64.whl

Download URL gravel_fragility-3.1.0-cp312-cp312-win_amd64.whl
Size 4.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
23bdd9a31de8a5d8ef85a02ee88f78eeada4e4c61694a876c8e0a00565e35433
BLAKE2b-256 checksum
How to use checksums
8a8bc7c3903022b52fcdca9d4f5f8361ee384e42172498c800f5287ab4be4175
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9c7b52db7ea90abffe7281e77c668a45db55180d0f76be08de69cfeee7301f08
BLAKE2b-256 checksum
How to use checksums
4162e4aa79ae895f6e0109530d60c7ddd63c969d1a8834bcf9f86d7a7b378967
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL gravel_fragility-3.1.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 3.8 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9b7f6db791747c6061e7376e94fb09f5054294bf3a47ebd77f8d508b26147dff
BLAKE2b-256 checksum
How to use checksums
3374dd1a2903fa1eea4af9cd7046e9991b0b036808c104f116ffc784d552573d
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL gravel_fragility-3.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 3.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
661674cfda39f23b2a2f2d721e1dee64cd2e2954b6ecc34fa810f640f6313529
BLAKE2b-256 checksum
How to use checksums
f8cc3976b96b53a7b468744230223864190752cf7af76f38ea2a67b983a1a0c1
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp311-cp311-win_amd64.whl

Download URL gravel_fragility-3.1.0-cp311-cp311-win_amd64.whl
Size 3.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
53c7de9ec92f98e44c55165794ab18b583e11b031772640b4a70727bb4f23bac
BLAKE2b-256 checksum
How to use checksums
f2d6350e96035e098228eeefcff6ad18b206a6e9119b20fb771a9553c2f9fb9c
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1c2a5aa4c5b19f7891c8243f6144af3bdb6219878149d977da037dd072d0e44b
BLAKE2b-256 checksum
How to use checksums
94c5f68660a557250a670d711a7ec3f5b1c15d921e05279139fc7c6ad71a277a
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL gravel_fragility-3.1.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 2.6 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
718c581ad8e32fc4d6a8211be0e9e531779126805c925107bd901bb4a6ffabd5
BLAKE2b-256 checksum
How to use checksums
9c17b7caa8706f12a4107d142e30489812cd4f30ae2c0fe805db9e8ba8942953
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL gravel_fragility-3.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5e84fdf7f19567cf85692bfde664d35718d93a4be53152b0ee4a98a11030e448
BLAKE2b-256 checksum
How to use checksums
6dadf38d5c370dc8edae2676889bdb4fcb289cabc8ccfb7d5f6d7c9dec893a3a
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp310-cp310-win_amd64.whl

Download URL gravel_fragility-3.1.0-cp310-cp310-win_amd64.whl
Size 2.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
1ac9249052bfc7a94ce4ed505cda859836271927f3bc12c58bd3ba2fb3c16d48
BLAKE2b-256 checksum
How to use checksums
717099f96eb0bc3343eba1876f8c1a69852ccf89b4d41ad0ac20c39b8d3fdc5c
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8ce758dbdb2c05b006126bbfe9625a1d4e8093e65553fc3d25388fba8a38c2fb
BLAKE2b-256 checksum
How to use checksums
59d80c53e355cf309a039f81a7cc7f4246ab0b14a7b3eddd38fe43064b23464c
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL gravel_fragility-3.1.0-cp310-cp310-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dc49a9eb14f84df1da921b0cb87fb47d4ed0d8359b79d903629f049f6a8e72d8
BLAKE2b-256 checksum
How to use checksums
88308bcab56b3a918eae1a4024cef2d8dbbe971b1710b0020bb7b5949cf1df01
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 15, 2026.

Transparency log

Release files / gravel_fragility-3.1.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL gravel_fragility-3.1.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
51c8dea38ee2538ca20fa89cb5c759559d6d4b66dda01f63c8ea5cd49da06830
BLAKE2b-256 checksum
How to use checksums
2175d383329609a26dfa66ecbcc6269cd20acfac0b285e4c8c226d0f76e5e8f2
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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.1.0 This release

17 release files

3.0.0

17 release files

2.9.0

17 release files

2.8.0

17 release files

2.2.3

21 release files

2.2.2

21 release files

2.2.1

21 release files

2.2.0

17 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