taxcalc 5.2.0__tar.gz → 6.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.github/workflows/build_and_test.yml +3 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.gitignore +5 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0}/MANIFEST.in +0 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/Makefile +14 -14
- {taxcalc-5.2.0/taxcalc.egg-info → taxcalc-6.0.0}/PKG-INFO +3 -6
- {taxcalc-5.2.0 → taxcalc-6.0.0}/README.md +1 -4
- {taxcalc-5.2.0 → taxcalc-6.0.0}/conda.recipe/meta.yaml +2 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/about/releases.md +52 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/contributing/RELEASING.md +3 -5
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/contributing/contributor_guide.md +5 -5
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/contributing/testing.md +24 -43
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/index.md +2 -2
- taxcalc-6.0.0/docs/recipes/_static/reformA.json +10 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe00.md +1 -10
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/usage/data.md +50 -17
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/usage/overview.md +21 -20
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/usage/tcja_after_2025.md +11 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/environment.yml +1 -1
- {taxcalc-5.2.0 → taxcalc-6.0.0}/pytest.ini +2 -6
- {taxcalc-5.2.0 → taxcalc-6.0.0}/setup.py +2 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/__init__.py +3 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/calcfunctions.py +2 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/calculator.py +4 -4
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/cli/tc.py +16 -19
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/data.py +2 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/decorators.py +9 -8
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/growfactors.py +2 -1
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/policy.py +6 -23
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/policy_current_law.json +31 -631
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/records.py +78 -82
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/records_variables.json +106 -106
- taxcalc-6.0.0/taxcalc/reforms/ARPA.out.csv +10 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/taxcalcio.py +101 -77
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/conftest.py +20 -15
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/puf_var_correl_coeffs_2016.csv +24 -24
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/puf_var_wght_means_by_year.csv +11 -11
- taxcalc-6.0.0/taxcalc/tests/pufcsv_agg_expect.csv +26 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/pufcsv_mtr_expect.txt +21 -21
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/reforms.json +3 -1
- taxcalc-6.0.0/taxcalc/tests/reforms_expect.csv +61 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_4package.py +8 -9
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_calculator.py +55 -18
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_consumption.py +2 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_cpscsv.py +2 -24
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_data.py +11 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_decorators.py +57 -52
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_growdiff.py +2 -2
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_parameters.py +101 -53
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_policy.py +154 -154
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_records.py +144 -9
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_reforms.py +104 -104
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_taxcalcio.py +13 -62
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/utils.py +3 -3
- {taxcalc-5.2.0 → taxcalc-6.0.0/taxcalc.egg-info}/PKG-INFO +3 -6
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc.egg-info/SOURCES.txt +0 -9
- taxcalc-5.2.0/docs/recipes/_static/reformA.json +0 -15
- taxcalc-5.2.0/extend_tcja.py +0 -163
- taxcalc-5.2.0/ppp.py +0 -132
- taxcalc-5.2.0/taxcalc/puf_ratios.csv +0 -26
- taxcalc-5.2.0/taxcalc/puf_weights.csv.gz +0 -0
- taxcalc-5.2.0/taxcalc/reforms/ARPA.out.csv +0 -10
- taxcalc-5.2.0/taxcalc/reforms/clp.out.csv +0 -10
- taxcalc-5.2.0/taxcalc/tests/pufcsv_agg_expect.csv +0 -26
- taxcalc-5.2.0/taxcalc/tests/reforms_expect.csv +0 -61
- taxcalc-5.2.0/taxcalc/tests/test_compare.py +0 -330
- taxcalc-5.2.0/taxcalc/tests/test_compatible_data.py +0 -334
- taxcalc-5.2.0/taxcalc/tests/test_puf_var_stats.py +0 -194
- taxcalc-5.2.0/taxcalc/tests/test_pufcsv.py +0 -328
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.coveragerc +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.github/FUNDING.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.github/workflows/check_jupyterbook.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.github/workflows/deploy_jupyterbook.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/.github/workflows/deploy_parameters_docs.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/LICENSE +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/PSL_catalog.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/codecov.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/conda.recipe/bld.bat +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/conda.recipe/build.sh +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/csv_show.sh +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/csv_vars.sh +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/PSL.svg +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/_config.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/_static/atr.png +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/_static/mtr.png +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/_static/pch.png +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/_toc.yml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/about/LICENSE.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/about/history.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/about/roadmap.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/calcfunctions.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/calculator.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/consumption.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/data.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/decorators.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/growdiff.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/growfactors.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/parameters.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/policy.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/public_api.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/records.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/taxcalcio.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/utils.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/api/utilsprvt.rst +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/contributing/param_naming.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/contributing/pr_workflow.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/assumption_params.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/cli.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/index.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/input_vars.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/make/make_io_vars.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/make/make_params.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/make/make_uguide.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/output_vars.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/policy_params.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/python_interface.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/templates/assumption_params_template.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/templates/input_vars_template.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/templates/output_vars_template.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/guide/templates/policy_params_template.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/_static/reformB.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/_static/reformC.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/convert_all.sh +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/index.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe01.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe02.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe03.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe04.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe04_pandas.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe05.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/md_src/recipe06.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe00.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe01.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe02.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe03.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe04.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe04_pandas.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe05.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/recipes/recipe06.ipynb +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/usage/starting.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/docs/use_cases.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/gitpr +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/gitpr.bat +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/gitsync +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/gitsync.bat +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/pyproject.toml +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/setup.cfg +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/assumptions/ASSUMPTIONS.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/assumptions/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/assumptions/economic_assumptions_template.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/cli/__init__.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/conftest.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/consumption.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/consumption.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/cps.csv.gz +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/cps_weights.csv.gz +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/growdiff.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/growdiff.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/growfactors.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/parameters.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/2017_law.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/2017_law.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ARPA.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/BrownKhanna.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/BrownKhanna.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/CARES.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/CARES.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Larson2019.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Larson2019.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/REFORMS.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Renacci.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Renacci.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/SandersDeFazio.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/SandersDeFazio.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/TCJA.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/TCJA.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/TCJA.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Trump2016.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Trump2016.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Trump2017.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/Trump2017.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/Clinton2016.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/RyanBrady.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_House.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_House_Amended.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_Reconciliation.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_Senate.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_Senate_111417.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/archive/TCJA_Senate_120117.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/cases.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ext.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/growfactors_ext.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes0.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes0.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes1.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes1.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes2.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes2.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes3.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/reforms/ptaxes3.out.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/benefits_expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/cmpi_cps_expect.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/cmpi_puf_expect.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/cpscsv_agg_expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_benefits.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_calcfunctions.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_growfactors.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_responses.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/tests/test_utils.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/utilsprvt.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/CSV_INPUT_VARS.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/CSV_OUTPUT_VARS.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/Differences_Explained.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/README.md +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/input_setup.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/main_comparison.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/prepare_taxcalc_input.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/process_taxcalc_output.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/taxsim_emulation.json +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/taxsim_input.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/tc_sims.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/taxsim35/tests_35.py +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc/validation/tests_35.sh +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc.egg-info/dependency_links.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc.egg-info/entry_points.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc.egg-info/requires.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/taxcalc.egg-info/top_level.txt +0 -0
- {taxcalc-5.2.0 → taxcalc-6.0.0}/tctest-nojit.sh +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
name: Build Package and Test Source Code [Python 3.
|
1
|
+
name: Build Package and Test Source Code [Python 3.11, 3.12, 3.13]
|
2
2
|
|
3
3
|
on: [push, pull_request]
|
4
4
|
|
@@ -8,7 +8,7 @@ jobs:
|
|
8
8
|
strategy:
|
9
9
|
matrix:
|
10
10
|
os: [ubuntu-latest, windows-latest]
|
11
|
-
python-version: ['3.
|
11
|
+
python-version: ['3.11', '3.12', '3.13']
|
12
12
|
|
13
13
|
steps:
|
14
14
|
- name: Checkout
|
@@ -35,7 +35,7 @@ jobs:
|
|
35
35
|
shell: bash -l {0}
|
36
36
|
working-directory: ./
|
37
37
|
run: |
|
38
|
-
pytest -m 'not
|
38
|
+
pytest -m 'not requires_puf and not requires_tmd and not local' --cov=./ --cov-report=xml
|
39
39
|
|
40
40
|
- name: Upload coverage to Codecov
|
41
41
|
if: matrix.os == 'ubuntu-latest' && contains(github.repository, 'PSLmodels/Tax-Calculator')
|
@@ -13,9 +13,11 @@ read-the-docs/_build/
|
|
13
13
|
# Mac OS X
|
14
14
|
*.DS_Store
|
15
15
|
|
16
|
-
# IRS-SOI PUF data
|
17
|
-
puf
|
18
|
-
|
16
|
+
# Non-public IRS-SOI PUF and TMD data files
|
17
|
+
puf*csv*
|
18
|
+
puf*zip
|
19
|
+
*tmd*csv*
|
20
|
+
tmd*zip
|
19
21
|
|
20
22
|
# Jupyter notebook checkpoints
|
21
23
|
*.ipynb_checkpoints*
|
@@ -12,10 +12,8 @@ help:
|
|
12
12
|
@echo "help : show help message"
|
13
13
|
@echo "clean : remove .pyc files and local taxcalc package"
|
14
14
|
@echo "package : build and install local package"
|
15
|
-
@echo "pytest-cps : generate report for and cleanup after"
|
16
|
-
@echo " pytest -m 'not requires_pufcsv and not pre_release'"
|
17
15
|
@echo "pytest : generate report for and cleanup after"
|
18
|
-
@echo " pytest -m 'not
|
16
|
+
@echo " pytest -m 'not requires_puf and not requires_tmd'"
|
19
17
|
@echo "pytest-all : generate report for and cleanup after"
|
20
18
|
@echo " pytest -m ''"
|
21
19
|
@echo "tctest : generate report for and cleanup after"
|
@@ -24,6 +22,8 @@ help:
|
|
24
22
|
@echo " tc --test when environment var NOTAXCALCJIT is set"
|
25
23
|
@echo "cstest : generate coding-style errors using the"
|
26
24
|
@echo " pycodestyle (nee pep8) and pylint tools"
|
25
|
+
@echo "idtest : generate report for and cleanup after executing"
|
26
|
+
@echo " taxcalc/cli/input_data_tests/tests.sh"
|
27
27
|
@echo "coverage : generate test coverage report"
|
28
28
|
@echo "git-sync : synchronize local, origin, and upstream Git repos"
|
29
29
|
@echo "git-pr N=n : create local pr-n branch containing upstream PR"
|
@@ -36,7 +36,7 @@ clean:
|
|
36
36
|
|
37
37
|
.PHONY=package
|
38
38
|
package:
|
39
|
-
@pip install -e .
|
39
|
+
@pip install -e . | tail -1
|
40
40
|
|
41
41
|
define pytest-setup
|
42
42
|
rm -f taxcalc/tests/reforms_actual_init
|
@@ -48,19 +48,13 @@ rm -f df-??-#-*
|
|
48
48
|
rm -f tmp??????-??-#-tmp*
|
49
49
|
endef
|
50
50
|
|
51
|
-
.PHONY=pytest-cps
|
52
|
-
pytest-cps: clean
|
53
|
-
@$(pytest-setup)
|
54
|
-
@cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m "not requires_pufcsv and not pre_release"
|
55
|
-
@$(pytest-cleanup)
|
56
|
-
|
57
51
|
.PHONY=pytest
|
58
52
|
pytest: clean
|
59
53
|
@$(pytest-setup)
|
60
|
-
@cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m "not
|
54
|
+
@cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m "not requires_puf and not requires_tmd"
|
61
55
|
@$(pytest-cleanup)
|
62
56
|
|
63
|
-
.PHONY=pytest
|
57
|
+
.PHONY=pytest
|
64
58
|
pytest-all: clean
|
65
59
|
@$(pytest-setup)
|
66
60
|
@cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m ""
|
@@ -85,7 +79,8 @@ TOPLEVEL_JSON_FILES := $(shell ls -l ./*json | awk '{print $$9}')
|
|
85
79
|
TAXCALC_JSON_FILES := $(shell ls -l ./taxcalc/*json | awk '{print $$9}')
|
86
80
|
TESTS_JSON_FILES := $(shell ls -l ./taxcalc/tests/*json | awk '{print $$9}')
|
87
81
|
PYLINT_DISABLE = locally-disabled,duplicate-code,cyclic-import
|
88
|
-
PYLINT_OPTIONS = --disable=$(PYLINT_DISABLE) --score=no --jobs=4
|
82
|
+
PYLINT_OPTIONS = --disable=$(PYLINT_DISABLE) --score=no --jobs=4 \
|
83
|
+
--check-quote-consistency=yes
|
89
84
|
EXCLUDED_PATHS = docs,taxcalc/validation
|
90
85
|
|
91
86
|
.PHONY=cstest
|
@@ -96,11 +91,16 @@ cstest:
|
|
96
91
|
@-pycodestyle --ignore=E501,E121 $(TESTS_JSON_FILES)
|
97
92
|
@-pylint $(PYLINT_OPTIONS) --ignore-paths=$(EXCLUDED_PATHS) .
|
98
93
|
|
94
|
+
.PHONY=idtest
|
95
|
+
idtest: package
|
96
|
+
@echo "Executing taxcalc/cli/input_data_tests"
|
97
|
+
@cd taxcalc/cli/input_data_tests ; ./tests.sh
|
98
|
+
|
99
99
|
define coverage-cleanup
|
100
100
|
rm -f .coverage htmlcov/*
|
101
101
|
endef
|
102
102
|
|
103
|
-
COVMARK = "not
|
103
|
+
COVMARK = "not requires_puf and not requires_tmd"
|
104
104
|
|
105
105
|
OS := $(shell uname -s)
|
106
106
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: taxcalc
|
3
|
-
Version:
|
3
|
+
Version: 6.0.0
|
4
4
|
Summary: Tax-Calculator
|
5
5
|
Home-page: https://github.com/PSLmodels/Tax-Calculator
|
6
6
|
Download-URL: https://github.com/PSLmodels/Tax-Calculator
|
@@ -12,9 +12,9 @@ Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
13
13
|
Classifier: Programming Language :: Python
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
16
15
|
Classifier: Programming Language :: Python :: 3.11
|
17
16
|
Classifier: Programming Language :: Python :: 3.12
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
18
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
19
19
|
Description-Content-Type: text/markdown
|
20
20
|
License-File: LICENSE
|
@@ -36,7 +36,7 @@ Dynamic: summary
|
|
36
36
|
| | |
|
37
37
|
| --- | --- |
|
38
38
|
| Org | [](https://www.PSLmodels.org) [](https://github.com/PSLmodels/Tax-Calculator/blob/master/LICENSE) [](https://pslmodels.github.io/Tax-Calculator/) |
|
39
|
-
| Package | [](https://www.python.org/downloads/release/python-3118/) [](https://www.python.org/downloads/release/python-3121/) [](https://www.python.org/downloads/release/python-3131/) [](https://pypi.org/project/taxcalc/) [](https://pypi.org/project/taxcalc/) [](https://anaconda.org/conda-forge/taxcalc)|
|
40
40
|
| Testing |   [](https://codecov.io/gh/PSLmodels/Tax-Calculator) |
|
41
41
|
|
42
42
|
|
@@ -57,6 +57,3 @@ explains the workflow involved in contributing model enhancements.
|
|
57
57
|
|
58
58
|
Complete documentation is available
|
59
59
|
[here](https://PSLmodels.github.io/Tax-Calculator/).
|
60
|
-
This documentation includes
|
61
|
-
[examples](https://taxcalc.pslmodels.org/usage/tcja_after_2025.html)
|
62
|
-
of how to analyze different ways of extending TCJA policy beyond 2025.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
| | |
|
2
2
|
| --- | --- |
|
3
3
|
| Org | [](https://www.PSLmodels.org) [](https://github.com/PSLmodels/Tax-Calculator/blob/master/LICENSE) [](https://pslmodels.github.io/Tax-Calculator/) |
|
4
|
-
| Package | [](https://www.python.org/downloads/release/python-3118/) [](https://www.python.org/downloads/release/python-3121/) [](https://www.python.org/downloads/release/python-3131/) [](https://pypi.org/project/taxcalc/) [](https://pypi.org/project/taxcalc/) [](https://anaconda.org/conda-forge/taxcalc)|
|
5
5
|
| Testing |   [](https://codecov.io/gh/PSLmodels/Tax-Calculator) |
|
6
6
|
|
7
7
|
|
@@ -22,6 +22,3 @@ explains the workflow involved in contributing model enhancements.
|
|
22
22
|
|
23
23
|
Complete documentation is available
|
24
24
|
[here](https://PSLmodels.github.io/Tax-Calculator/).
|
25
|
-
This documentation includes
|
26
|
-
[examples](https://taxcalc.pslmodels.org/usage/tcja_after_2025.html)
|
27
|
-
of how to analyze different ways of extending TCJA policy beyond 2025.
|
@@ -8,7 +8,7 @@ build:
|
|
8
8
|
|
9
9
|
requirements:
|
10
10
|
build:
|
11
|
-
- "python>=3.
|
11
|
+
- "python>=3.11, <3.14"
|
12
12
|
- "numpy>=1.26"
|
13
13
|
- "pandas>=2.2"
|
14
14
|
- "bokeh>=3.7"
|
@@ -19,7 +19,7 @@ requirements:
|
|
19
19
|
- behresp
|
20
20
|
|
21
21
|
run:
|
22
|
-
- "python>=3.
|
22
|
+
- "python>=3.11, <3.14"
|
23
23
|
- "numpy>=1.26"
|
24
24
|
- "pandas>=2.2"
|
25
25
|
- "bokeh>=3.7"
|
@@ -3,6 +3,58 @@ Release history
|
|
3
3
|
Go [here](https://github.com/PSLmodels/Tax-Calculator/pulls?q=is%3Apr+is%3Aclosed)
|
4
4
|
for a complete commit history.
|
5
5
|
|
6
|
+
2025-09-24 Release 6.0.0
|
7
|
+
------------------------
|
8
|
+
(last merged pull request is
|
9
|
+
[#2961](https://github.com/PSLmodels/Tax-Calculator/pull/2961))
|
10
|
+
|
11
|
+
**This is a major release with changes that make Tax-Calculator incompatible with earlier releases.**
|
12
|
+
|
13
|
+
**API Changes**
|
14
|
+
- Removes the taxdata-produced `puf_weights.csv.gz` and `puf_ratios.csv` files. Adds a new `Records.puf_constructor` method for use with PUF data. Users will need to supply their own weights and growfactors files for the PUF as they are no longer included in Tax-Calculator. [[#2961](https://github.com/PSLmodels/Tax-Calculator/pull/2961) by Martin Holmer]
|
15
|
+
|
16
|
+
**New Features**
|
17
|
+
|
18
|
+
|
19
|
+
2025-09-19 Release 5.3.0
|
20
|
+
------------------------
|
21
|
+
(last merged pull request is
|
22
|
+
[#2957](https://github.com/PSLmodels/Tax-Calculator/pull/2957))
|
23
|
+
|
24
|
+
**This is an enhancement release.**
|
25
|
+
|
26
|
+
**API Changes**
|
27
|
+
|
28
|
+
**New Features**
|
29
|
+
- Update new PUF weights and ratios files.
|
30
|
+
[[#2925](https://github.com/PSLmodels/Tax-Calculator/pull/2925) by
|
31
|
+
Bodi Yang], from the update in [[TaxData PR #452](https://github.com/PSLmodels/
|
32
|
+
taxdata/pull/452) by Bodi Yang]
|
33
|
+
|
34
|
+
Note: PUF users are required to produce new `puf.csv` file from TaxData repository and replace the old file in the Tax-Calculator directory.
|
35
|
+
Correct usage: Tax-Calculator >= 5.3.0 versions are compatible with the newly produced `puf.csv` file; Tax-Calculator <= 5.2.0 versions are compatible with the previous `puf.csv` file
|
36
|
+
|
37
|
+
- Make `FST_AGI_thd` parameters to be non inflation-indexed
|
38
|
+
[[#2951](https://github.com/PSLmodels/Tax-Calculator/pull/2951) by
|
39
|
+
Martin Holmer]
|
40
|
+
|
41
|
+
- Add support for Python 3.13
|
42
|
+
[[#2953](https://github.com/PSLmodels/Tax-Calculator/pull/2953) by
|
43
|
+
Martin Holmer]
|
44
|
+
|
45
|
+
- Add tests for consistent quote style
|
46
|
+
[[#2954](https://github.com/PSLmodels/Tax-Calculator/pull/2954) by
|
47
|
+
Martin Holmer]
|
48
|
+
|
49
|
+
- Allow CLI --dumpvars DUMPVARS to be the ALL string
|
50
|
+
[[#2956](https://github.com/PSLmodels/Tax-Calculator/pull/2956) by
|
51
|
+
Martin Holmer]
|
52
|
+
|
53
|
+
- Add documentation on using sub-national TMD weights with CLI tool
|
54
|
+
[[#2957](https://github.com/PSLmodels/Tax-Calculator/pull/2957) by
|
55
|
+
Martin Holmer]
|
56
|
+
|
57
|
+
|
6
58
|
|
7
59
|
2025-08-08 Release 5.2.0
|
8
60
|
------------------------
|
@@ -20,13 +20,11 @@ In the top-level Tax-Calculator directory, do the following:
|
|
20
20
|
|
21
21
|
--> run `python update_pcl.py` [to update policy_current_law.json if needed]
|
22
22
|
|
23
|
-
--> run `python ppp.py` [to update policy_current_law.json if needed]
|
24
|
-
|
25
|
-
--> run `python extend_tcja.py > ext.json` [to update reforms/ext.json]
|
26
|
-
|
27
23
|
--> run `make cstest` [to confirm project coding style is being followed]
|
28
24
|
|
29
|
-
--> run `make pytest-all` [
|
25
|
+
--> run `make pytest-all` [to confirm all pytest test are passing]
|
26
|
+
|
27
|
+
--> run `make idtest` [to check CLI results for CPS, PUF, TMD input data]
|
30
28
|
|
31
29
|
--> run `make tctest-jit` [to make sure JIT decorators are not hiding bugs]
|
32
30
|
|
@@ -115,11 +115,11 @@ page](https://github.com).
|
|
115
115
|
the command line in the Tax-Calculator directory:
|
116
116
|
```
|
117
117
|
cd taxcalc
|
118
|
-
pytest -m "not
|
118
|
+
pytest -m "not requires_puf and not requires_tmd" -n4
|
119
119
|
```
|
120
|
-
If you do have
|
121
|
-
|
122
|
-
|
120
|
+
If you do have the PUF-related files used by Tax-Calculator and
|
121
|
+
the TMD-related files used by Tax-Calculator, then the second line
|
122
|
+
above can be simplified to `pytest -n4`.
|
123
123
|
|
124
124
|
If all the tests pass, you're good to go. If they don't pass, enter
|
125
125
|
the following updates at the command line and then try running the
|
@@ -227,7 +227,7 @@ situations, in which case other contributors are here to help.
|
|
227
227
|
from the command line in the Tax-Calculator directory:
|
228
228
|
```
|
229
229
|
make cstest
|
230
|
-
make pytest
|
230
|
+
make pytest
|
231
231
|
```
|
232
232
|
Consult {doc}`testing` for more details.
|
233
233
|
|
@@ -38,56 +38,38 @@ all these coding-style tests, proceed to the second phase of testing.
|
|
38
38
|
## Testing with pytest
|
39
39
|
|
40
40
|
There are two variants of this second testing phase depending on
|
41
|
-
whether or not you have access to
|
42
|
-
|
43
|
-
IRS-SOI PUF data.
|
44
|
-
|
45
|
-
A brief description of the `puf.csv` file is followed by instructions
|
46
|
-
on how to run the two variants of the second-phase tests.
|
47
|
-
|
48
|
-
The Tax-Calculator `puf.csv` file has been constructed by the core
|
49
|
-
development team by merging information from a publicly available
|
50
|
-
IRS-SOI PUF file for 2011 and from the Census CPS file for the
|
51
|
-
corresponding year. If you have acquired from IRS the 2011 SOI PUF
|
52
|
-
file and want to execute the tests that require the `puf.csv` file,
|
53
|
-
contact the core development team to discuss your options.
|
54
|
-
|
55
|
-
**NO PUF.CSV**: If you do not have access to the `puf.csv` file (or if
|
56
|
-
you just want to do a quick test), run the second-phase of testing as
|
57
|
-
follows at the command prompt in the Tax-Calculator directory:
|
58
|
-
|
59
|
-
```
|
60
|
-
make pytest-cps
|
61
|
-
```
|
41
|
+
whether or not you have access to the PUF-related and TMD-related
|
42
|
+
input data files.
|
62
43
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
prepared.
|
67
|
-
|
68
|
-
**HAVE PUF.CSV**: If you do have access to the `puf.csv` file, copy it
|
69
|
-
into the Tax-Calculator directory at the top of the repository
|
70
|
-
directory tree (but **never** add it to your repository) and run the
|
71
|
-
second-phase of testing as follows at the command prompt in the
|
72
|
-
Tax-Calculator directory:
|
44
|
+
**NO PUF AND NO TMD**: If you do not have access to the PUF or TMD
|
45
|
+
input data files, run the second-phase of testing as follows at the
|
46
|
+
command prompt in the Tax-Calculator directory:
|
73
47
|
|
74
48
|
```
|
75
49
|
make pytest
|
76
50
|
```
|
77
51
|
|
78
52
|
This will start executing a pytest suite containing hundreds of tests,
|
79
|
-
|
80
|
-
|
81
|
-
is being prepared.
|
53
|
+
but will skip the tests that require the `puf.csv` file or the `tmd.csv`
|
54
|
+
file as input.
|
82
55
|
|
83
|
-
|
84
|
-
|
85
|
-
|
56
|
+
**HAVE PUF AND HAVE TMD**: If you do have access to the PUF-related
|
57
|
+
files and the TMD-related files, copy them into the Tax-Calculator
|
58
|
+
directory at the top of the repository directory tree (but **never**
|
59
|
+
add them to your repository) and run the second-phase of testing as
|
60
|
+
follows at the command prompt in the Tax-Calculator directory:
|
86
61
|
|
87
62
|
```
|
88
63
|
make pytest-all
|
64
|
+
make idtest
|
89
65
|
```
|
90
66
|
|
67
|
+
The first command will start executing a pytest suite containing
|
68
|
+
hundreds of tests, including the tests that require the `puf.csv` file
|
69
|
+
as input and the tests that require the `tmd.csv` file as input. The
|
70
|
+
second command checks that the Tax-Calculator CLI generates expected
|
71
|
+
results when using the CPS, PUF, and TMD input data.
|
72
|
+
|
91
73
|
## Interpreting test results
|
92
74
|
|
93
75
|
If you are adding an enhancement that expands the capabilities of the
|
@@ -108,9 +90,8 @@ demonstrate that the newly-added test, which used to fail, now passes.
|
|
108
90
|
|
109
91
|
After an enhancement or bug fix, you may be convinced that the new and
|
110
92
|
different second-phase test results are, in fact, correct. How do you
|
111
|
-
eliminate the test failures?
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
to update the test results.
|
93
|
+
eliminate the test failures? Simply edit the appropriate
|
94
|
+
`taxcalc/tests/test_*.py` file so that the test passes when you rerun
|
95
|
+
pytest. If there are failures for the tests that write results files,
|
96
|
+
read the test error message for instructions about how to update the
|
97
|
+
test results.
|
@@ -54,7 +54,7 @@ cross-model validation work with NBER's TAXSIM-35 model is described
|
|
54
54
|
|
55
55
|
## Latest release
|
56
56
|
|
57
|
-
{doc}`
|
57
|
+
{doc}`6.0.0 (2025-09-24) <about/releases>`
|
58
58
|
|
59
59
|
If you are already using Tax-Calculator, upgrade using the following command:
|
60
60
|
```
|
@@ -83,4 +83,4 @@ If you wish to provide a link to Tax-Calculator, the preferred URL is:
|
|
83
83
|
`https://PSLmodels.github.io/Tax-Calculator`.
|
84
84
|
Additionally, we strongly recommend that you describe the input data used,
|
85
85
|
and provide a link to the materials required to replicate your analysis or,
|
86
|
-
at least, note that those materials are available upon request.
|
86
|
+
at least, note that those materials are available upon request.
|
@@ -45,16 +45,7 @@ from bokeh.io import show, output_notebook
|
|
45
45
|
|
46
46
|
## Setup
|
47
47
|
|
48
|
-
Use publicly-available CPS input
|
49
|
-
|
50
|
-
NOTE: if you have access to the restricted-use IRS-SOI PUF-based input file
|
51
|
-
and you have that file (named ‘puf.csv’) located in the directory
|
52
|
-
where this script is located, then you can substitute the following
|
53
|
-
statement for the prior statement:
|
54
|
-
|
55
|
-
``
|
56
|
-
recs = tc.Records()
|
57
|
-
``
|
48
|
+
Use publicly-available CPS input data included in Tax-Calculator.
|
58
49
|
|
59
50
|
```{code-cell} ipython3
|
60
51
|
:hide-output: false
|
@@ -41,27 +41,26 @@ validation of those data.
|
|
41
41
|
|
42
42
|
The taxdata repository also produces a weights file and growth
|
43
43
|
factors file for use with the 2011 IRS-SOI Public Use File (PUF). For
|
44
|
-
users who have purchased their own version of the 2011 PUF, the
|
45
|
-
`puf_weights.csv.gz` and `
|
46
|
-
|
47
|
-
|
44
|
+
users who have purchased their own version of the 2011 PUF, the `puf.csv`,
|
45
|
+
`puf_weights.csv.gz` and `puf_ratios.csv` files from the taxdata repository,
|
46
|
+
can be used by Tax-Calculator using the `Records.puf_constructor(...)`
|
47
|
+
static method.
|
48
48
|
|
49
49
|
We refer users of the PUF to the IRS limitations on the use of those
|
50
|
-
data and their distribution. We also refer users of the PUF
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
file.
|
50
|
+
data and their distribution. We also refer users of the PUF input
|
51
|
+
data to the [taxdata](https://github.com/PSLmodels/taxdata)
|
52
|
+
documentation for details on how to use these files with the PUF and
|
53
|
+
to see how well the resulting tax calculations hit aggregate targets
|
54
|
+
published by the IRS. However, we do note that analysis with a
|
55
|
+
PUF-based data file tends to be more accurate than the `cps.csv` file
|
56
|
+
and that the validation of Tax-Calculator with other microsimulation
|
57
|
+
models uses the `puf.csv` file.
|
59
58
|
|
60
59
|
### 2015 IRS public use data (`tmd.csv`)
|
61
60
|
|
62
61
|
The [tax-microdata
|
63
62
|
repository](https://github.com/PSLmodels/tax-microdata-benchmarking)
|
64
|
-
produces an input variables file (`tmd.csv.gz`), a national weights
|
63
|
+
produces an input variables file (`tmd.csv.gz`), a **national** weights
|
65
64
|
file (`tmd_weights.csv.gz`), and a variable growth factors file
|
66
65
|
(`tmd_growfactors.csv`) that can be used with the Tax-Calculator
|
67
66
|
package beginning with the 3.6.0 release. The TMD files are available
|
@@ -71,12 +70,46 @@ tax-microdata repository. The three TMD files can be used with
|
|
71
70
|
Tax-Calculator in two ways:
|
72
71
|
- with the **Python API** by instantiating a GrowFactors object that
|
73
72
|
uses TMD growth factors [`gf=GrowFactors("path/to/tmd_growfactors.csv")`]
|
74
|
-
and by using the `Records.tmd_constructor()`
|
75
|
-
|
76
|
-
object and a Policy object, or
|
73
|
+
and by using the `Records.tmd_constructor(...)` static method to
|
74
|
+
instantiate a Records object, or
|
77
75
|
- with the **CLI tool**, `tc`, when the three TMD files are all in
|
78
76
|
the same folder and the `tmd.csv.gz` file has been unzipped.
|
79
77
|
|
78
|
+
The [tax-microdata
|
79
|
+
repository](https://github.com/PSLmodels/tax-microdata-benchmarking)
|
80
|
+
also produces state and Congressional district weights files that can
|
81
|
+
be used to estimate federal taxes for various sub-national areas. The
|
82
|
+
easiest way to produce sub-national federal tax estimates is to supply
|
83
|
+
the **CLI tool** with the value of an environmental variable
|
84
|
+
(`TMD_AREA`) that indicates the sub-national area. So, for example,
|
85
|
+
if you have the New Mexico state weights in the
|
86
|
+
`nm_tmd_weights.csv.gz` file, put that file in the folder that
|
87
|
+
contains the three national TMD files described above. Then, execute
|
88
|
+
this command for tabular output under 2024 current-law policy:
|
89
|
+
```
|
90
|
+
(taxcalc-dev) myruns> TMD_AREA=nm tc tmd.csv 2024 --exact --tables
|
91
|
+
Read input data for 2021; input data were extrapolated to 2024
|
92
|
+
Write tabular output to file tmd_nm-24-#-#-#.tables
|
93
|
+
Execution time is 8.2 seconds
|
94
|
+
(taxcalc-dev) myruns> awk '$1~/Ret/||$1~/A/' tmd_nm-24-#-#-#.tables | head -2
|
95
|
+
Returns ExpInc IncTax PayTax LSTax AllTax
|
96
|
+
A 1.17 87.0 7.2 6.9 0.0 14.1
|
97
|
+
```
|
98
|
+
|
99
|
+
Or for the first Congressional district in New Mexico, put the
|
100
|
+
`nm01_tmd_weights.csv.gz` file in the folder with the other TMD
|
101
|
+
files and execute this command:
|
102
|
+
```
|
103
|
+
(taxcalc-dev) myruns> TMD_AREA=nm01 tc tmd.csv 2024 --exact --tables
|
104
|
+
Read input data for 2021; input data were extrapolated to 2024
|
105
|
+
Write tabular output to file tmd_nm01-24-#-#-#.tables
|
106
|
+
Execution time is 8.3 seconds
|
107
|
+
(taxcalc-dev) myruns> awk '$1~/Ret/||$1~/A/' tmd_nm01-24-#-#-#.tables | head -2
|
108
|
+
Returns ExpInc IncTax PayTax LSTax AllTax
|
109
|
+
A 0.40 31.9 2.8 2.5 0.0 5.3
|
110
|
+
```
|
111
|
+
|
112
|
+
|
80
113
|
## Using other data with Tax-Calculator
|
81
114
|
|
82
115
|
Using other data sources with Tax-Calculator is possible. Users can
|
@@ -1,32 +1,32 @@
|
|
1
1
|
Structural overview
|
2
2
|
===================
|
3
3
|
|
4
|
-
Tax-Calculator has been designed using [object-oriented programming
|
5
|
-
|
6
|
-
There are seven classes and a collection of global
|
7
|
-
but most Python programming involves using only a
|
4
|
+
Tax-Calculator has been designed using [object-oriented programming
|
5
|
+
(OOP)](https://www.programiz.com/python-programming/object-oriented-programming)
|
6
|
+
principles. There are seven classes and a collection of global
|
7
|
+
utility functions, but most Python programming involves using only a
|
8
|
+
few methods in three classes.
|
8
9
|
|
9
10
|
## Quick summary
|
10
11
|
|
11
|
-
Typical Tax-Calculator usage involves creating two Calculator class
|
12
|
-
both containing the same sample of filing units (that is,
|
13
|
-
but each containing a different tax policy
|
14
|
-
The idea is to compare the calculated
|
15
|
-
the two different tax
|
16
|
-
one of which is usually current-law policy and the other is
|
17
|
-
interest.
|
12
|
+
Typical Tax-Calculator usage involves creating two Calculator class
|
13
|
+
objects: both containing the same sample of filing units (that is,
|
14
|
+
Records class object), but each containing a different tax policy
|
15
|
+
(that is, Policy class object). The idea is to compare the calculated
|
16
|
+
tax liabilities of the sample units under the two different tax
|
17
|
+
policies, one of which is usually current-law policy and the other is
|
18
|
+
a tax reform of interest.
|
18
19
|
|
19
20
|
* `rec` → Records class object.
|
20
|
-
Created by `Records()` when containing
|
21
|
-
|
22
|
-
filing-unit data.
|
21
|
+
Created by `Records.cps_constructor()` when containing CPS-derived
|
22
|
+
filing-unit data.
|
23
23
|
|
24
24
|
* `clp` → `Policy` class object containing parameters that characterize
|
25
25
|
current-law policy.
|
26
26
|
Created by `Policy()`.
|
27
27
|
|
28
|
-
*
|
29
|
-
reform.
|
28
|
+
* `ref` → `Policy` class object containing parameters that
|
29
|
+
characterize a tax reform.
|
30
30
|
Created using a Python dictionary `refdict` representing the reform by
|
31
31
|
using the `implement_reform(refdict)` method on a `Policy` object created
|
32
32
|
by `Policy()`.
|
@@ -68,10 +68,11 @@ for Calculator class and all its methods.
|
|
68
68
|
|
69
69
|
## Complete story
|
70
70
|
|
71
|
-
Tax-Calculator contains eight basic classes, and a collection of
|
72
|
-
functions, that together provide the full range of
|
73
|
-
Here is a description of their role in
|
74
|
-
|
71
|
+
Tax-Calculator contains eight basic classes, and a collection of
|
72
|
+
global utility functions, that together provide the full range of
|
73
|
+
Tax-Calculator capabilities. Here is a description of their role in
|
74
|
+
Tax-Calculator and a link to each the detailed documentation and
|
75
|
+
source code for each class and all its methods.
|
75
76
|
|
76
77
|
### Classes
|
77
78
|
|
@@ -1,4 +1,14 @@
|
|
1
|
-
# TCJA after 2025
|
1
|
+
# OBBBA: TCJA after 2025
|
2
|
+
|
3
|
+
TCJA was replaced by OBBBA when the latter was signed into law on July
|
4
|
+
4, 2025. Beginning with Tax-Calculator 5.2.0, OBBBA is current-law
|
5
|
+
policy. How the OBBBA changes were implemented as current-law policy
|
6
|
+
is described in detail in closed [issue
|
7
|
+
2926](https://github.com/PSLmodels/Tax-Calculator/issues/2926).
|
8
|
+
|
9
|
+
----------------------------------------------------------------------
|
10
|
+
|
11
|
+
**THE FOLLOWING TEXT IS OF HISTORICAL INTEREST ONLY:**
|
2
12
|
|
3
13
|
Many provisions of the TCJA are temporary and are scheduled to end
|
4
14
|
after 2025 under current-law policy. Tax policy parameters that are
|
@@ -331,4 +341,3 @@ added to the `policy_current_law.json` file thereby changing the
|
|
331
341
|
Beginning with the 4.5.0 version, Tax-Calculator incorporates the
|
332
342
|
January 2025 CBO economic projection and contains historical tax
|
333
343
|
policy parameter values through 2025.
|
334
|
-
|