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.9.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.9-cp314-cp314-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tenforty-2025.9-cp311-cp311-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tenforty-2025.9-cp310-cp310-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tenforty-2025.9-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.9.tar.gz.

File metadata

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

File hashes

Hashes for tenforty-2025.9.tar.gz
Algorithm Hash digest
SHA256 1007ccca699da5860c9b97f04fae3fe0bd6cc4b389102494e19cba91ebc4377c
MD5 cd3961418d86dde4a5d6e38e8acb6890
BLAKE2b-256 3d818f4c300abda68d032bbb464e9086d4b52d8c9d45bab4405c0d10c86b5b68

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9.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.9-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6c90c70e4bc3f43e49b6effb7d8b2a5924bad0a98b6ad1d58beaf6446e180dc6
MD5 82bde5a7d87525a7df0f3977087a6efe
BLAKE2b-256 72a576f5dae0a6004fb74c467d518f2d684c6667cb71f2d000ed2822b9077fee

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55d869545062d45db97735ed24464eeac2f7536287b094edc89240b8cde3002b
MD5 cdd059fdefe9292387955139a64aefaf
BLAKE2b-256 2339aadccb1f3d1bb2f701095187e1023e50512db6afafe0cae3fa9b226bef29

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6eacab522b4599f132a93cf6c232ec78558bb60e7ffec46b8c0098b5e758e5cb
MD5 1f45d6689dd60f3896a920e1e0cbe347
BLAKE2b-256 a4f28fff5aa28b7cc9a3cb4fe1659b3c3a52d294018e0082f7a5ba3a0043c46d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 62283bb8291fd00b342e2e3235e88081e639b750ff70f711667dfa0e31213988
MD5 20f0e4f84e0281c00ef02144095cb857
BLAKE2b-256 e36004260dbea7a6d5d817c6d741aff630448dd60150c0be46e2c9367a20bccf

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 83a72b6b29520ee89801e209fa138e614403aae093c24860d2104af51d575bcb
MD5 f0d8e68f8b5331772828bcf165e5186d
BLAKE2b-256 643a1f045c13b60f3474eadb73ad2a740a54b5eb7d01caf5175236eac38868fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1f03034fa9ea3223c9c49b83e3779a07fd06c98daa4a901bf5c97d440666b0c
MD5 c1118e69e21ff91eba21fe821db659c6
BLAKE2b-256 590716038e1eedb572f7d8f91f90b1870faa42e3b17e672106f5eeadd2002365

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 33abf684819b29e0c1c256d776f899131eb39e024fdbd3627a7fdce0b39a58f0
MD5 1a879ec28dde4d606391ec1484753ee0
BLAKE2b-256 ab46cdfab8a03617c0ec34c29c5f14339f5912db1fb6241003a3d94fc13be672

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 917ee1d3ca8740ed3babf84b58cdfd4ab0298dd46430ef953d739e5659b0830b
MD5 aea4856fc71f56cd4518f6d125107d0a
BLAKE2b-256 b6ffe9100fb7227aa01bf8b5860e76cb527ca7e1112a8d0297193b28534af39b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eca63da4bb3376f2d252f8128f53c94c5ad9b99a3d6e16b6f54d4e14e27c151c
MD5 d6728067e1e6ff2afe4b777dc804b71d
BLAKE2b-256 4ef1da4b728fd002e3d4d6fe227c163438067022949f265c99e5d261882b3a94

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26554b4bc495c6182ed8b1a1c9dc215577528cb074d6eefd14030a91a1717930
MD5 c97ba4d3cf37a1f1ce504ff5915304af
BLAKE2b-256 470f36bf88cb75d1df587f47fd7cbcb0497864dc93929e680367e502aecc79bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47b4ec9326bd473eea21f83f694ae9468b49b0f03093d4a53aaba25e8fc64f54
MD5 5370005b7ef52c0e2b3cf125123cc1ab
BLAKE2b-256 3885a8992c72001cfeeb4faa38f53b43d7d64c64ef9ebac7f37b7f5e671aa8d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6badc716ab49ee6cd3a106ada4569ba75e1290448ebf45004e466c232f3dc001
MD5 f3997e3de3a8f5b10bfc3539df1897df
BLAKE2b-256 d828531c202483c26439b91b59b0fb9268ca921b958dc986a4bd49fae7058310

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8210a7dc044ee46e97545bdf7ea67e57f4e0349da60554043463f869507edde
MD5 6bd505f2de3fb16dd77638218016ffcb
BLAKE2b-256 bb1a9c3bba2d891d57f2b498fc77b06b54e194f053339fed277682267ac8d577

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 303a04a56648eaf71d05ba89254bae901e04e967f4ba1dccc1fc37532023956c
MD5 985d73334ecbe2ece0dacbe1bb48ae27
BLAKE2b-256 0cefb2067ddaaa9d6f13a35bb1025d3c9cdaac3fc2cd02bbd994dbe4d615f977

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tenforty-2025.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a9ece767e1348bed5cb31f47acbd0a055a7aa2371d7e9fd786f1b0d38471f50
MD5 591d94cde874af5e5f416b0d6f119605
BLAKE2b-256 023baa2f464ee300a66768a4f533ff784e2d45217d528bdddf37e8aff34cdd7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenforty-2025.9-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