Skip to main content

tenforty

GitHub Actions pre-commit.ci status

PyPI Python Version Downloads

License Operating System Built with uv Ruff

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.

A GPT interface to tenforty is available with a ChatGPT+ account here. This GPT, and the tenforty package itself, are discussed in a blog post here.

You can try tenforty out immediately in your browser via the included Colab notebook: Try In Colab

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 polars support.
  • Evaluate "what if" tax scenarios efficiently and reproducibly.

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

Requires Python 3.10+.

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 "Standard" or "Itemized"
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
schedule_1_income float 0.0
itemized_deductions float 0.0
state_adjustment float 0.0
incentive_stock_option_gains float 0.0

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_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.

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"
    )
)

Image: 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",
    )
)

Image: Federal Tax 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",
    )
)

Image: Impact of Long-Term Capital Gains

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",
    )
)

Image: Am I in AMT?

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:

License

tenforty is released under the MIT License.

Acknowledgments

This project relies on the Open Tax Solver project for the underlying tax computation logic.

Release files for tenforty 2025.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tenforty 2025.11
File Size Uploaded
tenforty-2025.11.tar.gz 1.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for tenforty 2025.11
File
tenforty-2025.11-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
tenforty-2025.11-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
tenforty-2025.11-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
tenforty-2025.11-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
tenforty-2025.11-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
tenforty-2025.11-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
tenforty-2025.11-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
tenforty-2025.11-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
tenforty-2025.11-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
tenforty-2025.11-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
tenforty-2025.11-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
tenforty-2025.11-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
tenforty-2025.11-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
tenforty-2025.11-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
tenforty-2025.11-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 63.6 MB

Release files / tenforty-2025.11.tar.gz

Download URL tenforty-2025.11.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
82823311221a074bdd2667f9bf52a1615710ae0d35d9fcba6076751443626bc8
BLAKE2b-256 checksum
How to use checksums
b7c96296c0d1cf36545b2e3db6bced077f1063ad8ccc6f8a418ed92514ccf3fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL tenforty-2025.11-cp314-cp314-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
093bf54fa3cf6da2a3f63fae4f77c9bfe15c8650828127de1d0cfe28a2ddc124
BLAKE2b-256 checksum
How to use checksums
b50120250b897224c0c7141dbfba1343a56b3fbc505a04975d5a05ff2ff556be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL tenforty-2025.11-cp314-cp314-manylinux_2_28_x86_64.whl
Size 4.5 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
79b03cf925838a100110d58b6b5a55d4be012d057e271164b71f40ffbaca0010
BLAKE2b-256 checksum
How to use checksums
03b3d557babd87c5f7135c001e64b0d0e2e8a5f6ceea3dd8fff19c22013a768f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp314-cp314-macosx_11_0_arm64.whl

Download URL tenforty-2025.11-cp314-cp314-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1ab102df2a69ffeda3836dad1598689c14206cbbeca7f3e9ed2bc33fccbfe646
BLAKE2b-256 checksum
How to use checksums
c25f4848a09446cc6a183cd519ce889ff1f84b626bb862dc3a43a1d0b12d8a18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL tenforty-2025.11-cp313-cp313-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
76ddad5880b0575f5a8b2afb9e5ec22aac9bd3ee4bde664ef38f8094263f64bb
BLAKE2b-256 checksum
How to use checksums
476a80224e969fa920974b0b371c1aec9b539c6876e2e065122f9a1e0ff10e8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL tenforty-2025.11-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.5 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c25ebc1fe60d8f0257607c8b9debe2bcd788247c2eda097bf02d7083754816c0
BLAKE2b-256 checksum
How to use checksums
98b7a16cecfa1593591456099302a6a75e312249b792b4b9e4522aaae865eb55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp313-cp313-macosx_11_0_arm64.whl

Download URL tenforty-2025.11-cp313-cp313-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ee27d29f53c14a1a003b3ed278dea035661be5abb8698dd9c927dc974ddcf400
BLAKE2b-256 checksum
How to use checksums
7bac95061de093fcd666d7543b7564f8f24a9f0edf54713e3a20e83616f3d777
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL tenforty-2025.11-cp312-cp312-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8e5c7967357a2eef6d19985a19d54c8a8f6e80f478e4b49677655ca32baf0187
BLAKE2b-256 checksum
How to use checksums
f8d3795e7ee4f8fab2f19d6853395e105c09fdd512984b41ded75ae9ef1b466b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL tenforty-2025.11-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.5 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ec68f2287acdcccffaabc10353babc1465422e7525947fc3e211a2185943642f
BLAKE2b-256 checksum
How to use checksums
93cb19b344b58faf102173b474098effe3c1012d690dc3b7333784d703c24b6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp312-cp312-macosx_11_0_arm64.whl

Download URL tenforty-2025.11-cp312-cp312-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5d86ffd4615179a1f22cb28dbb7396d857bc51bd9ebc29871a60586a2f06e6a3
BLAKE2b-256 checksum
How to use checksums
7c874bd80ac1b8e560070119ce03a223fc4d7f0dd02a575b2d9175f65f4d81e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL tenforty-2025.11-cp311-cp311-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
337d22daa482bdcf5ddcf22105f9b4682e5f8966612b54451cb3b94031d5f8af
BLAKE2b-256 checksum
How to use checksums
0b01f6e715228e0df2d0e97a326c24a230e419b45b710adfa1a61992df0c8c8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL tenforty-2025.11-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.5 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0a54d425ea9d6636ed030f37f6942d5d9b32d52577731291eef3027ff5bbf076
BLAKE2b-256 checksum
How to use checksums
414db4f7943d0bf4fac2a2e592b60c9c1f8a76490b7e6e9b160677ecbb3ae949
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp311-cp311-macosx_11_0_arm64.whl

Download URL tenforty-2025.11-cp311-cp311-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
06b2b09a5daaca3670d6d0d3aedd0cd79d3000c14c6173eaec19a0219d9f428c
BLAKE2b-256 checksum
How to use checksums
37038e993bdc02537f0bccab8288aa189d905c678e37cdac943e967f72f88299
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL tenforty-2025.11-cp310-cp310-musllinux_1_2_x86_64.whl
Size 4.5 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
d01c918555fe46b626e1974942d883ab149080248fc1a01340b2bb1b6aff0374
BLAKE2b-256 checksum
How to use checksums
8d3f6aea22cde2f3cfd1cfb59b3dd4891f3f10129155c2211526a02b9337d67d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL tenforty-2025.11-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9e7b1c250734637d44593f1a5102e38cfdf5bc96c527e14fba1bf895a71d41ef
BLAKE2b-256 checksum
How to use checksums
ab1222f9b97f268daa89649032a973177dbdd710d51b0fc89b59d589183ff382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log

Release files / tenforty-2025.11-cp310-cp310-macosx_11_0_arm64.whl

Download URL tenforty-2025.11-cp310-cp310-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b54a881c004bb8bac0e594045c20933cadad6a47096439474b170e077c33aaa4
BLAKE2b-256 checksum
How to use checksums
d30aa75a9580cedd760f4f5f11d36d3d036dc2005677b20ed3e4a50c3ac3287d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 21, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page