econometricsmodels
A Python API providing statistical and econometric analysis methods.1 Its design prioritizes ease of embedding from scripts and programs (type completion, validation, dynamic construction).
- The computational core is implemented in Rust and thinly bound to Python via PyO3.
- Data input is restricted to polars DataFrames only, passed to the Rust side via Arrow zero-copy.
- Formula-string parsing (e.g.
y ~ x1 + x2) is not used. The dependent variable is passed as a single column name (str), independent variables as a list of column names (list[str]), and estimation options as an instance of a dedicated class.
Is this for you?
Good fit:
- Calling estimation methods from scripts, pipelines, or GUI apps — the
str/list[str]+ options-object API (see above) is built for programmatic construction, not interactive formula-writing. - Exploratory or experimental analysis, where you value having validation (see Verification accuracy below) but don't need the full breadth of diagnostics a mature package offers.
- Environments where a pure-Rust computational core (no system BLAS/LAPACK dependency) simplifies installation.
- Working with large datasets, where the polars + Arrow zero-copy handoff to the Rust core (see above) avoids the extra data copy that pandas/numpy-conversion-based wrappers typically incur.
- Projects that will lean on more than one econometric method over time — the roadmap covers a broad range (see Implementation status), all under one consistent API.
Probably not a good fit:
- Published research or other work where correctness has to be beyond question — see the disclaimer below.
- Workflows built around R-style formula syntax (
y ~ x1 + x2); this is a deliberate design choice (see above), not a missing feature, and isn't planned. - Use cases that need the long tail of diagnostics, edge-case handling, and model types that statsmodels/R packages have accumulated over years of real-world use.
- Cases where you only ever need a single method, or where install footprint is tight — this package bundles everything into one Rust-compiled extension by design, so it's not the leanest choice if you don't need the breadth.
Disclaimer
This is a solo-maintained, pre-1.0 project. Estimates are checked against statsmodels/R reference implementations (see Verification accuracy), but it has not had the years of community scrutiny and edge-case hardening that established packages have. If you're using this for an important decision — an academic paper or otherwise — we strongly recommend double-checking against a trusted, established package such as statsmodels or an R equivalent.
Installation
pip install econometricsmodels
Requires Python 3.12 or later.
Quickstart
OLS
import polars as pl
from econometricsmodels import OLS
df = pl.DataFrame(
{
"y": [2.1, 3.9, 6.2, 8.1, 9.8],
"x1": [1.0, 2.0, 3.0, 4.0, 5.0],
}
)
result = OLS(df, y="y", x=["x1"]).fit()
print(result.params) # {"const": ..., "x1": ...}
print(result.std_errors) # {"const": ..., "x1": ...}
print(result.r_squared)
# Row-oriented parameter table (param/coef/std_err/t_stat/p_value/conf_lower/conf_upper).
print(result.coef_table())
# Overall-fit statistics.
print(result.f_statistic, result.f_p_value)
print(result.aic, result.bic)
Logit
from econometricsmodels import Logit
df = pl.DataFrame(
{
"y": [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0],
"x1": [1.0, 1.5, 2.0, 2.5, 3.0, 3.2, 3.8, 4.0, 4.5, 5.0],
}
)
result = Logit(df, y="y", x=["x1"]).fit()
print(result.coef_table()) # same shape as OLS, but z_stat instead of t_stat
print(result.aic, result.bic)
# Likelihood-ratio test for overall significance (the Logit/Probit analogue
# of OLS's F-statistic), plus McFadden pseudo R-squared.
print(result.lr_statistic, result.lr_p_value)
print(result.pseudo_r_squared)
Probit has the same API shape as Logit (drop-in replacement).
For more details — including how to switch to heteroskedasticity-robust standard errors (HC0-HC3), cluster-robust standard errors, HAC (Newey-West) standard errors, and Logit/Probit-specific features (marginal effects, classification tables) — see the documentation site. The full documentation, including the API reference, is published at https://masahiroyecon1997dev.github.io/econometricsmodels/.
Implementation status
Implemented: OLS (Ordinary Least Squares), WLS (Weighted Least Squares), Logit, Probit, IV (2SLS/GMM), Tobit.
Planned next, in this order (full roadmap: #276):
- FE (Fixed Effects)
- RE (Random Effects)
- Fixed-Effects IV
- GLS (Generalized Least Squares)
- DID & event study (basic two-period / two-way fixed-effects form)
- Multinomial Logit
- Ordered Logit
- Ordered Probit
- BLP (Random Coefficient Logit)
- PPML (Poisson Pseudo-Maximum-Likelihood)
- Heckman (two-step / Heckit)
Quantile Regression is also a confirmed target, though its position in the sequence is not yet fixed.
During the 0.x.x pre-release period, breaking changes may occur even in minor version bumps.
Verification accuracy
Estimates for each implemented method (coefficients, standard errors, confidence intervals, AIC, BIC, log-likelihood, and the model's overall-significance test — F-statistic/p-value for OLS/WLS, likelihood-ratio statistic/p-value for Logit/Probit — plus R²/adjusted R² for OLS/WLS and McFadden pseudo R² for Logit/Probit) are verified by numerical comparison against reference implementations. In addition to a primary reference, an independent implementation is used as a cross-check.
| Method | cov_type |
Primary reference | Independent cross-check |
|---|---|---|---|
| OLS / WLS | classical / HC0-3 / cluster | statsmodels (relative tolerance 1e-8) | R (lm/lm(weights=) + sandwich/lmtest, relative tolerance 1e-8) |
| OLS / WLS | HAC (Newey-West) | statsmodels (relative tolerance 1e-8) | R (relative tolerance 1e-2 for OLS, 5e-2 for WLS — looser due to differing small-sample correction conventions) |
| Logit / Probit | classical / OPG / HC0 / cluster | statsmodels (relative tolerance 1e-8) | R (glm + sandwich/marginaleffects, relative tolerance ~2e-4 — looser due to differing optimizer convergence) |
| Logit / Probit | HC1 | R (glm + sandwich, relative tolerance ~2e-4) — used as the primary reference here, since statsmodels' discrete-choice models omit the n/(n-k) small-sample correction for HC1 |
— |
| IV (2SLS) | classical / HC0-HC1 / cluster | linearmodels (relative tolerance 1e-8) | R (ivreg + sandwich/lmtest, relative tolerance 1e-8) |
| IV (2SLS) | HAC (Newey-West) | linearmodels (relative tolerance 1e-8) | R (relative tolerance 1e-2, loosened to 1e-1 for a small-n scenario) |
| IV (2SLS / GMM) | HC2/HC3 | Verified against a manually-derived sandwich formula only (no cross-implementation reference: linearmodels has no HC2/HC3 for IV, and ivreg has no established leverage formula for it) |
— |
| IV (GMM) | classical / HC0-HC1 / cluster / HAC | linearmodels IVGMM (relative tolerance 1e-8) |
— (ivreg does not support GMM) |
Performance
The computational core is written in Rust, so the aim is that calling fit() is never the bottleneck. The figures below are end-to-end Model(...).fit() wall-clock times — including the polars → Arrow zero-copy handoff, the PyO3 boundary, and the full set of fit statistics each method computes — not just the linear-algebra kernel.
Measurement setup. Development container (.devcontainer/, Python 3.14), release build (maturin develop --release), linear-algebra backend pinned to a single thread (see Known performance issues below), one warm-up run discarded, median of 3 repeats. This is a single local sweep on one machine — treat the numbers as indicative, not as a rigorous benchmark. The same scripts run in CI on tag pushes (.github/workflows/benchmark_performance.yml, shared runners) where the numbers vary more. Measured 2026-09-06 on the release/v0.6.0 branch.
Median fit() time in seconds — cov_type="classical", 5 regressors, default optimizer:
| Method | n = 1,000 | n = 10,000 | n = 100,000 | n = 1,000,000 |
|---|---|---|---|---|
| OLS | 0.0001 | 0.0011 | 0.012 | 0.14 |
| WLS | 0.0001 | 0.0012 | 0.014 | 0.16 |
| Logit | 0.0005 | 0.0050 | 0.051 | 0.65 |
| Probit | 0.0018 | 0.011 | 0.12 | — 1 |
| IV (2SLS) | 0.0009 | 0.0079 | 0.083 | 1.5 |
| Tobit 2 | 0.0011 | 0.014 | 0.15 | — 1 |
1 Probit and Tobit currently stop at n = 100,000 — see Known performance issues. 2 Tobit is newly implemented; its large-n behavior is still being hardened (see Known performance issues).
Peak resident memory is roughly 160–260 MB at n ≤ 100,000 for every method, growing with n (about 400 MB for OLS/WLS and 1.1 GB for IV at n = 1,000,000).
Per-method detail — n- and k-axis sweeps, every cov_type, the non-default optimizers, and a side-by-side comparison against statsmodels / linearmodels / py4etrics — is in docs/performance/. Reproduce with python -m performance.compare_<method> --repeats 3.
Known performance issues
All of the following are engine-side and under investigation.
- Multi-threaded linear algebra is unstable under load (#283). Under contention on a many-core machine the pure-Rust linear-algebra backend can slow down by 20x or more, so every measurement above pins it to a single thread; multi-core speedup is not reflected here.
- Non-default optimizers are slow for Logit / Probit / Tobit (#285). The default Newton–Raphson is fine; selecting
method="bfgs"or"lbfgs"is currently several times to ~40x slower. - Tobit
method="bfgs"diverges at n ≥ 10,000 (#292) with a line-search NaN/Inf error. Use the default Newton, or L-BFGS. - Probit / Tobit Newton Hessian goes singular at large n (#284 Probit, #291 Tobit) for some datasets — this is why the table above stops at n = 100,000 for those two. The statsmodels / R reference implementations converge on the same data.
License
-
econometricsmodels began as the analysis engine for economicon, a GUI application for data analysis. That project's development is currently paused while the author's focus is on this package. ↩
Metadata
Release files for econometricsmodels 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| econometricsmodels-0.6.0.tar.gz | 418.7 kB | Details |
Built distributions (wheels)
Total release size: 71.4 MB
Release files / econometricsmodels-0.6.0.tar.gz
| Download URL | econometricsmodels-0.6.0.tar.gz |
|---|---|
| Size | 418.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
20ae4076898b4c0c61592db13ce7b8126c7a76b63d6f2305625195b89085b331
|
|
BLAKE2b-256 checksum How to use checksums |
0ed8593dc87f8e924a3fb3db3196213d09a1533bbdb31346e91282a6b8c8a1e9
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp314-cp314-win_amd64.whl
| Download URL | econometricsmodels-0.6.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
777c956281283502d30b649ab434887fc77c8811d8b929795087851957bf95dd
|
|
BLAKE2b-256 checksum How to use checksums |
d468b0f3a40ac917baf25428c8bfb7e0dc40d1803cb9a65a7a7b21c5f90e4df4
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.5 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a48e4d3ea8c40b44d836e12289743dd8f8237b8b3aa348de963a7e237d90d1ab
|
|
BLAKE2b-256 checksum How to use checksums |
2fe9e665f4893f4f8b45e23b289f231afb25a76b397190dbb6ad17ff83edecd4
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | econometricsmodels-0.6.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
624189c06a20f1f5457e7c26f3dd0573c72481db6bbb6f40f6e430c9ea62063a
|
|
BLAKE2b-256 checksum How to use checksums |
c1e8dc89d7a3601f6bdb9347fc8ac85e091cd4d97548edd5fbf8bc7dcf27d957
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
cd5ebdd15d1b448b8e9f20c0e38ed12272725201754572d9f4a6cc667fb2c9b1
|
|
BLAKE2b-256 checksum How to use checksums |
a1d16fa8309974adfbf6f118905057dcf708b5043612c3b0b71542963abff0cb
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp313-cp313-win_amd64.whl
| Download URL | econometricsmodels-0.6.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
15c19b934fa8d7b14688c331549f5d3db6aeefe85783898f251e81f1d0d2a0d3
|
|
BLAKE2b-256 checksum How to use checksums |
c8e8a7645490958d9d29c535d730086fb8cbf7a14632be5dd2e68f5c72d1205b
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.5 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4ea7f74824369a1957ed605be97d2deeca272167de9d2dedc288236f3b731b8e
|
|
BLAKE2b-256 checksum How to use checksums |
1af8daa789fac968c53fd102fc977562beccfa2e7cd3847aedfaa03ebc0f59a6
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | econometricsmodels-0.6.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5bca7fc61b6939fa949633b70a325f014462077787682fbf5a13898bc7566fa1
|
|
BLAKE2b-256 checksum How to use checksums |
32bcdaa770c7f42aabf7d0eb2a4a08f1784bd8f649ed0ed1048daeac00a2fc70
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
41f7c377d32218a376792a1d22a9506a56287783cbb490f84e8953269cffc372
|
|
BLAKE2b-256 checksum How to use checksums |
026831be7ae3d7e2795e02682b9b0fd3a20f34f8b45a9adde95c7cb5b86530cb
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp312-cp312-win_amd64.whl
| Download URL | econometricsmodels-0.6.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
87966dbd959e4b7d23a9c7a6206833ceb1b4914dd9f182e49c55daca7d52a468
|
|
BLAKE2b-256 checksum How to use checksums |
3c4a3b95747ea433e58cab5e226a5f1150fbc9e9979033d620d0a5cb40dd7c30
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.5 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6dc33327ee8ca0b97373febbd92a405cfbe22e9e00622d7d8c149d707c1bc78f
|
|
BLAKE2b-256 checksum How to use checksums |
03eb49ffcdf6a017e9553f5d54e60e87a35a95f813c4480ba7111a09386146d9
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | econometricsmodels-0.6.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0f0e29e523d585f85a7e088fdc250d7c84108d8833983e292d5d303aeabe67bd
|
|
BLAKE2b-256 checksum How to use checksums |
3f5c5fae7976869dddfbd1f5cf2b7445b11493d7619e2c1e91d92b6d3d153d93
|
| 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 6, 2026.
Transparency logRelease files / econometricsmodels-0.6.0-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | econometricsmodels-0.6.0-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
cf0f7e0797ee1d5459e63b26c6ffcc9853ef9014b8459d9fc7227c988aa8de2a
|
|
BLAKE2b-256 checksum How to use checksums |
28927e5192a80f18cab8eba29b5010a4dc0d81d5f32805dd18445a7ba3c4afdf
|
| 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 6, 2026.
Transparency log