Skip to main content

Library to compute US federal taxes, and state taxes for some states.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tenforty-2025.8.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tenforty-2025.8-cp314-cp314-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tenforty-2025.8-cp314-cp314-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tenforty-2025.8-cp314-cp314-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tenforty-2025.8-cp313-cp313-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tenforty-2025.8-cp313-cp313-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tenforty-2025.8-cp313-cp313-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tenforty-2025.8-cp312-cp312-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tenforty-2025.8-cp312-cp312-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tenforty-2025.8-cp312-cp312-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tenforty-2025.8-cp311-cp311-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tenforty-2025.8-cp311-cp311-manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tenforty-2025.8-cp311-cp311-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tenforty-2025.8-cp310-cp310-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tenforty-2025.8-cp310-cp310-manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tenforty-2025.8-cp310-cp310-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file tenforty-2025.8.tar.gz.

File metadata

  • Download URL: tenforty-2025.8.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tenforty-2025.8.tar.gz
Algorithm Hash digest
SHA256 bc03d8cee485f198fca81050ef94825b2b8c7be416a5ddc81015425acd5d36b9
MD5 9b43733cb8e37473af6c9b64b7f9149f
BLAKE2b-256 842b6bcbc3d5638558363926f7ba313ecdcebc9425a7babba6a8143e08ec4a14

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8.tar.gz:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cbd7886cd7f484f5d3cb4b793354032332d5998b4e57407befaab48584a0e4fe
MD5 ce267ef5a65296b26e8e0d3a540a6582
BLAKE2b-256 98b703924a83174e60b952f4cdc00b6ce89cfcb5387d97bb1bdd0b7e1f2e27f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f974d93e6e831fa218d99eba347baeea35f1471da820214bbe4bf0a56c7f8667
MD5 f2636cc182eced244759c94e844eb5d8
BLAKE2b-256 d6a9a59262c1b02340ad532b411bfdabe8ea698cb2c46a71888f5f41918c3459

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21c05c47ff9b0fbfea1f217b45d10e51d818238ff797866fcb7d796e3037f240
MD5 532bbcb5dd341ac40600a8b16e2de602
BLAKE2b-256 46959cf53895425590bed7d22023ccfddb2dd50ab3af1c19185a777af8fa07d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f336126a772b1ab7a3ccc3307b130c7bcb62c4c642e34ad0d23039c6c310a769
MD5 450501115edac79cb59db8b4a71183e2
BLAKE2b-256 221e4a72e807f926fa31f8318e77878392d73efaffd7e97034fdc49c71dc9ea7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 961ea372aa5b1c692334b322594e80eab52d62406ae1734df0a4af0c1e5a1604
MD5 3c9ac1f352bcb6889b933af91620246d
BLAKE2b-256 4f27e189bfb3ece47de041dd9e7b2dba4f667307ec2272b3f352bad7f8454908

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 081b77c4d71eeebfe6773857dc2da0b77e8c229186faa3b732b21e2c09571897
MD5 fdbf69a2e11d8f09d2cf14e0a1caca13
BLAKE2b-256 a2259f5e88484732b9d9a9a663412560401b479b80673b7b05be61a9a0780695

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d3484d702622ff3d2b98da8f3c4f66fc4169385646e4c5319456ddc1a4b2ddab
MD5 d74c2f836ae4cf05ab80f2a9c9be3d84
BLAKE2b-256 ec2b4fa88ae847d1c8f06ff0bb133de68b1b04acef20f56e36b67f43ddab97e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e108a6b3b19f8f3080a3c034c2c72fc298a373f9c1511db51d53646cca5ef73
MD5 5c9bd4c165c578b69765a30b5f45e051
BLAKE2b-256 160004018d4fa8fea8dafa259027749f173b91bf8339ee1c322b5e6e22752c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c0d76fb5325b275e7e11ce838a4f9b3671564b7cdd93182eda8a7cb06222580
MD5 56986ef954dcba05d489cd200e3450ee
BLAKE2b-256 419266eecedc80489745caa721b2bab1d43424c5883dcf4650bfc573535862b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bb128b6b7bd525f931aaf449f32395a72cebb3372a49f33d04155df64594bce6
MD5 4fc61f538691d5cf0dabcbfb69afa824
BLAKE2b-256 29c86fbc8a7288c0e9162c2defb551495243090ca1762f5376c603664f3297ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d584c8fbb0d983e666277a5f233239717b9165a5714f17a3383fe960f24ed7f
MD5 7e57be48532364af33f34796a9228ed2
BLAKE2b-256 c92f8b2a6861ee68f09b472fb8e4b938c555932c06fc73ee20c385adc29474d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 126e5873ccfe1458f84d5641102221b0aa0146c9a287fc473375ed9abf73049d
MD5 22736c9e705590314f50c0e031ca5242
BLAKE2b-256 103540940aa3b421cf52eb1f79f20aa240bbc378049118fb3ab208a0b6fc4c8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 158fdffbe089ae2380a449e3c3efd9b705d2183db9bb9cb5127f39ed357e7a34
MD5 726797fc68fc81a00a5a4475769a9cb4
BLAKE2b-256 f5aed706adbe952169ba0e7473e60a610c60144982f1934df2340b4b6e8ce078

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 52e6dc8b01215f4b8eb7a0f35e4b0a39b8ec5f17be32372f0e0643c0092390bb
MD5 b5303e499d8210800ea6a4b9c1e6305d
BLAKE2b-256 9c56c778ea97800ffdc2d389846523e1cd421b9800ef96a96ba414d37d695235

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenforty-2025.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1381b31eff2723273c9829fd7eb01b45021bbe16bac744996cfa612a3a62fce2
MD5 07c76faa0c8f35db239c0fb9ae80d933
BLAKE2b-256 dbe3843aba639d4339f63f6bf1aff339840580f8afd41c85b7e32c72b2064760

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.8-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: deploy.yml on mmacpherson/tenforty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page