RichDEM2
Note: This is a maintained fork of the original RichDEM project by Richard Barnes. The original package is no longer actively maintained. This fork updates the build system, modernizes Python packaging, and publishes to PyPI as
richdem2. All credit for the core algorithms and library design goes to the original author.
Original author: Richard Barnes (rbarnes@umn.edu) Fork maintainer: Qiusheng Wu
RichDEM is a set of digital elevation model (DEM) hydrologic analysis tools. RichDEM uses parallel processing and state of the art algorithms to quickly process even very large DEMs.
RichDEM offers a variety of flow metrics, such as D8 and D-infinity. It can flood or breach depressions. It can calculate flow accumulation, slopes, curvatures, and more.
Please cite RichDEM (see below).
Installation
From PyPI:
pip install richdem2
Then use:
>>> import richdem
The command:
>>> help(richdem)
provides all the relevant documentation.
Design Philosophy
The design of RichDEM is guided by these principles:
-
Algorithms will be well-tested. Every algorithm is verified by a rigorous testing procedure.
-
Algorithms will be fast, without compromising safety and accuracy. The algorithms used in RichDEM are state of the art, permitting analyses that would take days on other systems to be performed in hours, or even minutes.
-
Algorithms will be available as libraries, whenever possible. RichDEM is designed as a set of header-only C++ libraries, making it easy to include in your projects and easy to incorporate into other programming languages. RichDEM also includes apps, which are simple wrappers around the algorithms, and a limited, but growing, set of algorithms which may have special requirements, like MPI, that make them unsuitable as libraries. These are available as programs.
-
Programs will have a command-line interface, not a GUI. Command-line interfaces are simple to use and offer extreme flexibility for both users and programmers. They are available on every type of operating system. RichDEM does not officially support any GUI.
-
Algorithms and programs will be portable. Linux, Mac, and Windows should all be supported.
-
The code will be beautiful. RichDEM's code utilizes sensible variable names and reasonable abstractions to make it easy to understand, use, and design algorithms. The code contains extensive internal documentation which is DOxygen compatible.
-
Programs and algorithms will provide useful feedback. Progress bars will appear if desired and the output will be optimized for machine parsing.
-
Analyses will be reproducible. Every time you run a RichDEM command that command is logged and timestamped in the output data, along with the version of the program you created the output with. Additionally, a history of all previous manipulations to the data is kept. Use
rd_view_processing_historyto see this.
Citing It
General usage of the library can be cited as:
Barnes, Richard. 2016. RichDEM: Terrain Analysis Software.
https://github.com/r-barnes/richdem
An example BibTeX entry is:
@manual{RichDEM,
title = {RichDEM: Terrain Analysis Software},
author = {Richard Barnes},
year = {2016},
url = {https://github.com/r-barnes/richdem},
}
Users are also encouraged to cite the particular algorithms used. Citations to these will be printed whenever an app, program, or library function is run. Although Richard Barnes wrote all of the code in this library, some of the algorithms were discovered or invented by others, and they deserve credit for their good work.
Parsable Output
Every line of output from RichDEM begins with one of the following characters, making it easy to parse with a machine.
-
A: Algorithm name
-
a: Analysis command: the command line used to run the program
-
c: Configuration information: program version, input files, and command line options, etc.
-
C: Citation for algorithm
-
d: Debugging info
-
E: Indicates an error condition
-
i: I/O: Amount of data loaded from disk
-
m: Miscellaneous counts
-
n: I/O: Amount of data transferred through a network
-
p: Progress information
-
r: Amount of RAM used
-
t: Timing information: how long stuff took
-
W: Indicates a warning
All output data has the form:
<INDICATOR CHARACTER> <MESSAGE/MEASUREMENT NAME> [= <VALUE> [UNIT]]
The amount of whitespace may vary for aesthetic purposes.
Publications
The algorithms used in RichDEM have been published in the following articles. Every algorithm/program will provide its relevant citation information when run.
-
Barnes, R., 2017. Parallel non-divergent flow accumulation for trillion cell digital elevation models on desktops or clusters. Environmental Modelling & Software 92, 202-212. doi:10.1016/j.envsoft.2017.02.022
-
Barnes, R., 2016. Parallel priority-flood depression filling for trillion cell digital elevation models on desktops or clusters. Computers & Geosciences 96, 56-68. doi:10.1016/j.cageo.2016.07.001
-
Barnes, R., Lehman, C., Mulla, D., 2014a. An efficient assignment of drainage direction over flat surfaces in raster digital elevation models. Computers & Geosciences 62, 128-135. doi:10.1016/j.cageo.2013.01.009
-
Barnes, R., Lehman, C., Mulla, D., 2014b. Priority-flood: An optimal depression-filling and watershed-labeling algorithm for digital elevation models. Computers & Geosciences 62, 117-127. doi:10.1016/j.cageo.2013.04.024
-
Zhou, G., Sun, Z., Fu, S., 2016. An efficient variant of the Priority-Flood algorithm for filling depressions in raster digital elevation models. Computers & Geosciences 90, Part A, 87-96. doi:10.1016/j.cageo.2016.02.021
Feedback
Users are encouraged to report any issues experienced with this fork via GitHub Issues.
Metadata
Release files for richdem2 2.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| richdem2-2.4.3.tar.gz | 464.8 kB | Details |
Built distributions (wheels)
Total release size: 48.5 MB
Release files / richdem2-2.4.3.tar.gz
| Download URL | richdem2-2.4.3.tar.gz |
|---|---|
| Size | 464.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2cc4b739d8436f8b399c2d160b364eef5be4e64db695897f54635dbcbdec6f8
|
|
BLAKE2b-256 checksum How to use checksums |
33fe50d858603871e5e2a918faa8ace8c28a637d475e67be84b997635b76603f
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp313-cp313-win_amd64.whl
| Download URL | richdem2-2.4.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 400.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ca2cd5aef8b518768d03f8c2c6e764cd0d663de016039a8931f3bdc457fab36e
|
|
BLAKE2b-256 checksum How to use checksums |
f76b43ddd570e294359f32cc542e3005e2470890f8c9c9f98ed8e4603baf6ceb
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | richdem2-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2445e48677d23e9d933fc93b2304271eed5dca23434105c2becab35981765937
|
|
BLAKE2b-256 checksum How to use checksums |
67b487cdfb95117680ecfa24e8a27d32ac687515ae7aaf03670ff305982fa32b
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | richdem2-2.4.3-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 754.6 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
214b34da6e4306abbb50b793535d10897590cc750ff3fda4f576ea679eecaa8e
|
|
BLAKE2b-256 checksum How to use checksums |
d560ef56dfdebf7a23fcb6c6fae56619fdf1a2af22aca819ccc2e28473fe3b34
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | richdem2-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 815.7 kB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
e8af9cf3c37c5cb7805b1b801d16cc8c7b763bdf6afcb59533e2f05deb74a877
|
|
BLAKE2b-256 checksum How to use checksums |
9d2b928974fd884337e4420fae6117a93221dde8036afae5bb67b6b9adaccb8d
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp312-cp312-win_amd64.whl
| Download URL | richdem2-2.4.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 400.1 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9e35fa2fe75c6b97f7d4f15781a1970b728d5079512649501ff7eb9b55dc061a
|
|
BLAKE2b-256 checksum How to use checksums |
7064619d4cda78ea8d4416e700042fee23a0661daf8b31dd23499ea2bc02ead7
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | richdem2-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5f741b640b423fe449d15f6b40df6ab26b9a8fc85cf7972e5313e38c79d76ada
|
|
BLAKE2b-256 checksum How to use checksums |
e49bab3b126710e7435f86e381f7d64c5cc9bf5baff3a68ed91e41137163b572
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | richdem2-2.4.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 754.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
660f742e1765fe48763f7dd0626eccd1b6dd2997ecc181883fc5fd0711871fb9
|
|
BLAKE2b-256 checksum How to use checksums |
30e13cfea1eedc109126e14dede50a671fe7a30411fd3cd213f3ac7386da81f5
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | richdem2-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 815.6 kB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
b672e4dc0cec65055a465fb6ba6013c6ead6d17d02b8219c346a33aca51e32d3
|
|
BLAKE2b-256 checksum How to use checksums |
8647a5b68f93435d506b2d18efde4cb941909504d8f06505bd6d51c15cd621de
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp311-cp311-win_amd64.whl
| Download URL | richdem2-2.4.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 389.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
69b24f548d64cde2d0976387332c890332e141bbb52376f7b61e06cb2675f2c0
|
|
BLAKE2b-256 checksum How to use checksums |
57522020c8be7c9ede83f69d7e1096d2abd762bd66f3ae2d29581ebebe1a5a10
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | richdem2-2.4.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 10.0 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8e4d3914d90fc3f03016372522d78c412f3f63df87eb7d27529c0363f90aa026
|
|
BLAKE2b-256 checksum How to use checksums |
202807644bf6ef11d8803f69fb7bd0cf7e09e26c31c91a825f21cba64b777559
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | richdem2-2.4.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 751.5 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d9af3ee9b33e4e8ffc216f5137955a72d4f60ec6947009116e6d7fe1df00d192
|
|
BLAKE2b-256 checksum How to use checksums |
059a447de971fb73cdd9d9cd95a00f37df9eb16f87303bd50f32ead28bde41ec
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | richdem2-2.4.3-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 809.3 kB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c715414d733ce7087712e1481ec2cc74db9663e4a553af868e42a91b911ed53
|
|
BLAKE2b-256 checksum How to use checksums |
0935de28858826f7a3c6586f416fc892f581445fd609d268064f7b038edac7b8
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp310-cp310-win_amd64.whl
| Download URL | richdem2-2.4.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 388.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
88406292580102da08dd6da52e028ab5a9fd2f7adda957aa6a52897e3391488d
|
|
BLAKE2b-256 checksum How to use checksums |
bdfb005b96c553814b5200901b27a7289174681e0a13cfc36d2f091316108ac9
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | richdem2-2.4.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.9 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d3ff61bf0f66b9521a26ed68115d99efe1dc38c56d44afa56c9f62cc8549a3b6
|
|
BLAKE2b-256 checksum How to use checksums |
febf7f393f9119b14d7b92390953c228d4844139547656d2d5842a88bd478690
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | richdem2-2.4.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 750.5 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3ad7e6b88d5c595dbfe6391a7d5c333e3715dfd8aeacda2fd84f07e2704f6265
|
|
BLAKE2b-256 checksum How to use checksums |
8cfd0a360208c51af49ad14bf7dfa188dd944920c1990e97200c7b607b61cdd9
|
| 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 May 19, 2026.
Transparency logRelease files / richdem2-2.4.3-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | richdem2-2.4.3-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 808.2 kB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
c32d0368015ad3538e464caefced96b24602838dc3c3c1a8578e8b7aca623cd3
|
|
BLAKE2b-256 checksum How to use checksums |
ff005c3a1e6bf5087f8f6e027df6b730097ec6d792b29d0d0a89f1ff1da18915
|
| 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 May 19, 2026.
Transparency log