We introduce eFFT, an efficient method for the calculation of the exact Fourier transform of an asynchronous event stream. It is based on keeping the matrices involved in the Radix-2 FFT algorithm in a tree data structure and updating them with the new events, extensively reusing computations, and avoiding unnecessary calculations while preserving exactness. eFFT can operate event-by-event, requiring for each event only a partial recalculation of the tree since most of the stored data are reused. It can also operate with event packets, using the tree structure to detect and avoid unnecessary and repeated calculations when integrating the different events within each packet to further reduce the number of operations.
⚙️ Installation
eFFT is provided as a header-only file for easy integration and relies solely on C++ standard and Eigen3 libraries.
Note: FFTW3 served as the benchmark for testing and evaluation. To enable it, define
EFFT_USE_FFTW3during compilation (e.g.,-DEFFT_USE_FFTW3).
📦 Dependencies
For C++ usage, the following dependencies are required:
- C++ compiler with C++17
- CMake ≥ 3.20.0
- Eigen ≥ 3.4.0
- FFTW3 ≥ 3.3.8 (optional; see
EFFT_USE_FFTW3) - (dev-only) GTest, Google Benchmark
For Python usage, dependencies are defined in python/pyproject.toml and the build dependencies are fetchable via python/CMakeLists.txt.
🖥️ Usage
Here's a minimal working example:
eFFT<128> efft; // Instance
efft.initialize(); // Initialization
Stimulus e(1, 1, true); // Event insertion
efft.update(e); // Insert event
efft.getFFT(); // Get result as Eigen matrix
And another example handling event packets:
eFFT<128> efft; // Instance
efft.initialize(); // Initialization
Stimuli events;
events.emplace_back(1, 1, true); // Insert event
events.emplace_back(2, 2, true); // Insert event
events.emplace_back(3, 3, false); // Extract event
efft.update(events); // Insert event
efft.getFFT(); // Get result as Eigen matrix
Please refer to the official documentation for more details.
🐍 Python Bindings
The eFFT library also provides Python bindings for seamless integration into Python-based workflows. These bindings are built using nanobind and offer the same functionality as the C++ library. You can build and install the bindings using the following commands:
cd python
pip install .
However, you can also use PyPI to install the package directly:
pip install efft
Here's an example of how to use the Python bindings:
from efft import Stimulus, Stimuli, eFFT
efft = eFFT(128) # Create an eFFT instance with a frame size of 128
efft.initialize()
event = Stimulus(1, 1, True) # Insert a single event
efft.update(event)
fft_result = efft.get_fft() # Retrieve the FFT result
events = Stimuli() # Insert multiple events
events.append(Stimulus(2, 2, True))
events.append(Stimulus(3, 3, False))
efft.update(events)
fft_result = efft.get_fft() # Retrieve the updated FFT result
📜 Citation
If you use this work in an academic context, please cite the following publication:
R. Tapia, J.R. Martínez-de Dios, A. Ollero eFFT: An Event-based Method for the Efficient Computation of Exact Fourier Transforms, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2024.
@article{tapia2024efft,
author={Tapia, R. and Martínez-de Dios, J.R. and Ollero, A.},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
title={{eFFT}: An Event-based Method for the Efficient Computation of Exact {Fourier} Transforms},
year={2024},
volume={46},
number={12},
pages={9630-9647},
doi={10.1109/TPAMI.2024.3422209}
}
📝 License
Distributed under the GPLv3 License. See LICENSE for more information.
📬 Contact
Metadata
Release files for efft 1.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| efft-1.0.5.tar.gz | 22.3 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| efft-1.0.5-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| efft-1.0.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| efft-1.0.5-cp312-cp312-macosx_10_13_x86_64.whl | CPython 3.12 | CPython 3.12 | macOS 10.13+ x86-64 | Details |
| efft-1.0.5-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| efft-1.0.5-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 |
| efft-1.0.5-cp311-cp311-macosx_10_13_x86_64.whl | CPython 3.11 | CPython 3.11 | macOS 10.13+ x86-64 | Details |
| efft-1.0.5-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| efft-1.0.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| efft-1.0.5-cp310-cp310-macosx_10_13_x86_64.whl | CPython 3.10 | CPython 3.10 | macOS 10.13+ x86-64 | Details |
| efft-1.0.5-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| efft-1.0.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| efft-1.0.5-cp39-cp39-macosx_10_13_x86_64.whl | CPython 3.9 | CPython 3.9 | macOS 10.13+ x86-64 | Details |
| efft-1.0.5-cp38-cp38-win_amd64.whl | CPython 3.8 | CPython 3.8 | Windows x86-64 | Details |
| efft-1.0.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| efft-1.0.5-cp38-cp38-macosx_10_13_x86_64.whl | CPython 3.8 | CPython 3.8 | macOS 10.13+ x86-64 | Details |
Total release size: 29.8 MB
Release files / efft-1.0.5.tar.gz
| Download URL | efft-1.0.5.tar.gz |
|---|---|
| Size | 22.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98a2071e3060954859c3bc791f5c210fd2c5fb5df0dd25c298cf477994739379
|
|
BLAKE2b-256 checksum How to use checksums |
0ef348b78958fef676eff426d986db9b2719b74ead673e22d2baf2bc8629ade2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp312-cp312-win_amd64.whl
| Download URL | efft-1.0.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
866ff59d246ecff38290ff33bfa25ae4af48264dee15f3e5bb682021546533ab
|
|
BLAKE2b-256 checksum How to use checksums |
d071bfbb90417cf877e60405a9b4f47e853ea5569d32cd122627fd95e932aa0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | efft-1.0.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
03c6a20da855d704bcb3e909f03c34db1e11db6bb0a1e36855bd903cfe8843c9
|
|
BLAKE2b-256 checksum How to use checksums |
11725283446b3ff7e2b2f76db7be02d7983d07de5b8f1641a3bfb13a28eda43e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | efft-1.0.5-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
181e98bb853f74151e58af24dcf2020713e41aef878ef7402bf926a44e6a98d1
|
|
BLAKE2b-256 checksum How to use checksums |
d949e37cbe2b98de1c577c6e86268e4887ff8738c3a4bf67221353f9126a66cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp311-cp311-win_amd64.whl
| Download URL | efft-1.0.5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c0cffbb698ad2f6e319d26561436fd2c96a0ddbed5768fb4757ac4a4b6cccc5b
|
|
BLAKE2b-256 checksum How to use checksums |
a6b78e878866510c4d09ab0da7891cb53272f6d2ca3c8981f3f5aed0d9f7ac61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | efft-1.0.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.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 |
05767277426d171a14baa0dac61932a746eb3c3b147efe4b7569c47d8240ba4b
|
|
BLAKE2b-256 checksum How to use checksums |
8978497f11672685f3b25a9f81c1c05818f9305247f35f99b278aae2d1f4c928
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp311-cp311-macosx_10_13_x86_64.whl
| Download URL | efft-1.0.5-cp311-cp311-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
7d94fbb3e9935d521d3dd98efaa5d0302616d042bddf7ce493865a261b60ec66
|
|
BLAKE2b-256 checksum How to use checksums |
6a8abb3f86ee2c0da98d646110e2233b06815ddba4f740432af2b04f49d4eda7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp310-cp310-win_amd64.whl
| Download URL | efft-1.0.5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9bde0037cfb3ddba3eb7e5e82b7af98bba33cf3ba57fc4f8c5cc9a08b997c96e
|
|
BLAKE2b-256 checksum How to use checksums |
dceefec13226ca766898c7aedbba97d6bae420c37a7f3fa724056e97afb89fd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | efft-1.0.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c32e341add0ec2106ff6355d662570dab38c60a49caf4174216eacd6c3c47d0f
|
|
BLAKE2b-256 checksum How to use checksums |
aefd9661b700f3df2a3aab845e04b239d04ed75804b2cd258715b5c415817a79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp310-cp310-macosx_10_13_x86_64.whl
| Download URL | efft-1.0.5-cp310-cp310-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
4a4f65cb63b3617ff747cbd6bc5f9daf3e6e1a4fc04c5743422c0159afce722c
|
|
BLAKE2b-256 checksum How to use checksums |
169168a93fef2341f01af3ebd12356b94781c82965ea714d97fa32812a658e59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp39-cp39-win_amd64.whl
| Download URL | efft-1.0.5-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
42e9513b7bec1421a593e7704bd2df19f62c056071e360baf180279ba38dc0de
|
|
BLAKE2b-256 checksum How to use checksums |
ea03e6d629bf6466aa0e989519db1e92b0fb5f046c96323c5fca5ab95458dfc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | efft-1.0.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
71fa089054450895eaf6f63ab590b2dd00c3ac28aacef87c48d63323e80e8b15
|
|
BLAKE2b-256 checksum How to use checksums |
38d5a8b7a73b6ad03df402ba674b34b1ee53fead84804a83f286a92347208764
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp39-cp39-macosx_10_13_x86_64.whl
| Download URL | efft-1.0.5-cp39-cp39-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.9 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
cf7affd7aa84a61923c784d63c97b24be73b0358456ad9e3ffe5b029a3ea681c
|
|
BLAKE2b-256 checksum How to use checksums |
a9f2a59a266f824e7bc21765cffdcad23acc2be21f70b6970965ece7e77382b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp38-cp38-win_amd64.whl
| Download URL | efft-1.0.5-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3804c9bd812533787cfed29aeb3958ae8fd76da76d1b73d371c55928a64c081a
|
|
BLAKE2b-256 checksum How to use checksums |
578bfa2505be72fb975e7bf8e7e9277a3a4e795592c1deee475df55f09d753f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | efft-1.0.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.8 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
18480d0c9315ddef40b899a3fbbbe4267a2a969d5e545a1abb4b2572e59c5f15
|
|
BLAKE2b-256 checksum How to use checksums |
bfa84a0f736ba08fb48adbb0a75dff866a966048dd5a41716deed7d9529938d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency logRelease files / efft-1.0.5-cp38-cp38-macosx_10_13_x86_64.whl
| Download URL | efft-1.0.5-cp38-cp38-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.8 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
8f4909e5d195a52a49b4f02e90e9855d096b4d303df13a7011e6e227f2ac2615
|
|
BLAKE2b-256 checksum How to use checksums |
7f159d21a3b3ceee5771e893c4afd6dd779cee66a9f9025f25ebee728eade5e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 11, 2026.
Transparency log