pyre
A framework for building scientific applications in Python. Visit the project homepage for more info
Getting started
If you are reading this from within pyre, you should be able to skip to the launching
instructions at the end of this section.
Similarly, if you are lucky enough to work on a machine that is managed professionally, pyre may
already be installed. Please contact the system administrators for instructions about how to access
it, and skip to the end of this section.
If you are comfortable with jupyter notebooks, the current
release tarball
contains a notebook that can walk you through the installation procedure with minimal tweaking.
It is located in etc/mamba/pyre.ipynb. Please report any difficulties you encounter.
The same tarball has instructions on how to build a docker instance with a pyre installation.
You will find support for many recent ubuntu distributions in etc/docker.
If none of these options work for you, read on to the next section for a walk through of how to
build pyre from source.
Dependencies
The easiest way to install the pyre dependencies is using
micromamba and
conda-forge. The following configuration file will install everything pyre needs in an
environment named pyre. Feel free to add these packages to an existing environment, rather than
building one from scratch, although it might be easier at first if you avoid any potential conflicts
with your existing environment.
# -*- yaml -*-
name: pyre
channels:
- conda-forge
dependencies:
# python and runtime packages
- python
- pyyaml
- ruamel.yaml
# optional: external libraries
- gsl
- hdf5
- libpq
# optional: building from source
- git
- gcc
- gxx
- make
- nodejs
- pybind11
# end of file
Save this as pyre.yaml, then create the environment from it and activate it:
~> micromamba create --file pyre.yaml
~> micromamba activate pyre
On macOS, you will want to use clang instead of gcc. Keeping this environment active as you
proceed is important: it is what puts the conda-forge compilers on your PATH, and mm reads the
install prefix and dependency locations from it. If you open a new shell at any point, re-activate it
with micromamba activate pyre before running mm.
It is also possible to use other package managers to install these dependencies. pyre
has been tested on both ubuntu and macOS using their native environments, as well as
macports, homebrew, and spack. Please keep in mind that most enterprise systems provide
compilers and packages that are too old to build this code, so you will have to lean on something
else to satisfy the dependencies. Further, you may have to adjust your PATH, LD_LIBRARY_PATH,
PYTHONPATH, and perhaps other environment variables that control access to binaries, shared
objects, and python packages on your machine.
Cloning the repositories
We will need a place to clone the necessary source repositories. For the sake of concreteness, let's
pick ~/dv as the source directory.
~> mkdir ~/dv
~> cd ~/dv
GitHub allows access through ssh or https, with slightly different syntax. If you already have
your ssh key installed on your GitHub account, you can clone the two repositories using
~/dv> git clone git@github.com:aivazis/mm
~/dv> git clone git@github.com:pyre/pyre
Alternatively, you can use the https protocol for anonymous access:
~> mkdir ~/dv
~> cd ~/dv
~/dv> git clone https://github.com/aivazis/mm
~/dv> git clone https://github.com/pyre/pyre
You can probably get away with installing pyre from conda-forge, but pyre is
currently evolving rather quickly. Being tied to a slower release cycle may delay access to
the latest features. Generally speaking, the HEAD of the two repositories is a safe place to
pull from, as they are thoroughly tested.
Setting up the build system
Recent versions of mm interrogate the active conda environment and configure the build
automatically. The two key settings are:
mode: condatellsmmto resolve the installationprefixand thepythonsite-packageslocation directly from the active environment (via$CONDA_DEFAULT_ENV), so you don't have to specify these locations by hand.pkgdb: condatellsmmto discover the external dependencies by reading the environment'sconda-metadatabase, so you no longer need to hand-write a package database of versions and install locations.
We will place them in a small ~/.config/pyre/mm.yaml configuration file that also records your
preferred compilers and build targets:
~/dv> cd ~
~> mkdir -p .config/pyre
# -*- yaml -*-
# mm configuration
mm:
# resolve locations and externals from the active conda environment
pkgdb: conda
# install the build assets back into the active conda environment
mode: conda
# compilers
compilers: "gcc, python/python3"
# build target: turn optimizations on, and build shared libraries
target: "opt, shared"
# misc
# the name of GNU make; may be 'gmake' on your machine
make: make
# local makefiles with build hooks; you can ignore this
local: Make.mmm
# end of file
You may need to replace gcc with whatever is available in your environment; on macOS use clang.
Incidentally, the directory ~/.config/pyre is the home for configuration files for all pyre
applications, including yours, so we will be adding more files here later on.
Building
The next step is to build pyre. We will invoke mm a few times, so you may find
it convenient to create an alias for it.
~/dv> alias mm='python3 ${HOME}/dv/mm/mm'
You might want to make this more permanent by also adding it to your shell startup file, e.g. your
~/.bash_profile.
First, build the external package database from the active environment. This is a one-time step; re-run it whenever you add or update the environment's dependencies:
~/dv> cd pyre
~/dv/pyre> mm --setup
The first time you run this, the package database is empty and make issues many warnings about
undefined variables; this is normal and can be safely ignored.
Now let's verify that everything is ok so far by asking mm to show details about the build. This
should generate a few lines of output similar to the following, with the prefix pointing at your
active conda environment:
~/dv/pyre> mm builder.info
mm 5.3.0
Michael Aïvázis <michael.aivazis@para-sim.com>
copyright 1998-2026 all rights reserved
builder directory layout:
staging layout:
tmp = /Users/mga/dv/pyre/builds/pyre/clang/opt-shared-darwin-arm64/
install layout:
prefix = /Users/mga/.local/envs/pyre
bin = /Users/mga/.local/envs/pyre/bin/
doc = /Users/mga/.local/envs/pyre/doc/
inc = /Users/mga/.local/envs/pyre/include/
lib = /Users/mga/.local/envs/pyre/lib/
share = /Users/mga/.local/envs/pyre/share/
pyc = /Users/mga/.local/envs/pyre/lib/python3.13/site-packages/
~/dv/pyre>
The prefix shown here is the root of your active conda environment. Depending on how micromamba
(or mamba/conda) was configured when it was installed, the home of its environments may differ
slightly from what is shown above — common locations include ~/.local/envs, ~/micromamba/envs,
or ~/miniconda3/envs. Whatever the location, mm discovers it from the active environment, so the
paths in your output will reflect your own setup.
You may see mm download a pyre archive from github to bootstrap the process. This is normal,
as mm is itself a pyre application.
If anything goes wrong at this stage that cannot be resolved by retracing your steps looking for
typos, please file an issue at the pyre
repository, and attach a log file or a screenshot to help diagnose the problem.
If everything looks ok, let's build and install pyre. If you are on a linux system, mm will
automatically discover the number of cores on your machine and launch a parallel build:
~/dv/pyre> mm
On macOS, it needs some help until pyre is built, so use something like:
~/dv/pyre> mm --slots=20
Don't worry if you don't have twenty cores on your machine. Most modern machines will be able to
handle this load. Feel free to up the count if you are on a machine with more cores. If all goes
well, you will have a functional pyre in the site-packages directory of your python
installation. Let's verify:
~/dv/pyre> python3
>>> import pyre
>>> pyre.__file__
Both statements should succeed, and the latter should print out the pyre installation location.
Metadata
Release files for pyre 1.13.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 | |
|---|---|---|---|
| pyre-1.13.1.tar.gz | 3.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pyre-1.13.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| pyre-1.13.1-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| pyre-1.13.1-cp314-cp314-macosx_10_15_x86_64.whl | CPython 3.14 | CPython 3.14 | macOS 10.15+ x86-64 | Details |
| pyre-1.13.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| pyre-1.13.1-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| pyre-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl | CPython 3.13 | CPython 3.13 | macOS 10.13+ x86-64 | Details |
| pyre-1.13.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pyre-1.13.1-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| pyre-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl | CPython 3.12 | CPython 3.12 | macOS 10.13+ x86-64 | Details |
| pyre-1.13.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pyre-1.13.1-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| pyre-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl | CPython 3.11 | CPython 3.11 | macOS 10.9+ x86-64 | Details |
Total release size: 56.3 MB
Release files / pyre-1.13.1.tar.gz
| Download URL | pyre-1.13.1.tar.gz |
|---|---|
| Size | 3.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
756dddfbcf1be70f350b0826550a90057e1d993331c7887b128b634a417c2f75
|
|
BLAKE2b-256 checksum How to use checksums |
84a96221f12418d8958c0f8ddc6d7ab98d004feb730472add163ff273c6a5395
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyre-1.13.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
61023f24cefe39bfc57a46e6ec412e9c96ad83a2a2afd59b38aac4398e68ace4
|
|
BLAKE2b-256 checksum How to use checksums |
647e625d85bbda6fd8c2c3d9171c6fc34e59886b94c6a5e37407be1dd302f940
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | pyre-1.13.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
39f8123b10382e87df6bd44d9b074965ec1843a73d4f49efd6d1261cc3800c4c
|
|
BLAKE2b-256 checksum How to use checksums |
2f909c3ea44a8b1ea92aa9ad391da7d5e68c13a341afdd14a37289d9defe32fb
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | pyre-1.13.1-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
9117e450464ee306fa03e2932af750c8a64ff0b139ec1de3309a8be183dbe5ce
|
|
BLAKE2b-256 checksum How to use checksums |
270be86db4f913d8951e90205dcac4324c170439bc1614aadf42e3b95d267987
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyre-1.13.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b8eb447f80ae488317ab4b9b2ca582208b4452d49e0d08d33ad4b563842239ff
|
|
BLAKE2b-256 checksum How to use checksums |
fa3cca44e9502ca20d0db1b08ab8f1371c930c2963a67c65cbf19af26b809a29
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pyre-1.13.1-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 |
962dcf40cfd5f05c9b11392881badc8409cf6dbfa4ac83d6867434621b8f2150
|
|
BLAKE2b-256 checksum How to use checksums |
6522b6ed94425dd722ac48908c6744fec9cbd6f2bcbfb793d1412153c0924e67
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | pyre-1.13.1-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
557323eefb5f56637a774b9f1faea15fd2e906b314cbba07adb18b05827e51c9
|
|
BLAKE2b-256 checksum How to use checksums |
8c8e425687a1f2d6f6dd7c8706b5bb26972f73fd8cd5a6312a6af8ad43197482
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyre-1.13.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
10ecc6db1d617523651b22f9cfadcbfd7ed04a5b26c613773f7e5c05ebb44b76
|
|
BLAKE2b-256 checksum How to use checksums |
1165a9b486f4bfc0cc6c7ab9e495d234646cad92e98a8008819ead98657a231c
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pyre-1.13.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b14f69db91271777612e4a421d52fe28a1d6b7091235583d24f873f3a5b5aecb
|
|
BLAKE2b-256 checksum How to use checksums |
5e03dc435ef0988228ed319bb5d6baef99c480c973235ab4f6bd43c689cf7752
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | pyre-1.13.1-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
541975fca07f44923d3bb459188928a677fc487c548d03bb6d5a4163ec3896b3
|
|
BLAKE2b-256 checksum How to use checksums |
5625e8e7bca72a16a2aeaca8c61b6a63d0c6e4b23f49e37322d2e2257d8eb2c1
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyre-1.13.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
20c14cf2f43aab9c68544ae2bb7159e27f2a1c6e3024160484bf755a1ac41414
|
|
BLAKE2b-256 checksum How to use checksums |
0f8b7fdb8c96e369ce0ec06c9a93b1004745784e146c28f60281f432d0770ab7
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pyre-1.13.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0c686741e55309c6e18d7e7b3f7bb9b2ccc5a098cc209d17e63efabdc29f4ea3
|
|
BLAKE2b-256 checksum How to use checksums |
cb85cf35b1ca77cdbbfcbc4e714e23b0de2c583863f0c98568521c079fe35814
|
| 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 24, 2026.
Transparency logRelease files / pyre-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | pyre-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
d29d174cfd07de87fde7e1ac405417593011566d755a25d1059d78f011a899fa
|
|
BLAKE2b-256 checksum How to use checksums |
f4f90f18f59557f5bfd1ec036f8d7717f1ae21f2282f1a3d5cef3e1cad2b2a9a
|
| 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 24, 2026.
Transparency log