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_total_tax Total federal tax liability
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_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.3.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.3-cp314-cp314-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

tenforty-2025.3-cp314-cp314-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tenforty-2025.3-cp314-cp314-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tenforty-2025.3-cp313-cp313-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

tenforty-2025.3-cp313-cp313-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tenforty-2025.3-cp313-cp313-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tenforty-2025.3-cp312-cp312-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

tenforty-2025.3-cp312-cp312-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tenforty-2025.3-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tenforty-2025.3-cp311-cp311-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

tenforty-2025.3-cp311-cp311-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tenforty-2025.3-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tenforty-2025.3-cp310-cp310-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

tenforty-2025.3-cp310-cp310-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tenforty-2025.3-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tenforty-2025.3.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.3.tar.gz
Algorithm Hash digest
SHA256 2aa73e33cc01115a1e1b51fbe81875c0dffc6a9bce6f737395944d3c29f55e06
MD5 df5a1d36df747184308be5015e6685bf
BLAKE2b-256 915f9dc74d9e50ce2d67cd55d9252f3a3e426d5af0ca8cf381d3493f35aac8ba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6a575b4ad11f8a5c9a851c2281b8d84448d3f181e0db62a407fad3b96a23ed0c
MD5 3138faeca061ac69f18d6f9e99344fd7
BLAKE2b-256 50ef2b459e31f9ab0c214f0e58e188ce009d0db32256a60fd9d4567e13121472

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba2107b036dc9a63b21a429bc5bfccf3be3694aadf422b3dd35e9ac5045a50cf
MD5 337a48f618e5aa4d59f4275506576b10
BLAKE2b-256 01cb734b641502fc15ae54b14c20eded8311e18d38f96d2946c3cb8ed15ce6a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db7456b56d15f9a1f0c861002d5093f34ac322395efe9d5afba4fa0480d47608
MD5 da29a261b0a367f96cd37cfedec90616
BLAKE2b-256 b734956964c42963ce91c4ae3bad70fc86d694638f4e87da735f601842dd7f00

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 80d8343cceb4b0a0d42b79018c27fc3341804fc016b05b5bfaf373699830a6a7
MD5 56017d719fef74e63b1898e2c36c0005
BLAKE2b-256 bbd87ab63979ca5c49240a5c02ec8dbd4505f5a3b792988fa4fd585525a58f54

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd762e03036c9a6a6f0a51cf5b11db806bbfa49b54f8c93a86d28aa72e2b09b5
MD5 4515512796471f3bdf93b2e2c6ad9192
BLAKE2b-256 c210bc2271a7d5829dc9749482e6f5838f3ddfb2f6072d6649ff287bc85b3a22

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f0961211655d8e02d70df02374e520e1c387bb25243a875a52a2edd79237d15
MD5 aeb24e2b8c8527c8f9514d6405d4f8c0
BLAKE2b-256 34f0e43056cbc90490525b550c071fc414c97f748859e248c94c883a206884ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1989caf006b2ce6bd0c4f01b4342e192ad7bc3e4250d6c76ccd03ce896e69cdd
MD5 bd771f242db5e4a38c358c9b74629deb
BLAKE2b-256 360c920cf375275b103452fbb18938ec3651de636b22b9bec332debeec660363

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e656915d281529c66b8ec19bafc9a5bcca33f228c6694d91739011dc76c936aa
MD5 2b86cd637f8e80784d7e9649b9b95a07
BLAKE2b-256 380b8f4b02c4f15f2b2f7864e13d2d9ba1136b7d834510741d24d07b4caaf3cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e19619e5949cc800cbc22f811370526b107431be064c95127e76da73ef6d9271
MD5 c940bbcf1d6098f87f1ad0ca7d7534bb
BLAKE2b-256 87267e0c78b97fa6e8b26ca27672e37b735de90881132d50a3e51a657112986a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0a31afc479e9957ff7bc50c0b8727cd122cd2d50e79d7bf88e57505c56bcfd3e
MD5 7fb0382ae4c5bce91f8dd1cebe44afa2
BLAKE2b-256 b03877675b783aa1dbc4e59b00996679faa27c29fb2a55b9112b30b52f789d49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5fa05dfea444885f2d9a6aebe6dfb8e536c7a745e3fc4681ee7509d5a93551f
MD5 d4f90e815a5efb425060cb4ac12eda19
BLAKE2b-256 e9346784e6eda8199f777d9d8c1535aa8a85c0645a323251236e109a0f781fe8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40113fb9086af5f24592fab6b38c592d024bc5bffdb3418567f5d3fb431129e2
MD5 ed26945fb529d8d03687f0c88be0b879
BLAKE2b-256 afb24f13fad4249cbe5270737f3f1c5bf0c86ce2c0fdb9bc642458fe45ad75f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f5d0c0b9a25f9571fdb773e468b1156476f777d93962dd80367e59736e6f542b
MD5 995c7ab89cf10079fb338f2d5dabb9b7
BLAKE2b-256 82c7ee528f93ae0a1811edea816987b4452521d8f0d5dce399d841f69db82465

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 350dc009f2ff3211e58002ccd2f50e362145fa10d906721549e0cb0f5d59039a
MD5 a8448edc459d889333d9443bb330f81d
BLAKE2b-256 cfdbc7c438a7ce4497243df99c5f446c31f37ecf357cdf1cfbd4995f7b11b0e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tenforty-2025.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d91a736859dd36538fde86a56217d7f048ccc69aa91a2f34a284ca2b7a0314d3
MD5 d69b84ac959357f4e3affbcf643efba6
BLAKE2b-256 4c513d738ed136d1d8e04ba63df91adf0d7e7a3082011810537433b2f4950b35

See more details on using hashes here.

Provenance

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