taxcalc 4.3.1__tar.gz → 4.3.2__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-4.3.1 → taxcalc-4.3.2}/PKG-INFO +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/about/releases.md +20 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/index.md +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/usage/data.md +2 -2
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/usage/tcja_after_2025.md +2 -13
- {taxcalc-4.3.1 → taxcalc-4.3.2}/setup.py +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/__init__.py +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/calculator.py +6 -6
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/growfactors.py +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/policy.py +16 -3
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ext.json +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_taxcalcio.py +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/PKG-INFO +1 -1
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.coveragerc +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.github/FUNDING.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.github/workflows/build_and_test.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.github/workflows/check_jupyterbook.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.github/workflows/deploy_jupyterbook.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.github/workflows/deploy_parameters_docs.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/.gitignore +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/LICENSE +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/MANIFEST.in +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/Makefile +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/PSL_catalog.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/codecov.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/conda.recipe/bld.bat +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/conda.recipe/build.sh +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/conda.recipe/meta.yaml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/csv_show.sh +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/csv_vars.sh +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/PSL.svg +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/_config.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/_static/atr.png +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/_static/mtr.png +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/_static/pch.png +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/_toc.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/about/LICENSE.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/about/history.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/about/roadmap.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/calcfunctions.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/calculator.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/consumption.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/data.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/decorators.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/growdiff.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/growfactors.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/parameters.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/policy.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/public_api.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/records.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/taxcalcio.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/utils.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/api/utilsprvt.rst +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/RELEASING.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/contributor_guide.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/dependencies.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/param_naming.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/pr_workflow.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/contributing/testing.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/assumption_params.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/cli.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/index.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/input_vars.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/make/make_io_vars.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/make/make_params.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/make/make_uguide.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/output_vars.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/policy_params.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/python_interface.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/templates/assumption_params_template.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/templates/input_vars_template.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/templates/output_vars_template.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/guide/templates/policy_params_template.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/_static/reformA.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/_static/reformB.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/_static/reformC.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/convert_all.sh +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/index.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe00.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe01.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe02.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe03.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe04.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe04_pandas.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe05.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/md_src/recipe06.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe00.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe01.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe02.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe03.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe04.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe04_pandas.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe05.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/recipes/recipe06.ipynb +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/usage/overview.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/usage/starting.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/docs/use_cases.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/environment.yml +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/extend_tcja.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/gitpr +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/gitpr.bat +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/gitsync +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/gitsync.bat +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/ppp.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/pytest.ini +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/setup.cfg +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/assumptions/ASSUMPTIONS.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/assumptions/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/assumptions/economic_assumptions_template.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/calcfunctions.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/cli/__init__.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/cli/tc.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/conftest.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/consumption.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/consumption.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/cps.csv.gz +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/cps_weights.csv.gz +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/data.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/decorators.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/growdiff.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/growdiff.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/growfactors.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/parameters.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/policy_current_law.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/puf_ratios.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/puf_weights.csv.gz +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/records.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/records_variables.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/2017_law.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/2017_law.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ARPA.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ARPA.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/BrownKhanna.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/BrownKhanna.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/CARES.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/CARES.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Larson2019.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Larson2019.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/REFORMS.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Renacci.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Renacci.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/SandersDeFazio.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/SandersDeFazio.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/TCJA.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/TCJA.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/TCJA.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Trump2016.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Trump2016.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Trump2017.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/Trump2017.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/Clinton2016.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/RyanBrady.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_House.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_House_Amended.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_Reconciliation.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_Senate.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_Senate_111417.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/archive/TCJA_Senate_120117.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/cases.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/clp.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/growfactors_ext.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes0.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes0.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes1.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes1.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes2.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes2.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes3.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/reforms/ptaxes3.out.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/taxcalcio.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/benefits_expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/cmpi_cps_expect.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/cmpi_puf_expect.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/conftest.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/cpscsv_agg_expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/puf_var_correl_coeffs_2016.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/puf_var_wght_means_by_year.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/pufcsv_agg_expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/pufcsv_mtr_expect.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/reforms.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/reforms_expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_4package.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_benefits.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_calcfunctions.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_calculator.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_compare.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_compatible_data.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_consumption.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_cpscsv.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_data.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_decorators.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_growdiff.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_growfactors.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_parameters.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_policy.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_puf_var_stats.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_pufcsv.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_records.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_reforms.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_responses.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/tests/test_utils.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/utils.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/utilsprvt.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/CSV_INPUT_VARS.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/CSV_OUTPUT_VARS.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/Differences_Explained.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/README.md +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/input_setup.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/main_comparison.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/prepare_taxcalc_input.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/process_taxcalc_output.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/taxsim_emulation.json +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/taxsim_input.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/tc_sims.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/taxsim35/tests_35.py +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc/validation/tests_35.sh +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/SOURCES.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/dependency_links.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/entry_points.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/requires.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/taxcalc.egg-info/top_level.txt +0 -0
- {taxcalc-4.3.1 → taxcalc-4.3.2}/tctest-nojit.sh +0 -0
@@ -4,6 +4,26 @@ Go [here](https://github.com/PSLmodels/Tax-Calculator/pulls?q=is%3Apr+is%3Aclose
|
|
4
4
|
for a complete commit history.
|
5
5
|
|
6
6
|
|
7
|
+
2024-11-08 Release 4.3.2
|
8
|
+
------------------------
|
9
|
+
(last merged pull request is
|
10
|
+
[#2834](https://github.com/PSLmodels/Tax-Calculator/pull/2834))
|
11
|
+
|
12
|
+
**This is a bug-fix release.**
|
13
|
+
|
14
|
+
**API Changes**
|
15
|
+
|
16
|
+
**New Features**
|
17
|
+
- Add Policy.tmd_constructor() static method for convenience when using Python API
|
18
|
+
[[#2834](https://github.com/PSLmodels/Tax-Calculator/pull/2834) by Martin Holmer]
|
19
|
+
|
20
|
+
**Bug Fixes**
|
21
|
+
- Fix handling of tmd_growfactors.csv file
|
22
|
+
[[#2832](https://github.com/PSLmodels/Tax-Calculator/pull/2832) by Martin Holmer]
|
23
|
+
- Fix `tc` reform documentation output
|
24
|
+
[[#2833](https://github.com/PSLmodels/Tax-Calculator/pull/2833) by Martin Holmer]
|
25
|
+
|
26
|
+
|
7
27
|
2024-10-28 Release 4.3.1
|
8
28
|
------------------------
|
9
29
|
(last merged pull request is
|
@@ -57,7 +57,7 @@ The cross-model validation work with NBER's TAXSIM-27 model is described
|
|
57
57
|
|
58
58
|
## Latest release
|
59
59
|
|
60
|
-
{doc}`4.3.
|
60
|
+
{doc}`4.3.2 (2024-11-08) <about/releases>`
|
61
61
|
|
62
62
|
If you are already using Tax-Calculator, upgrade using the following command:
|
63
63
|
|
@@ -69,8 +69,8 @@ available only to Tax-Calculator users who have purchased their own
|
|
69
69
|
version of the 2015 IRS-SOI PUF. For those users, those three files
|
70
70
|
are avaiable from the tax-microdata repository. These three tmd files
|
71
71
|
can be used with the Tax-Calculator Python API (using the
|
72
|
-
`Records.tmd_constructor()` static
|
73
|
-
CLI tool, `tc`.
|
72
|
+
`Records.tmd_constructor()` and `Policy.tmd_constructor()`static methods)
|
73
|
+
or with the Tax-Calculator CLI tool, `tc`.
|
74
74
|
|
75
75
|
## Using other data with Tax-Calculator
|
76
76
|
|
@@ -86,23 +86,12 @@ To analyze your reform relative to a reform that extends all TCJA
|
|
86
86
|
temporary provisions beyond 2025, you would execute this command:
|
87
87
|
|
88
88
|
```
|
89
|
-
tc z.csv 2026 --exact --tables --baseline ext.json --reform x.json
|
89
|
+
tc z.csv 2026 --exact --tables --baseline ext.json --reform ext.json+x.json
|
90
90
|
```
|
91
91
|
|
92
|
-
The tables would be in the `z-26-ext-x-#-tab.text` output file
|
92
|
+
The tables would be in the `z-26-ext-ext+x-#-tab.text` output file
|
93
93
|
generated by this `tc` run.
|
94
94
|
|
95
|
-
Also, remember that you can simulate a _compound reform_ using the
|
96
|
-
following syntax:
|
97
|
-
|
98
|
-
```
|
99
|
-
tc z.csv 2026 --exact --tables --baseline ext.json --reform x.json+y.json
|
100
|
-
```
|
101
|
-
|
102
|
-
where `y.json` contains a reform with additional provisions not
|
103
|
-
included in your `x.json` reform file. The resulting table output
|
104
|
-
would be in a file named `z-26-ext-x+y-#-tab.text`.
|
105
|
-
|
106
95
|
And finally, you might consider creating a reform file called
|
107
96
|
`end.json` that contains just the two characters `{}`. This is a null
|
108
97
|
reform, which is equivalent to current-law policy, that could be used
|
@@ -698,7 +698,8 @@ class Calculator():
|
|
698
698
|
self.policy_param('FICA_ss_trt_employee') +
|
699
699
|
self.policy_param('FICA_mc_trt_employer') +
|
700
700
|
self.policy_param('FICA_mc_trt_employee')),
|
701
|
-
0.5 * (self.policy_param('FICA_mc_trt_employer') +
|
701
|
+
0.5 * (self.policy_param('FICA_mc_trt_employer') +
|
702
|
+
self.policy_param('FICA_mc_trt_employee')))
|
702
703
|
else:
|
703
704
|
adj = 0.0
|
704
705
|
# compute marginal tax rates
|
@@ -1189,11 +1190,10 @@ class Calculator():
|
|
1189
1190
|
for pname in baseline.keys():
|
1190
1191
|
upda_value = getattr(updated, pname)
|
1191
1192
|
base_value = getattr(baseline, pname)
|
1193
|
+
is_array = isinstance(upda_value, np.ndarray)
|
1192
1194
|
if (
|
1193
|
-
(
|
1194
|
-
|
1195
|
-
(not isinstance(upda_value, np.ndarray) and
|
1196
|
-
upda_value != base_value)
|
1195
|
+
(is_array and not np.allclose(upda_value, base_value))
|
1196
|
+
or (is_array == False and upda_value != base_value)
|
1197
1197
|
):
|
1198
1198
|
params_with_diff.append(pname)
|
1199
1199
|
if params_with_diff:
|
@@ -1248,7 +1248,7 @@ class Calculator():
|
|
1248
1248
|
else: # if baseline is GrowDiff object
|
1249
1249
|
# each GrowDiff parameter has zero as default value
|
1250
1250
|
doc += ' baseline_value: 0.0\n'
|
1251
|
-
|
1251
|
+
del mdata_base
|
1252
1252
|
return doc
|
1253
1253
|
|
1254
1254
|
# begin main logic of reform_documentation
|
@@ -38,7 +38,7 @@ class GrowFactors():
|
|
38
38
|
which is for use with puf and cps data from the taxdata repository.
|
39
39
|
"""
|
40
40
|
|
41
|
-
PACKAGE_FILE_NAMES = ['growfactors.csv'
|
41
|
+
PACKAGE_FILE_NAMES = ['growfactors.csv']
|
42
42
|
FILE_PATH = os.path.abspath(os.path.dirname(__file__))
|
43
43
|
|
44
44
|
VALID_NAMES = set(['ABOOK', 'ACGNS', 'ACPIM', 'ACPIU',
|
@@ -7,6 +7,7 @@ Tax-Calculator federal tax policy Policy class.
|
|
7
7
|
|
8
8
|
import os
|
9
9
|
import json
|
10
|
+
from pathlib import Path
|
10
11
|
import numpy as np
|
11
12
|
from taxcalc.parameters import Parameters
|
12
13
|
from taxcalc.growfactors import GrowFactors
|
@@ -80,7 +81,7 @@ class Policy(Parameters):
|
|
80
81
|
# (3) specify which Policy parameters are wage (rather than price) indexed
|
81
82
|
WAGE_INDEXED_PARAMS = ['SS_Earnings_c', 'SS_Earnings_thd']
|
82
83
|
|
83
|
-
def __init__(self, gfactors=None,
|
84
|
+
def __init__(self, gfactors=None, **kwargs):
|
84
85
|
# put JSON contents of DEFAULTS_FILE_NAME into self._vals dictionary
|
85
86
|
super().__init__()
|
86
87
|
# handle gfactors argument
|
@@ -92,7 +93,6 @@ class Policy(Parameters):
|
|
92
93
|
raise ValueError('gfactors is not None or a GrowFactors instance')
|
93
94
|
# read default parameters and initialize
|
94
95
|
syr = Policy.JSON_START_YEAR
|
95
|
-
lyr = Policy.LAST_BUDGET_YEAR
|
96
96
|
nyrs = Policy.DEFAULT_NUM_YEARS
|
97
97
|
self._inflation_rates = None
|
98
98
|
self._wage_growth_rates = None
|
@@ -101,6 +101,19 @@ class Policy(Parameters):
|
|
101
101
|
Policy.REDEFINED_PARAMS,
|
102
102
|
Policy.WAGE_INDEXED_PARAMS, **kwargs)
|
103
103
|
|
104
|
+
@staticmethod
|
105
|
+
def tmd_constructor(growfactors_path): # pragma: no cover
|
106
|
+
"""
|
107
|
+
Static method returns a Policy object instantiated with TMD
|
108
|
+
input data. This convenience method works in a analogous way
|
109
|
+
to Policy(), which returns a Policy object instantiated with
|
110
|
+
non-TMD input data.
|
111
|
+
"""
|
112
|
+
assert isinstance(growfactors_path, Path)
|
113
|
+
gf_filename = str(growfactors_path)
|
114
|
+
tmd_growfactors = GrowFactors(growfactors_filename=gf_filename)
|
115
|
+
return Policy(gfactors=tmd_growfactors)
|
116
|
+
|
104
117
|
@staticmethod
|
105
118
|
def read_json_reform(obj):
|
106
119
|
"""
|
@@ -129,7 +142,7 @@ class Policy(Parameters):
|
|
129
142
|
Policy.DEFAULTS_FILE_PATH,
|
130
143
|
Policy.DEFAULTS_FILE_NAME
|
131
144
|
)
|
132
|
-
with open(path) as f:
|
145
|
+
with open(path, 'r', encoding='utf-8') as f:
|
133
146
|
defaults = json.loads(f.read()) # pylint: disable=protected-access
|
134
147
|
return [k for k in defaults if k != "schema"]
|
135
148
|
|
@@ -88,7 +88,7 @@ def fixture_reformfile1():
|
|
88
88
|
"II_em": { // personal exemption amount (see indexing changes below)
|
89
89
|
"2016": 6000,
|
90
90
|
"2018": 7500,
|
91
|
-
"
|
91
|
+
"2021": 9000},
|
92
92
|
"II_em-indexed": { // personal exemption amount indexing status
|
93
93
|
"2016": false, // values in future years are same as this year value
|
94
94
|
"2018": true // values in future years indexed with this year as base
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|