xenosite.forest
Python implementation of Metabolic Forest: enumerate explicit metabolite structures from reaction rules, and search pathways that connect a reactant to a putative product.
Site-of-metabolism prediction models (epoxidation, quinonation, Phase I, reactivity, and others) are on the web at xenosite.org. This package is the structure-enumeration engine, not those neural-network models.
If you use this software, please cite the Metabolic Forest paper (DOI and BibTeX below).
Install
uv add xenosite-forest
or
pip install xenosite-forest
The default install is the Rust chematic door (no RDKit). For the RDKit reference engine and the frozen 0.6.x archive:
uv add "xenosite-forest[rdkit]"
Optional NetworkX helpers for building a metabolite graph:
uv add "xenosite-forest[network]"
Optional xenosite-predict (site-of-metabolism models; Python ≥3.11). Not installed in this repo’s CI:
uv add "xenosite-forest[predict]"
Requires Python 3.11–3.14. RDKit 2022.03+ only with the [rdkit] extra.
A WASM-clean Rust crate (chematic + canonaut) lives in crates/xenosite-forest. See docs/forest/RUST.md and docs/forest/MIGRATING_0.8.md.
Quick start
from xenosite.forest import find_path, PhaseOne, Epoxidation
hits, counters = find_path("CC", "CCO", max_paths=1)
print(hits[0]["steps"], counters["billed"])
RDKit reference engine (requires [rdkit]):
from rdkit import Chem
from xenosite.forest.native import bfs, rules, PhaseOneRS
smiles, steps, mols = next(bfs(["CCO", "CC=O"], ruleset="PhaseOneRS"))
print(smiles, steps)
for products, info in rules.Hydroxylation().metabolize(Chem.MolFromSmiles("CCC")):
print(info["site"], [p.xf.csmi for p in products])
A longer walkthrough is in examples/tutorial.ipynb. API notes are in docs/usage.md. Rulesets and their papers are in docs/rulesets.md.
Command line
Requires the [rdkit] extra (temporary native bridge until a Rust CLI ships):
xenosite-forest CCO CC=O --ruleset PhaseOneRS --depth 1
Useful flags: --all-paths, --depth N, --phase1 (Phase I site strings), --max N, --ruleset NAME.
Rulesets and papers
Pass these names to bfs(..., ruleset=...) or load_ruleset(...). Full rule lists, Rainbow colors/hex codes, aliases, and BibTeX are in docs/rulesets.md.
| Ruleset | What it enumerates | Matched paper |
|---|---|---|
PhaseOneRS |
Phase I: SO, UO, DH, HD, RD | Dang et al., Metabolic Rainbow, JCIM 2020. DOI 10.1021/acs.jcim.9b00836 |
SO / UO / DH / HD / RD |
One Rainbow color each (see hex table in docs) | Same Rainbow paper; Forest rule lists differ slightly for HD/RD/DH |
QuinoneFormationRS (QF) |
Quinone, quinone-imine, and quinone-methide structures | Hughes & Swamidass, Chem. Res. Toxicol. 2017. DOI 10.1021/acs.chemrestox.6b00385 |
Bioactivation (BA) |
Quinone, epoxidation, nitroaromatic reduction, thiophene S-oxidation | Hughes et al., Chem. Res. Toxicol. 2021. DOI 10.1021/acs.chemrestox.0c00417 |
Full |
Complete Metabolic Forest generator (Phase I, conjugations, quinone, tautomerization) | Hughes et al., Metabolic Forest, JCIM 2020. DOI 10.1021/acs.jcim.0c00360 |
Rainbow colorblind-safe hex (Wong / Okabe–Ito, closest to the paper figures): SO Stable Oxygenation red #D55E00, UO Unstable Oxygenation orange #E69F00, DH Dehydrogenation green #009E73, HD Hydrolysis blue #56B4E9, RD Reduction purple #CC79A7.
Related single-rule papers: epoxidation (10.1021/acscentsci.5b00131), N-dealkylation (10.1021/acs.chemrestox.7b00191), UGT glucuronidation (10.1093/bioinformatics/btw350), glutathione reactivity (10.1021/acs.chemrestox.5b00017).
Documentation
- Rulesets and papers — every built-in ruleset, Rainbow colors, and publication BibTeX
- Usage — public API and pathway search
- Migrating to 0.7.0 —
metabolizeyield shape and other breaking changes - Migrating to 0.8.0 — rust / native / legacy layout, optional RDKit
- Legacy freeze — frozen 0.6.x archive notes
- xenosite-predict notes — RDKit 2026 valence caches and DNA/CN conjugation vs GSH (downstream adapters)
- Path-search performance — archive BFS/DFS vs live
find_pathhead-to-head - Heuristics / divergences / dropped — design notes (
HEURISTICS,DIVERGENCES,DROPPED,PAIR_ORBITS) - Tutorial notebook — interactive walkthrough
- xenosite.org — XenoSite models for sites of metabolism and reactivity
- Source repository — code, issues, and releases
Import the package as xenosite.forest (Rust public stub). The RDKit reference
engine is xenosite.forest.native; the frozen 0.6.x archive is
xenosite.forest.legacy (see docs/forest/LEGACY.md).
xenosite is a PEP 420 namespace, so other xenosite.* packages can be
installed alongside this one.
Citation
Please cite Metabolic Forest if you use this package:
Hughes, T. B.; Dang, N. L.; Kumar, A.; Flynn, N. R.; Swamidass, S. J. Metabolic Forest: Predicting the Diverse Structures of Drug Metabolites. J. Chem. Inf. Model. 2020, 60 (10), 4702–4716. DOI: 10.1021/acs.jcim.0c00360
BibTeX (copy and paste):
@article{Hughes2020MetabolicForest,
title = {Metabolic Forest: Predicting the Diverse Structures of Drug Metabolites},
author = {Hughes, Tyler B. and Dang, Na Le and Kumar, Ayush and Flynn, Noah R. and Swamidass, S. Joshua},
journal = {Journal of Chemical Information and Modeling},
volume = {60},
number = {10},
pages = {4702--4716},
year = {2020},
doi = {10.1021/acs.jcim.0c00360},
url = {https://doi.org/10.1021/acs.jcim.0c00360},
publisher = {American Chemical Society}
}
A machine-readable citation is also in CITATION.cff.
Development
git clone https://github.com/swamidasslab/xenosite-forest.git
cd xenosite-forest
uv sync --extra network --group dev # maturin builds the Rust extension
uv run pytest -n auto
uv run pytest --cov=xenosite.forest
Versioning is the package.version in crates/xenosite-forest/Cargo.toml (maturin). Tag a release as vX.Y.Z matching that Cargo version. Read it at runtime as xenosite.forest.__version__. User-facing notes go in changelog.d/; the tag workflow compiles them into CHANGELOG.md. See docs/release.md.
Pushing a v* tag runs .github/workflows/release.yml: tests must pass, then platform wheels (manylinux / musllinux / macOS / Windows, x86_64 + aarch64) and an sdist are published to GitHub Releases and PyPI. A red tag workflow means do not treat that tag as released.
License
MIT. See LICENSE.
Metadata
Release files for xenosite-forest 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xenosite_forest-0.8.1.tar.gz | 394.5 kB | Details |
Built distributions (wheels)
Total release size: 49.0 MB
Release files / xenosite_forest-0.8.1.tar.gz
| Download URL | xenosite_forest-0.8.1.tar.gz |
|---|---|
| Size | 394.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41744a94b8b9d16c1809e54498e6691b694f4125f7828b0406de30ac334afd5f
|
|
BLAKE2b-256 checksum How to use checksums |
1707eb22f99d03ec7bc82ce09c97603997e6c6a215b36425fc288487b5014a35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
| Download URL | xenosite_forest-0.8.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Linux musl 1.2+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
04245e5734a088d075a2afa7f16ba264e3be5f64db72e3ac45c8dd33bc8dba56
|
|
BLAKE2b-256 checksum How to use checksums |
f8f28afae829802c5b20c8318a0a129089c4b4fb67ad1b5f5a102f708c674b29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
| Download URL | xenosite_forest-0.8.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Linux musl 1.2+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
737cd6779bf193bda43a58401de33d64418039197bf612dd3f5930041138dd08
|
|
BLAKE2b-256 checksum How to use checksums |
f1c5b27bc05c055e999d484bc1591c851df486af5e8ce00dcab5e2f74003ab04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xenosite_forest-0.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
84847428ce32125e2051df34476d9e2cd674e6fc623dddeded6db3d496963bfa
|
|
BLAKE2b-256 checksum How to use checksums |
50eb97eb0287a5ab805f8cd2006f31a115c860da0c0bd99e95c0c0e36f0793b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xenosite_forest-0.8.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
ec283995923b3898ecb3a0621b0b11f9c1af1cf0d016f371c6a2b2984edb2050
|
|
BLAKE2b-256 checksum How to use checksums |
f9c16d3048cdb783fbceb7372394f1802a5be7737c94db81342d32b2178947d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-win_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
095a4af1167dc54ece551462283bf7cf20aeef76b33b63e14ac2fe8ff8cc3650
|
|
BLAKE2b-256 checksum How to use checksums |
ed63f33ce3216fc6835a50b4805327c79b227838e5cafec88079532749647cca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-win_amd64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4ed5b5a45b0ccfac6edf196ca9727f34ab22efa2cef1ee692b7015efc615063f
|
|
BLAKE2b-256 checksum How to use checksums |
53c6642baf0c6d04a11232599b9e5e37902329f3f0287a6e689461832bd8842c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
38cf9f74cf4fc89138a993b879a64690f40c13279789f5af79ce0f7573a11dc8
|
|
BLAKE2b-256 checksum How to use checksums |
d785cfdd5e3f77a57ba8b45a82af1c985030f3ca5f4122858921e57a10fed16d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
6b6415bbfa20cc0249cfdcf0cc27cd08efcef2cd070caf4a59b70c8e65e27bd2
|
|
BLAKE2b-256 checksum How to use checksums |
6c351f602ef5932f64a496b9c46eed052b159ac3b80bb9bc4711dec5704e5659
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
18fdd4f8f2613f4b022623ac80c4ca15b6c86ca08fac42dbfd8c231483b43eca
|
|
BLAKE2b-256 checksum How to use checksums |
7332907985f5f63609c68a56908a8d76bbeaa7c33978779c339669d2fad166e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
dd0ad43cad78baa76529d41e1f9cc8919683c55ba7515d8044243846c2e8cbd2
|
|
BLAKE2b-256 checksum How to use checksums |
9863ae22b2fccd958090f3afd9a1f41e3d838d556e87e16df6b894d164c8db19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313t-musllinux_1_2_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b44f6bc4e2793bd2381745aa33f83283438840c2a6f0b67497fc1aad5c970850
|
|
BLAKE2b-256 checksum How to use checksums |
e77d05ed8ce16299ea699d1203843ceb5d64a3738f60943881cf0e1c94b32104
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313t-musllinux_1_2_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
27a2848978cbbf6fe69daf41f42d74412d37ae7071cfe66b7806d3a2a5bfe2ee
|
|
BLAKE2b-256 checksum How to use checksums |
ed33cb887a10435783aa1ff963aa403a0e23c380405b87859776a1d396194ecd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-win_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
66c41ad0883f3d122baa9f99a2729125e8f5a2560567b1e9fe5e39f9a53ead21
|
|
BLAKE2b-256 checksum How to use checksums |
7d8cb74af4de6c2f2a19b6c1fa0e6731eb3c467de5f63b6eae7385600104ff18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-win_amd64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
065c0dca1dd05501ac149acfb2a5e24083f27d4dea1099a9aafd752cf31eff4c
|
|
BLAKE2b-256 checksum How to use checksums |
de66f1873c7373987385aa5b7573631e71570dc9953683d1c7fe5648965c15c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
90734783c5d1fc123b39fc465efb59dacef4d74be5092817f916cfafbbe5cb1b
|
|
BLAKE2b-256 checksum How to use checksums |
ff2aa0b452ce64364cf404ccf07a77f30866b037c498b5b1a0bd494e2871cb43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
13f64beb67a96f706ee36ffe43ffc952abcb27db8110f5e1be9870dcad3b7cc8
|
|
BLAKE2b-256 checksum How to use checksums |
67f6499a202f86dd5ea72fdef0fcc177f12880f5c12d06b363c0dd1810317466
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
396270b2ad61cabc833f518273186eb2e2e771aeb7b30f42be7c42b56f02cd7a
|
|
BLAKE2b-256 checksum How to use checksums |
05af9a59d54c85563f867d93ee42f01549ed49c8c5f261fe700ea6489f111971
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
2580171c2e6433cb7eb6b45f7bde0af1bc8ed7560d5871b6c3fcba78b34e5269
|
|
BLAKE2b-256 checksum How to use checksums |
96d5cbcc8778d96140ae5027e5a015d65119d09f6bf0442eca5cdd33cb3d3325
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e5e2f84cfae3dfc83a133bff9a1639171321ac0821ec089816c98fd43f698ada
|
|
BLAKE2b-256 checksum How to use checksums |
94791df8345ab14661948b3801cb81316654b71eb0dde9d2f829eaf981d8e547
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
9d31856b196d00ca909968a158215e66a51599140d9d2e9b591de268bac1d007
|
|
BLAKE2b-256 checksum How to use checksums |
a0cd7ecaa4a101ffb0809ea6352646ba8e10f7ae22303e90cd46a86c024c3ae9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-win_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
da50757660165942ea0a639ca1ebb97098cb9223bdc4236d2a30988bda82c4a3
|
|
BLAKE2b-256 checksum How to use checksums |
04bff173ca3c344b5b46d66e5102de78cf8dcf973d281e3c82b3daae7593ae01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-win_amd64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0079e381e37e4b41e17a2f4cf95dbcf6267daf8ea4ac5cdf92cf862e06b4afc6
|
|
BLAKE2b-256 checksum How to use checksums |
a7d03ac8117513ffc5caf9d807d897e3c532cc935f63f0f2cc24ef3ee1055aba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
cd0b9ed80078b983dc599b8981cbe792ad5a939a10f749d0eca2c374ca7657cc
|
|
BLAKE2b-256 checksum How to use checksums |
ce53458dd59ee42251de5b02642bb3c3bd4a90134760b1c45cc50b1ee49492b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
7d995cf522037a6ea13e1db1cd057a975e42578707c0deb537e51795d6de07d2
|
|
BLAKE2b-256 checksum How to use checksums |
43292882fbb81f24b75793e05aeadd7a3767c7c70096f48051cfeace5e2b93b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
e009e397e6a6d302df1c59c1532bd2b9a59570b1ab86cb52bd6d6740f8ea8c80
|
|
BLAKE2b-256 checksum How to use checksums |
a76170f49406918eecbfff94b89f6278fda34a5174d3dbd7c4e22715ca2df0d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
d4550397a94e6c9677869c1f7b846980655b9593fc83eaa6d08bf879364b5600
|
|
BLAKE2b-256 checksum How to use checksums |
1938184f55d943866d42378dcab3c792ac4515286dd7522519256a74e3448bc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
521847ae6636068bcbdf0e9895afb04ef518206118fe066ed2cdfb1e4c05fa77
|
|
BLAKE2b-256 checksum How to use checksums |
1c57fdd9e9076d5128ade8810f2806d85c207c4d3f499d538c4b39217f53660b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
f08b2658addf4030655a903300414e7f139ecf1b4859d862b2b5355b8175d925
|
|
BLAKE2b-256 checksum How to use checksums |
b4b4a301e03f2cd82e5d71fee41a499f4cee9688436793ba7994bf9c341e359e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-win_amd64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f668b66b6d5a3e2b6faac46283bffcc4e9e0e02befbc0021119df9ff3fbc1218
|
|
BLAKE2b-256 checksum How to use checksums |
35dbbb66a348460849c9aa74b34a2170a719badea8af6016f99fca517d6074fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
12295ce1e489a6e4e365450a3c13ccddd35ed2fe16a9522326e18b8fec10c3d4
|
|
BLAKE2b-256 checksum How to use checksums |
54c8e259422723284bfa159ebef548aacee9884413222535c2ac4c0db29079b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
f91d110a8b94afaee8f3c3713b36a8824ee1ee1bdc27ddbf5bbce8ac13e0f882
|
|
BLAKE2b-256 checksum How to use checksums |
92dc276fa9e747ba575f7009e2ca72916470ab53f59fd9b99492fd19a3ed1347
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
224f80352f837c03174bc3cc4fdb6105fd5d98a735be150e1374f9786d18e3ec
|
|
BLAKE2b-256 checksum How to use checksums |
f670423e2dd73b2f2f307547738c9702fcc5d20ea9169404daab2c248f4eb67f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
46d29c156d6d6d65ec8f2fdf315ac2eec432a5465325e68a9b68a54086cf33ab
|
|
BLAKE2b-256 checksum How to use checksums |
874a56b8c3e179062b8b2df0b18b6c4b283d0773f5aab0e8656221428aa21910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
02c7db1dc50ac481947e9a8258984bf31e002db096a6c13c40429c650475b1ce
|
|
BLAKE2b-256 checksum How to use checksums |
1eea2492bf6976b33c2944a6044273370d5286f90fe1d4f045526763b19d7e9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / xenosite_forest-0.8.1-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | xenosite_forest-0.8.1-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a79ed0979c28f1e69ac51dccf48dbffb1df49a6fd255d803f71c7bad41b7412b
|
|
BLAKE2b-256 checksum How to use checksums |
fa6ba37bd89632a7d9a06629d6d1da5744d5dc7c3072986d95b0cd739ee800d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency log