tenforty
Overview
tenforty is an open-source Python package designed to help demystify US
federal and state tax computations. This project offers an accessible way to
explore tax scenarios, compare different tax situations, and understand the
impact of various factors on tax liabilities. It's particularly useful for those
who would like to understand or optimize their taxes by evaluating how tax form
inputs affect their outputs.
The package is built on top of the Open Tax Solver project, wrapping its functionality into a Python library.
The package and the ideas behind it are discussed in a blog post
here.
tenforty also works well driven by a coding agent (Claude Code, Codex, and
friends) — the validated inputs and informative error messages make it a good
tool-call target.
You can try tenforty out immediately in your browser via the included Colab
notebook:
Features
- Compute US federal taxes, as well as taxes for several US states.
- Explore how taxes vary as a function of income, state, filing status, and year.
- Easily integrate with data analysis and visualization tools in Python with
polarssupport. - Evaluate "what if" tax scenarios efficiently and reproducibly.
Related Projects
If you've landed here while looking for open-source US tax computation, it's worth knowing the landscape — a few excellent projects approach this problem from different angles, and one of them may fit your task better:
- Tax-Calculator (Policy
Simulation Library) is a federal income and payroll tax microsimulation
model with a long pedigree in the policy-economics world. Its special power
is counterfactual law: every rate, bracket, and phase-out is a reformable
parameter, so it can answer "what would this filer (or the whole country)
pay under a proposed reform?" It models per-spouse income attribution and
has been validated against NBER's TAXSIM for years. If your question is
about policy analysis, revenue estimation, or distributional effects, start
there.
tenfortyuses Tax-Calculator as an independent validation oracle for its own federal results — see docs/taxcalc-differential-audit.md. - TAXSIM (NBER) is the long-standing academic reference model for US federal and state income taxes, callable remotely.
- PolicyEngine-US models federal and many state taxes alongside benefit programs, with a policy-reform focus similar to Tax-Calculator's.
What tenforty brings to this neighborhood: state returns computed locally,
form-level fidelity (actual form lines, via Open Tax Solver), exact marginal
rates via automatic differentiation, an input solver, and a deliberately
simple API. It's built for an individual interrogating their own return —
sensitivity analysis, what-if sweeps, optimization. Performance depends on
the backend, graph, and API path: a small Rust demo-graph benchmark is not a
measurement of a complete return through Python or the browser. The shipped
Python and browser graph paths use the interpreter, not the experimental JIT.
If your
question is "what would this return look like, federal and state, and how
does it change as inputs move?" — that's the job this package is built for.
Disclaimer
tenforty is an open-source tool intended for informational and educational
purposes only and does not provide tax advice.
Known limitations of this package are detailed in the Limitations section below.
Installation
Python 3.10–3.14 is supported on Linux and macOS. Python 3.15 is experimental: CI builds and installs a wheel on both platforms, requires both the OTS and Rust graph backends, and runs the standard test suite. These checks cover the regular CPython build, not the free-threaded build or optional notebook and Tax-Calculator dependencies.
Use Python 3.10–3.14 for supported installations. Prebuilt Python 3.15 wheels are not published yet; testing 3.15 from source requires a C++ compiler and Rust, and dependencies may also need to compile from source. Full 3.15 support will be reconsidered after the final Python release and wheel validation.
pip install tenforty
Main Functions Documentation
The two functions evaluate_return and evaluate_returns are the main
interface to tenforty. They take exactly the same arguments, except that any
of the arguments to evaluate_returns may either be a single value, or a list
of values. evaluate_return is for evaluating one single return, and
evaluate_returns evaluates all combinations of inputs subtended by the
provided values and collects the results into a dataframe.
The inputs to either function are validated, and if for example a filing status is misspelled, you'll get an informative error message along with a list of the valid options.
Here are all arguments available for those two functions:
| Argument | Type | Default | Notes |
|---|---|---|---|
year |
int | 2025 | 2018-2025 inclusive |
state |
str | None | None | Two-letter state code. Income-tax states with OTS support: AZ, CA, MA, MI, NC, NJ, NY, OH, OR, PA, VA. No-income-tax states (AK, FL, NV, SD, TN, TX, WA, WY) also accepted. Other states unsupported for now. |
filing_status |
str | Single | "Single", "Married/Joint", "Head_of_House", "Married/Sep", "Widow(er)" |
num_dependents |
int | 0 | |
standard_or_itemized |
str | Standard | Legacy choice: "Standard" is automatic greater-of; "Itemized" forces federal itemization (contract) |
w2_income |
float | 0.0 | |
taxable_interest |
float | 0.0 | |
qualified_dividends |
float | 0.0 | |
ordinary_dividends |
float | 0.0 | |
short_term_capital_gains |
float | 0.0 | |
long_term_capital_gains |
float | 0.0 | |
self_employment_income |
float | 0.0 | Schedule C profit used by Schedule SE and QBI |
qbi_w2_wages |
float | 0.0 | W-2 wages paid by the QBI business or aggregation |
qbi_ubia |
float | 0.0 | UBIA of qualified property for that business or aggregation |
qbi_is_sstb |
bool | False | Whether that business or aggregation is an SSTB |
schedule_1_income |
float | 0.0 | |
itemized_deductions |
float | 0.0 | |
state_adjustment |
float | 0.0 | |
incentive_stock_option_gains |
float | 0.0 |
The three qbi_ inputs describe one trade or business, or businesses the
taxpayer has validly aggregated for section 199A. They are not totals across
unrelated businesses, because Form 8995-A applies its wage and UBIA limitation
per business or valid aggregation. Their defaults model a non-SSTB business
with no business W-2 wages or qualified property. The OTS backend uses OTS's
Form 8995 for the independent QBI base and taxable-income ceiling, then applies
the missing Form 8995-A wage, property, and SSTB limitation in tenforty's
orchestration layer before rerunning Form 1040.
The functions output these fields:
| Output Field | Description |
|---|---|
| total_tax | Combined federal and state tax liability |
| federal_adjusted_gross_income | Federal Adjusted Gross Income (Form 1040 Line 11) |
| federal_effective_tax_rate | Percentage of AGI paid in federal tax |
| federal_tax_bracket | Marginal federal tax bracket (0-37%) |
| federal_taxable_income | Income subject to federal tax after deductions |
| federal_qbi_deduction | Qualified business income deduction (Form 8995/8995-A) |
| federal_amt | Federal Alternative Minimum Tax |
| federal_income_tax | Federal income tax + AMT (excludes SE tax, NIIT, Additional Medicare Tax) |
| federal_se_tax | Federal self-employment tax (Schedule SE) |
| federal_niit | Net Investment Income Tax (Form 8960) |
| federal_additional_medicare_tax | Additional Medicare Tax (Form 8959) |
| federal_total_tax | Total federal tax (income tax + SE + NIIT + Additional Medicare) |
| state_adjusted_gross_income | State-level Adjusted Gross Income |
| state_taxable_income | Income subject to state tax after deductions |
| state_total_tax | Total state tax liability |
| state_tax_bracket | Marginal state tax bracket |
| state_effective_tax_rate | Percentage of state AGI paid in state tax |
Examples
Here are some examples of what you can do with tenforty:
Basic Evaluation
The evaluate_return function computes the outputs for a single tax return
given some inputs:
from tenforty import evaluate_return
evaluate_return(
w2_income=100_000, state="CA", filing_status="Married/Joint", num_dependents=2
).model_dump()
This results in the following:
{'total_tax': 8484.0,
'federal_adjusted_gross_income': 100000.0,
'federal_effective_tax_rate': 11.4,
'federal_tax_bracket': 12.0,
'federal_taxable_income': 74100.0,
'federal_amt': 0.0,
'federal_income_tax': 8484.0,
'federal_se_tax': 0.0,
'federal_niit': 0.0,
'federal_additional_medicare_tax': 0.0,
'federal_total_tax': 8484.0,
'state_adjusted_gross_income': 0.0,
'state_taxable_income': 0.0,
'state_total_tax': 0.0,
'state_tax_bracket': 0.0,
'state_effective_tax_rate': 0.0}
No year= argument was specified here, so the current tax year, 2025, was used.
The output is a pydantic model, and we've called its .model_dump() method to
show the result as a dictionary.
Marginal Rates for Every Input
The graph backend can differentiate a selected output with respect to every continuous public input at once:
from tenforty import marginal_rates
rates = marginal_rates(
year=2024,
state="CA",
filing_status="Single",
w2_income=100_000,
)
rates["w2_income"]
The returned dictionary uses the same natural input names as
evaluate_return. It includes federal inputs and any continuous inputs mapped
by the selected state; discrete choices such as filing status and number of
dependents are omitted. The existing marginal_rate(..., wrt="w2_income")
function remains available for one input at a time.
Tax calculations are piecewise functions. At a bracket, phase-out, or other
active boundary, both marginal-rate APIs report the composed function's
right-hand derivative: the change implied by adding a small amount to that
input. Smooth entries in marginal_rates share one reverse-mode traversal per
resolved output.
The reproducible autodiff planning examples show a full next-dollar table, the interaction between wages and long-term-gain stacking, and a bounded ordinary-income sizing exercise. They also measure where forward simulation remains competitive and explain why derivatives alone cannot find true tax cliffs.
Creating Tax Tables: Federal/State Tax Brackets as a Function of W2 Income
The evaluate_returns method sweeps out a grid over any input arguments that
are provided as lists, allowing you to evaluate a wide array of tax scenarios.
Here we make a simple tax table by varying W2 income:
from tenforty import evaluate_returns
evaluate_returns(
w2_income=list(range(50_000, 250_001, 50_000)),
state="CA",
filing_status="Married/Joint",
num_dependents=2,
)[
[
"w2_income",
"federal_effective_tax_rate",
"federal_tax_bracket",
"state_effective_tax_rate",
"state_tax_bracket",
]
]
This results in a polars.DataFrame (use .to_pandas() if you need pandas compatibility):
| w2_income | federal_effective_tax_rate | federal_tax_bracket | state_effective_tax_rate | state_tax_bracket |
|---|---|---|---|---|
| 50000 | 10.3 | 12 | 1.5 | 2 |
| 100000 | 11.4 | 12 | 3 | 6 |
| 150000 | 14.9 | 22 | 4.6 | 9.3 |
| 200000 | 17 | 22 | 5.9 | 9.3 |
| 250000 | 18.5 | 24 | 6.6 | 9.3 |
Plot: Federal Tax as a Function of W2 Income
Since the output is a dataframe, one may readily use any of numerous visualization tools to make plots. Here we revisit the example above, evaluating a wider range of W2 incomes at finer resolution than before.
import seaborn.objects as so
df = evaluate_returns(w2_income=list(range(0, 250_001, 1_000)))
(
so.Plot(df, x="w2_income", y="total_tax")
.add(so.Line())
.label(
x="W2 Income", y="Federal Tax", title="Federal Tax as a Function of W2 Income"
)
)
Plot: Federal Tax Over Time
The good people at Open Tax Solver have published editions each year for 21
years, so one can just as easily vary the year as any other parameter. At the
moment tenforty supports back to the 2018 tax year. Here we show the federal
tax on $100K of W2 income for the past five years.
import polars as pl
df = evaluate_returns(
year=[2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025], w2_income=100_000
).cast({"year": pl.Utf8})
(
so.Plot(df, x="year", y="total_tax")
.add(so.Line())
.add(so.Dot())
.label(
x="Year",
y="Federal Tax",
title="Federal Tax on $100K W2 Income Over Time",
)
)
This one's a little melodramatic because we don't make the y-axis go to zero; it's only about a 3% drop over the years.
Plot: Impact of Long-Term Capital Gains
Because Open Tax Solver supports short- and long-term capitals gains calculations -- although, see the Limitations section below -- you can ask questions about the impact on your taxes of selling some appreciated stock this year, and show the breakdown between state and federal taxes:
import polars as pl
df = (
evaluate_returns(
w2_income=75_000,
state="CA",
long_term_capital_gains=list(range(0, 125_001, 5000)),
)
.select(["long_term_capital_gains", "state_total_tax", "federal_total_tax"])
.unpivot(index="long_term_capital_gains", variable_name="Type", value_name="tax")
.with_columns(
pl.col("Type").replace(
{"state_total_tax": "State", "federal_total_tax": "Federal"}
)
)
)
(
so.Plot(df, x="long_term_capital_gains", y="tax", color="Type").add(
so.Area(alpha=0.7), so.Stack()
)
.label(
x="Long-Term Capital Gains",
y="Total Tax",
title="Impact of LTCG on Total Tax for California Resident",
)
)
Plot: Will I Incur Alternative Minimum Tax (AMT)?
Employees at tech companies are commonly issued incentive stock options, the
exercise of which can put them in a situation where they need to pay actual
money in taxes on paper gains, via the alternative minimum tax. With
tenforty's help you can see it coming at least: ;)
import polars as pl
df = (
tenforty.evaluate_returns(
w2_income=100_000, incentive_stock_option_gains=list(range(0, 100_001, 2500))
)
.select(["incentive_stock_option_gains", "federal_total_tax", "federal_amt"])
.unpivot(index="incentive_stock_option_gains", variable_name="Type", value_name="tax")
.with_columns(
pl.col("Type").replace(
{"federal_amt": "AMT", "federal_total_tax": '"Regular" Tax'}
)
)
)
(
so.Plot(df, x="incentive_stock_option_gains", y="tax", color="Type")
.add(so.Area(alpha=0.7), so.Stack())
.label(
x="Incentive Stock Option Gains",
y="Total Federal Tax",
title="Effect of ISO Gains on Federal Alternative Minimum Tax\nGiven $100K W2 Income",
)
)
Known Limitations
- Currently does not support Windows. The Colab notebook linked above, or using WSL are workarounds. Attempts have been made to get Windows builds working, but runtime crashes persist due to compiler interoperability challenges; see Windows Build Research for details.
- Medicare and Net Investment Income Tax are not automatically computed on capital gains, so if those apply to your situation the output tax will be underestimated.
- State income tax is supported for a growing number of states, with more being added. No-income-tax states (e.g. Texas, Nevada) are also accepted. Only California has been tested against tax returns prepared independently by professional tax software; other states have formula-derived and property-based testing. See IRS Validation for details.
Development & Contributing
Contributions are welcome! See our Contributing Guidelines for the development process and coding standards.
Documentation for developers:
- Development Guide - Package internals, Cython extensions, and environment setup
- Error Handling - Configuring
on_errorpolicies and exception types - IRS Validation - Testing methodology against official IRS and state sources
License
tenforty is released under the MIT License.
Acknowledgments
This project relies on the Open Tax Solver project for the underlying tax computation logic.
Metadata
Release files for tenforty 2025.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tenforty-2025.12.tar.gz | 1.9 MB | With provenance | Details |
Built distributions (wheels)
Total release size: 79.4 MB
Release files / tenforty-2025.12.tar.gz
| Download URL | tenforty-2025.12.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6e096f1fcf51ac12941817a6a61db8faf04948abd395a8932ee245c7453c88d
|
|
BLAKE2b-256 checksum How to use checksums |
cfe36ca7b94bc533cb27ac22295a8a11c81792358318db7bed8846d4aae62fe4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp315-cp315-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp315-cp315-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.15 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
f1cee07400cd726881618d56fcc01d7b63bcd18c5444067e3ba5c122b30b4d96
|
|
BLAKE2b-256 checksum How to use checksums |
21e831609ad911946c34d01bdddfdebc202b4de7f5d3f1bba9255b1aeb921954
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp315-cp315-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp315-cp315-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.15 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
099e15c38e9c0a38cedec461425f673f76209a1021d4ad6f1d87c386de865613
|
|
BLAKE2b-256 checksum How to use checksums |
485ded226576d86ff2586a23cd292c8bf5e4c57ade6933c75fa9bddbf9076661
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp315-cp315-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp315-cp315-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.15 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a0f556323a2f9b98aaedd7db81c00bfce6f18fae7b686f52f85633b2e546600e
|
|
BLAKE2b-256 checksum How to use checksums |
0010464c922260a3e2d058a19b38521e0e38b0b480b84ee0ad978ad55f4da113
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
298673ca545d3eb1484d316e2b0130a08e87fedede89c00af7a6d361c9287fd0
|
|
BLAKE2b-256 checksum How to use checksums |
ea9cdd437feec8668f9179a0756cac71aa05320e1b027368f1cddb3629896f08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0685bcf6cf0f077fda9baf77b2fccc3f1c06e2680de443754a7a7183f1924d5f
|
|
BLAKE2b-256 checksum How to use checksums |
a063a08933342f1f225123c0e0f40cd867e9196f3fa513e2dc152d17226aad52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d5c2b574f0c38817e576ee53083bdb15dbe7260da1831d025eccfdf23d4531c4
|
|
BLAKE2b-256 checksum How to use checksums |
a366f41ffbee00778251855ba3cafe2fc5f344e99dfaf16ad21591a028b8daec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
a02c0c944fae6160891a7b51e352c319fe5696a343e815757c2f05c81f608ca0
|
|
BLAKE2b-256 checksum How to use checksums |
351b11469f395a7e3fb1fcab1295aba92eb6053cf51845f5570a4ab7c1561417
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c633e19a26b3ced2821e84ff695d0e078e8cfca86a8d28e6b1dc5d468c3fce72
|
|
BLAKE2b-256 checksum How to use checksums |
d65ba67f5d6080c995fa2821073b9b165fe14df700e56f116fb3dec03673d592
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9ad4d16ddcfc22ea908d2dbf4d9faf1f664ea2adce363acdb86adf36dde6002a
|
|
BLAKE2b-256 checksum How to use checksums |
b66758255c7b20f14544a1c8f27ea3b67fbfbcb687e876e25670a61925007f1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
aba6048cb322b6c154a22dcf694a03401296fab020a58b63a872ee8cf4549ab7
|
|
BLAKE2b-256 checksum How to use checksums |
fb22c5698cfb42611b3bbab9b2b881bb9c42ad79c71d324cf869816dfdab0d4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ed646fda01aee71c370d205d2e0fefc49068349be9385d4fc01101adcd9e1239
|
|
BLAKE2b-256 checksum How to use checksums |
a976eaaa2a1b00a22b6a9a58ed8cf49f55b87431cc01480ab6f6a6fd8c9edce1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3f76c8e8099606b3b7ccd5b0b3af5d3ca2c9231e424f74c85d6df211eeec1ba2
|
|
BLAKE2b-256 checksum How to use checksums |
5764bba24b2f41e5ce45205fbba259665c4a1718d0b959abdfdc15732ac3f5c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
491d569d256ee46cdc922815ab7f5ea268c5b1deb4e8f7a5db73002c557da0f0
|
|
BLAKE2b-256 checksum How to use checksums |
18d63f6308c7a15e37abbf0fb956512b9c64ef7c72be3dd81b3dcef6cf87beb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7a8b98af9f52f49cd79d0f5584fc584215817a9b61d9807e949c04593bdf18f8
|
|
BLAKE2b-256 checksum How to use checksums |
0c2a5bc0bf24bf28f869996aa09a3820382e7eca53cbe009b420fe55aeb54fa9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dffb714df5b48131a0a472d59274b9aa7597cf9e2399940b262e3658aa9fb293
|
|
BLAKE2b-256 checksum How to use checksums |
6120461ed9b98ca647d91fd7dfc5243b76d5d3bd1cb8dd11fe37d39ff8e5ac07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | tenforty-2025.12-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2baa95034ab1059e80c51f2b9f545e7bc132866f120d75572e09464b7fc1bee3
|
|
BLAKE2b-256 checksum How to use checksums |
1bc89386d6d6573f7f215664946bd6f4c08ef4fe7635f8a7751bb3b0af5d8011
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | tenforty-2025.12-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3a1cd84b95bf5a34c131330cbcd40b491ef07adfe3c35296f65982910d42fddc
|
|
BLAKE2b-256 checksum How to use checksums |
2c1238f578a84f9025cceebcb600fea45be0d4223d9592884a50a51b260d53ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logRelease files / tenforty-2025.12-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | tenforty-2025.12-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4091e5964baad147f58f28922fafcbfec70a8ccb7806cf7d15a9b0e5511366db
|
|
BLAKE2b-256 checksum How to use checksums |
4d4e7ab898a2a8af021e4aef9b0b380255c393cb10d6bd900270085e6d022df6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 22, 2026.
Transparency logSecurity for tenforty 2025.12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 19 files in this release have been uploaded with provenance metadata.
Attestation for tenforty-2025.12.tar.gz
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 Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.