taxcalc 4.4.0__tar.gz → 4.5.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-4.4.0 → taxcalc-4.5.0}/Makefile +5 -8
- {taxcalc-4.4.0 → taxcalc-4.5.0}/PKG-INFO +19 -5
- {taxcalc-4.4.0 → taxcalc-4.5.0}/README.md +8 -2
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/about/releases.md +31 -0
- taxcalc-4.5.0/docs/contributing/RELEASING.md +58 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/contributing/contributor_guide.md +51 -51
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/contributing/pr_workflow.md +26 -29
- taxcalc-4.5.0/docs/contributing/testing.md +116 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/make/make_io_vars.py +3 -3
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/make/make_params.py +34 -25
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/make/make_uguide.py +4 -4
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/policy_params.md +2 -19
- taxcalc-4.5.0/docs/guide/python_interface.md +14 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/index.md +1 -1
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/usage/data.md +14 -9
- {taxcalc-4.4.0 → taxcalc-4.5.0}/extend_tcja.py +8 -5
- {taxcalc-4.4.0 → taxcalc-4.5.0}/ppp.py +1 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/setup.py +8 -5
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/__init__.py +1 -1
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/calcfunctions.py +326 -171
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/calculator.py +35 -34
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/cli/tc.py +6 -7
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/consumption.json +1 -1
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/consumption.py +9 -4
- taxcalc-4.4.0/taxcalc/puf_weights.csv.gz → taxcalc-4.5.0/taxcalc/cps_weights.csv.gz +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/data.py +8 -8
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/decorators.py +3 -3
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/growdiff.json +1 -1
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/growdiff.py +5 -0
- taxcalc-4.5.0/taxcalc/growfactors.csv +26 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/growfactors.py +1 -1
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/parameters.py +85 -42
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/policy.py +2 -2
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/policy_current_law.json +87 -87
- taxcalc-4.5.0/taxcalc/puf_ratios.csv +26 -0
- taxcalc-4.4.0/taxcalc/cps_weights.csv.gz → taxcalc-4.5.0/taxcalc/puf_weights.csv.gz +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/records.py +1 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/records_variables.json +6 -0
- taxcalc-4.5.0/taxcalc/reforms/ext.json +59 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/taxcalcio.py +49 -44
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/cmpi_cps_expect.txt +6 -6
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/cmpi_puf_expect.txt +6 -6
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/conftest.py +43 -42
- taxcalc-4.5.0/taxcalc/tests/cpscsv_agg_expect.csv +26 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/puf_var_wght_means_by_year.csv +70 -70
- taxcalc-4.5.0/taxcalc/tests/pufcsv_agg_expect.csv +26 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_4package.py +9 -7
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_benefits.py +9 -8
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_calcfunctions.py +55 -38
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_calculator.py +11 -6
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_compare.py +45 -51
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_compatible_data.py +9 -7
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_consumption.py +38 -18
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_cpscsv.py +33 -31
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_data.py +31 -24
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_decorators.py +84 -32
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_growdiff.py +16 -13
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_growfactors.py +8 -8
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_parameters.py +55 -59
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_policy.py +14 -12
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_puf_var_stats.py +14 -14
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_pufcsv.py +40 -40
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_records.py +73 -60
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_reforms.py +35 -32
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_responses.py +4 -4
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_taxcalcio.py +76 -62
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/test_utils.py +78 -46
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/utils.py +49 -42
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/taxsim_emulation.json +1 -5
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/PKG-INFO +19 -5
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/SOURCES.txt +0 -1
- taxcalc-4.4.0/docs/contributing/RELEASING.md +0 -92
- taxcalc-4.4.0/docs/contributing/dependencies.md +0 -14
- taxcalc-4.4.0/docs/contributing/testing.md +0 -184
- taxcalc-4.4.0/docs/guide/python_interface.md +0 -6
- taxcalc-4.4.0/taxcalc/growfactors.csv +0 -25
- taxcalc-4.4.0/taxcalc/puf_ratios.csv +0 -25
- taxcalc-4.4.0/taxcalc/reforms/ext.json +0 -59
- taxcalc-4.4.0/taxcalc/tests/cpscsv_agg_expect.csv +0 -26
- taxcalc-4.4.0/taxcalc/tests/pufcsv_agg_expect.csv +0 -26
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.coveragerc +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.github/FUNDING.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.github/workflows/build_and_test.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.github/workflows/check_jupyterbook.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.github/workflows/deploy_jupyterbook.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.github/workflows/deploy_parameters_docs.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/.gitignore +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/LICENSE +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/MANIFEST.in +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/PSL_catalog.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/codecov.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/conda.recipe/bld.bat +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/conda.recipe/build.sh +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/conda.recipe/meta.yaml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/csv_show.sh +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/csv_vars.sh +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/PSL.svg +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/_config.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/_static/atr.png +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/_static/mtr.png +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/_static/pch.png +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/_toc.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/about/LICENSE.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/about/history.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/about/roadmap.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/calcfunctions.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/calculator.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/consumption.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/data.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/decorators.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/growdiff.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/growfactors.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/parameters.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/policy.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/public_api.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/records.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/taxcalcio.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/utils.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/api/utilsprvt.rst +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/contributing/param_naming.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/assumption_params.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/cli.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/index.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/input_vars.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/output_vars.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/templates/assumption_params_template.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/templates/input_vars_template.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/templates/output_vars_template.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/guide/templates/policy_params_template.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/_static/reformA.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/_static/reformB.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/_static/reformC.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/convert_all.sh +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/index.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe00.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe01.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe02.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe03.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe04.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe04_pandas.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe05.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/md_src/recipe06.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe00.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe01.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe02.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe03.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe04.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe04_pandas.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe05.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/recipes/recipe06.ipynb +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/usage/overview.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/usage/starting.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/usage/tcja_after_2025.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/docs/use_cases.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/environment.yml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/gitpr +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/gitpr.bat +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/gitsync +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/gitsync.bat +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/pyproject.toml +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/pytest.ini +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/setup.cfg +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/assumptions/ASSUMPTIONS.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/assumptions/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/assumptions/economic_assumptions_template.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/cli/__init__.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/conftest.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/cps.csv.gz +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/2017_law.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/2017_law.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ARPA.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ARPA.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/BrownKhanna.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/BrownKhanna.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/CARES.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/CARES.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Larson2019.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Larson2019.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/REFORMS.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Renacci.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Renacci.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/SandersDeFazio.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/SandersDeFazio.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/TCJA.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/TCJA.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/TCJA.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Trump2016.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Trump2016.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Trump2017.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/Trump2017.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/Clinton2016.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/RyanBrady.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_House.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_House_Amended.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_Reconciliation.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_Senate.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_Senate_111417.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/archive/TCJA_Senate_120117.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/cases.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/clp.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/growfactors_ext.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes0.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes0.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes1.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes1.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes2.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes2.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes3.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/reforms/ptaxes3.out.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/benefits_expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/puf_var_correl_coeffs_2016.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/pufcsv_mtr_expect.txt +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/reforms.json +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/tests/reforms_expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/utilsprvt.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/CSV_INPUT_VARS.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/CSV_OUTPUT_VARS.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/Differences_Explained.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/README.md +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/input_setup.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/main_comparison.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/prepare_taxcalc_input.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/process_taxcalc_output.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/taxsim_input.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/tc_sims.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/taxsim35/tests_35.py +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc/validation/tests_35.sh +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/dependency_links.txt +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/entry_points.txt +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/requires.txt +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/taxcalc.egg-info/top_level.txt +0 -0
- {taxcalc-4.4.0 → taxcalc-4.5.0}/tctest-nojit.sh +0 -0
@@ -84,20 +84,17 @@ tctest-jit:
|
|
84
84
|
TOPLEVEL_JSON_FILES := $(shell ls -l ./*json | awk '{print $$9}')
|
85
85
|
TAXCALC_JSON_FILES := $(shell ls -l ./taxcalc/*json | awk '{print $$9}')
|
86
86
|
TESTS_JSON_FILES := $(shell ls -l ./taxcalc/tests/*json | awk '{print $$9}')
|
87
|
-
|
88
|
-
PYLINT_OPTIONS = --disable
|
89
|
-
|
90
|
-
PYLINT_IGNORE = C0103,C0111,E0401,E1120,R0913,R0914,W0401,W0614
|
91
|
-
RECIPE_OPTIONS = --disable=$(PYLINT_IGNORE) --score=no --jobs=4
|
87
|
+
PYLINT_DISABLE = locally-disabled,duplicate-code,cyclic-import
|
88
|
+
PYLINT_OPTIONS = --disable=$(PYLINT_DISABLE) --score=no --jobs=4
|
89
|
+
EXCLUDED_PATHS = docs,taxcalc/validation
|
92
90
|
|
93
91
|
.PHONY=cstest
|
94
92
|
cstest:
|
95
|
-
|
93
|
+
@-pycodestyle --ignore=W503,W504,E712 --exclude=$(EXCLUDED_PATHS) .
|
96
94
|
@-pycodestyle --ignore=E501,E121 $(TOPLEVEL_JSON_FILES)
|
97
95
|
@-pycodestyle --ignore=E501,E121 $(TAXCALC_JSON_FILES)
|
98
96
|
@-pycodestyle --ignore=E501,E121 $(TESTS_JSON_FILES)
|
99
|
-
@-pylint $(PYLINT_OPTIONS)
|
100
|
-
@-pylint $(RECIPE_OPTIONS) $(RECIPE_FILES)
|
97
|
+
@-pylint $(PYLINT_OPTIONS) --ignore-paths=$(EXCLUDED_PATHS) .
|
101
98
|
|
102
99
|
define coverage-cleanup
|
103
100
|
rm -f .coverage htmlcov/*
|
@@ -1,7 +1,7 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: taxcalc
|
3
|
-
Version: 4.
|
4
|
-
Summary:
|
3
|
+
Version: 4.5.0
|
4
|
+
Summary: Tax-Calculator
|
5
5
|
Home-page: https://github.com/PSLmodels/Tax-Calculator
|
6
6
|
Download-URL: https://github.com/PSLmodels/Tax-Calculator
|
7
7
|
License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
@@ -23,6 +23,14 @@ Requires-Dist: pandas>=2.2
|
|
23
23
|
Requires-Dist: bokeh>=2.4
|
24
24
|
Requires-Dist: numba
|
25
25
|
Requires-Dist: paramtools>=0.19.0
|
26
|
+
Dynamic: classifier
|
27
|
+
Dynamic: description
|
28
|
+
Dynamic: description-content-type
|
29
|
+
Dynamic: download-url
|
30
|
+
Dynamic: home-page
|
31
|
+
Dynamic: license
|
32
|
+
Dynamic: requires-dist
|
33
|
+
Dynamic: summary
|
26
34
|
|
27
35
|
| | |
|
28
36
|
| --- | --- |
|
@@ -37,8 +45,14 @@ Tax-Calculator
|
|
37
45
|
Tax-Calculator is an open-source microsimulation model for static
|
38
46
|
analysis of USA federal income and payroll taxes.
|
39
47
|
|
40
|
-
We are seeking contributors and maintainers.
|
41
|
-
|
48
|
+
We are seeking contributors and maintainers. If you are interested in
|
49
|
+
joining the project as a contributor or maintainer, open a new
|
50
|
+
[issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping
|
51
|
+
[@MattHJensen](https://github.com/MattHJensen/) or
|
52
|
+
[@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
|
53
|
+
The [contributor
|
54
|
+
guide](https://taxcalc.pslmodels.org/contributing/contributor_guide.html)
|
55
|
+
explains the workflow involved in contributing model enhancements.
|
42
56
|
|
43
57
|
Complete documentation is available
|
44
58
|
[here](https://PSLmodels.github.io/Tax-Calculator/).
|
@@ -11,8 +11,14 @@ Tax-Calculator
|
|
11
11
|
Tax-Calculator is an open-source microsimulation model for static
|
12
12
|
analysis of USA federal income and payroll taxes.
|
13
13
|
|
14
|
-
We are seeking contributors and maintainers.
|
15
|
-
|
14
|
+
We are seeking contributors and maintainers. If you are interested in
|
15
|
+
joining the project as a contributor or maintainer, open a new
|
16
|
+
[issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping
|
17
|
+
[@MattHJensen](https://github.com/MattHJensen/) or
|
18
|
+
[@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
|
19
|
+
The [contributor
|
20
|
+
guide](https://taxcalc.pslmodels.org/contributing/contributor_guide.html)
|
21
|
+
explains the workflow involved in contributing model enhancements.
|
16
22
|
|
17
23
|
Complete documentation is available
|
18
24
|
[here](https://PSLmodels.github.io/Tax-Calculator/).
|
@@ -4,6 +4,37 @@ 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
|
+
2025-03-11 Release 4.5.0
|
8
|
+
------------------------
|
9
|
+
(last merged pull request is
|
10
|
+
[#2878](https://github.com/PSLmodels/Tax-Calculator/pull/2878))
|
11
|
+
|
12
|
+
**This is an enhancement release.**
|
13
|
+
|
14
|
+
**API Changes**
|
15
|
+
|
16
|
+
**New Features**
|
17
|
+
- Updates for CBO January 2025 baseline projection
|
18
|
+
[[#2874](https://github.com/PSLmodels/Tax-Calculator/pull/2874) by Bodi Yang]
|
19
|
+
- Fixes to deprecation and code style warnings [PRs [#2876](https://github.com/PSLmodels/Tax-Calculator/pull/2876), [#2877](https://github.com/PSLmodels/Tax-Calculator/pull/2877), [#2878](https://github.com/PSLmodels/Tax-Calculator/pull/2878), by Martin Holmer]
|
20
|
+
|
21
|
+
|
22
|
+
2025-02-13 Release 4.4.1
|
23
|
+
------------------------
|
24
|
+
(last merged pull request is
|
25
|
+
[#2872](https://github.com/PSLmodels/Tax-Calculator/pull/2872))
|
26
|
+
|
27
|
+
**This is a minor enhancement release.**
|
28
|
+
|
29
|
+
**API Changes**
|
30
|
+
|
31
|
+
**New Features**
|
32
|
+
- Cosmetic code changes so that "make cstest" produces no warnings
|
33
|
+
- New tests added so that "make coverage" produces 100% code coverage
|
34
|
+
- Add c32800 to list of calc variables in records_variables.json file
|
35
|
+
[[#2872](https://github.com/PSLmodels/Tax-Calculator/pull/2872) by Martin Holmer]
|
36
|
+
|
37
|
+
|
7
38
|
2024-12-19 Release 4.4.0
|
8
39
|
------------------------
|
9
40
|
(last merged pull request is
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Releasing Tax-Caclculator Packages
|
2
|
+
==================================
|
3
|
+
|
4
|
+
The following outlines the process for releasing a new `taxcalc` package.
|
5
|
+
|
6
|
+
In the top-level Tax-Calculator directory, do the following:
|
7
|
+
|
8
|
+
```
|
9
|
+
--> run `git switch master` [to get on master branch]
|
10
|
+
|
11
|
+
--> run `./gitsync` [to ensure master is up-to-date with GitHub version]
|
12
|
+
|
13
|
+
--> run `make clean` [to remove any local taxcalc package]
|
14
|
+
|
15
|
+
--> run `git checkout -b X-Y-Z` [to create X-Y-Z (e.g., `4-4-1`) branch]
|
16
|
+
|
17
|
+
--> on branch X-Y-Z, edit docs/about/releases.md to finalize X.Y.Z info
|
18
|
+
|
19
|
+
--> specify release X.Y.Z in setup.py and taxcalc/__init__.py and docs/index.md
|
20
|
+
|
21
|
+
--> run `python update_pcl.py` [to update policy_current_law.json if needed]
|
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
|
+
--> run `make cstest` [to make confirm project coding style is being followed]
|
28
|
+
|
29
|
+
--> run `make pytest-all` [or `pytest -m pre_release -n4` in taxcalc subdir]
|
30
|
+
|
31
|
+
--> run `make tctest-jit` [to make sure JIT decorators are not hiding bugs]
|
32
|
+
|
33
|
+
--> commit X-Y-Z branch and push to origin
|
34
|
+
|
35
|
+
--> open new GitHub pull request using your X-Y-Z branch
|
36
|
+
```
|
37
|
+
|
38
|
+
Then ask [@jdebacker](https://github.com/jdebacker/) to review and
|
39
|
+
merge the pull request and create the package.
|
40
|
+
|
41
|
+
|
42
|
+
### Notes on creating package for distribution
|
43
|
+
|
44
|
+
```
|
45
|
+
--> merge X-Y-Z branch into master branch on GitHub
|
46
|
+
|
47
|
+
--> on local master branch, ./gitsync
|
48
|
+
|
49
|
+
--> create release X.Y.Z on GitHub using master branch
|
50
|
+
|
51
|
+
--> create new package on Conda-Forge for release X.Y.Z
|
52
|
+
|
53
|
+
--> open a PR to github.com/conda-forge/taxcalc-feedstock where
|
54
|
+
you change the `recipe/meta.yaml` file by updating:
|
55
|
+
(1) the version number to X.Y.Z and
|
56
|
+
(2) the checksum to reflect the checksum for the
|
57
|
+
tarball for release X.Y.Z in the Tax-Calculator GitHub repo
|
58
|
+
```
|
@@ -2,7 +2,7 @@ Contributor guide
|
|
2
2
|
=================
|
3
3
|
|
4
4
|
The purpose of this guide is to get you to the point where you can
|
5
|
-
make improvements to
|
5
|
+
make improvements to Tax-Calculator and share them with the rest
|
6
6
|
of the development team as a GitHub pull request.
|
7
7
|
This document assumes that you have read {doc}`../usage/starting` and
|
8
8
|
{doc}`../recipes/index`.
|
@@ -14,50 +14,52 @@ paragraph **before** preparing a pull request.
|
|
14
14
|
(a) Modify {doc}`../recipes/recipe06` to
|
15
15
|
analyze the kind of tax reform you want to add to the list of reforms
|
16
16
|
that can be analyzed parametricly by Tax-Calculator.
|
17
|
-
(b) Raise a Tax-Calculator issue in which you show your modified
|
18
|
-
simulates the reform and provide some numerical results
|
19
|
-
illustrate the effects of the reform.
|
20
|
-
In the course of the conversation about your issue, you may be asked
|
21
|
-
|
17
|
+
(b) Raise a Tax-Calculator issue in which you show your modified
|
18
|
+
recipe 6 that simulates the reform and provide some numerical results
|
19
|
+
that illustrate the effects of the reform.
|
20
|
+
In the course of the conversation about your issue, you may be asked
|
21
|
+
to prepare a pull request that would allow this reform to be analyzed
|
22
|
+
using new policy parameters and associated logic. If so, follow the
|
23
|
+
directions below when preparing that pull request.
|
22
24
|
|
23
25
|
We keep track of Tax-Calculator source code using the [Git version
|
24
|
-
control system
|
25
|
-
|
26
|
-
don't expect you to be an expert Git user.
|
27
|
-
|
28
|
-
|
29
|
-
Following
|
26
|
+
control system and
|
27
|
+
GitHub](https://www.w3schools.com/git/git_intro.asp?remote=github).
|
28
|
+
We don't expect you to be an expert Git user. Where possible, we link
|
29
|
+
to Git and GitHub documentation to help with some of the unfamiliar
|
30
|
+
terminology (often from this [glossary of GitHub
|
31
|
+
terms](https://help.github.com/articles/github-glossary/)). Following
|
32
|
+
the next steps will get you up and running and contributing to
|
30
33
|
Tax-Calculator even if you've never used anything like Git and GitHub.
|
31
34
|
But if you are unfamiliar with the concept of version control, you
|
32
|
-
should read an introductory tutorial online.
|
33
|
-
|
35
|
+
should read an introductory tutorial online. A good tutorial can be
|
36
|
+
found
|
34
37
|
[here](https://homes.cs.washington.edu/~mernst/advice/version-control.html).
|
35
38
|
|
36
|
-
If you have already completed the
|
37
|
-
|
39
|
+
If you have already completed the following Setup Python and Setup Git
|
40
|
+
sections, please skip to [Workflow](#workflow).
|
38
41
|
|
39
42
|
|
40
43
|
## Setup Python
|
41
44
|
|
42
|
-
Follow the [getting started
|
43
|
-
|
44
|
-
package will interfere with the testing of changes in the source code.
|
45
|
+
Follow the [getting started
|
46
|
+
instructions](https://taxcalc.pslmodels.org/usage/starting.html).
|
45
47
|
|
46
48
|
If you are new to or have limited experience with Python, you should
|
47
|
-
read some introductory tutorials available online. One such
|
48
|
-
is [
|
49
|
-
|
49
|
+
read some introductory tutorials available online. One such
|
50
|
+
interactive tutorial is the [W3 Schools' Python
|
51
|
+
Introduction](https://www.w3schools.com/python/python_intro.asp).
|
50
52
|
|
51
53
|
|
52
54
|
## Setup Git
|
53
55
|
|
54
56
|
1. Create a free GitHub user account from the [GitHub home
|
55
|
-
page](https://github.com
|
57
|
+
page](https://github.com).
|
56
58
|
|
57
|
-
2. Install Git on your local computer by following steps
|
59
|
+
2. Install Git on your local computer by following the steps
|
58
60
|
[here](https://help.github.com/articles/set-up-git/).
|
59
61
|
|
60
|
-
3. Tell Git to remember your GitHub password by following steps
|
62
|
+
3. Tell Git to remember your GitHub password by following the steps
|
61
63
|
[here](https://help.github.com/articles/caching-your-github-password-in-git/).
|
62
64
|
|
63
65
|
4. Sign in to GitHub and create your own
|
@@ -97,21 +99,17 @@ page](https://github.com/).
|
|
97
99
|
9. Create a conda environment with all of the necessary packages to
|
98
100
|
execute Tax-Calculator source code in the Tax-Calculator directory:
|
99
101
|
```
|
100
|
-
conda
|
102
|
+
conda create --name taxcalc-dev
|
101
103
|
```
|
102
104
|
|
103
105
|
10. The prior command will create a conda environment called `taxcalc-dev`.
|
104
|
-
Activate this environment as follows
|
106
|
+
Activate this environment as follows:
|
105
107
|
```
|
106
|
-
|
107
|
-
```
|
108
|
-
If you are working on Windows, use the following from the command line:
|
109
|
-
```
|
110
|
-
activate taxcalc-dev
|
108
|
+
conda activate taxcalc-dev
|
111
109
|
```
|
112
110
|
Important Note: never conda install the taxcalc package in the
|
113
111
|
taxcalc-dev environment because the taxcalc source code and the
|
114
|
-
installed package
|
112
|
+
installed package may be in conflict.
|
115
113
|
|
116
114
|
11. To check that everything is working properly, run the following at
|
117
115
|
the command line in the Tax-Calculator directory:
|
@@ -136,7 +134,7 @@ page](https://github.com/).
|
|
136
134
|
|
137
135
|
If you've made it this far, you've successfully made a remote copy (a
|
138
136
|
fork) of central Tax-Calculator repo. That remote repo is hosted on
|
139
|
-
GitHub.
|
137
|
+
GitHub. You've also created a local repo --- a
|
140
138
|
[clone](https://help.github.com/articles/github-glossary/#clone) ---
|
141
139
|
that lives on your computer and only you can see; you will make your
|
142
140
|
changes to the Tax-Calculator by editing the files in the
|
@@ -166,7 +164,7 @@ situations, in which case other contributors are here to help.
|
|
166
164
|
Navigate to your local Tax-Calculator directory and enter the
|
167
165
|
following text at the command line:
|
168
166
|
```
|
169
|
-
git
|
167
|
+
git switch master
|
170
168
|
```
|
171
169
|
|
172
170
|
b. Download all of the content from the central Tax-Calculator repo
|
@@ -198,13 +196,13 @@ situations, in which case other contributors are here to help.
|
|
198
196
|
simply execute substeps `a` and `e`. If you are working on Mac
|
199
197
|
or Linux, execute these commands in the Tax-Calculator directory:
|
200
198
|
```
|
201
|
-
git
|
199
|
+
git switch master
|
202
200
|
./gitsync
|
203
201
|
```
|
204
202
|
If you are working on Windows, execute these commands in the
|
205
203
|
Tax-Calculator directory:
|
206
204
|
```
|
207
|
-
git
|
205
|
+
git switch master
|
208
206
|
gitsync
|
209
207
|
```
|
210
208
|
|
@@ -224,17 +222,17 @@ situations, in which case other contributors are here to help.
|
|
224
222
|
sure to read about the Tax-Calculator {doc}`param_naming`.
|
225
223
|
|
226
224
|
4. As you make changes, frequently check that your changes do not
|
227
|
-
introduce bugs or degrade the
|
228
|
-
To do this, run the following commands
|
229
|
-
the Tax-Calculator
|
225
|
+
violate Tax-Calculator coding style, introduce bugs, or degrade the
|
226
|
+
accuracy of Tax-Calculator. To do this, run the following commands
|
227
|
+
from the command line in the Tax-Calculator directory:
|
230
228
|
```
|
231
|
-
|
232
|
-
pytest
|
229
|
+
make cstest
|
230
|
+
make pytest-cps
|
233
231
|
```
|
234
232
|
Consult {doc}`testing` for more details.
|
235
233
|
|
236
|
-
If the tests do not pass, try to fix the
|
237
|
-
information provided by the error message.
|
234
|
+
If the tests do not pass, try to fix the problem by using the
|
235
|
+
information provided by the error message. If this isn't possible
|
238
236
|
or doesn't work, we are here to help.
|
239
237
|
|
240
238
|
5. Now you're ready to
|
@@ -278,9 +276,9 @@ situations, in which case other contributors are here to help.
|
|
278
276
|
```
|
279
277
|
You may need to resolve conflicts that arise when another
|
280
278
|
contributor changed the same section of code that you are
|
281
|
-
changing.
|
282
|
-
if this happens to you.
|
283
|
-
conflict, run the tests (step 4) again fixing.
|
279
|
+
changing. Feel free to ask other contributors for guidance
|
280
|
+
if this happens to you. If you do need to fix a merge
|
281
|
+
conflict, run the tests (step 4) again after fixing.
|
284
282
|
|
285
283
|
7. When you are ready for other team members to review your code, make
|
286
284
|
your final commit and push your local branch to your remote repo:
|
@@ -289,9 +287,9 @@ situations, in which case other contributors are here to help.
|
|
289
287
|
```
|
290
288
|
|
291
289
|
8. From the [central GitHub Tax-Calculator
|
292
|
-
page](https://github.com/PSLmodels/Tax-Calculator), open a
|
293
|
-
|
294
|
-
containing the changes in your local branch.
|
290
|
+
page](https://github.com/PSLmodels/Tax-Calculator), open a [pull
|
291
|
+
request](https://help.github.com/articles/creating-a-pull-request/#creating-the-pull-request)
|
292
|
+
containing the changes in your local branch.
|
295
293
|
|
296
294
|
9. When you open a GitHub pull request, a code coverage report will be
|
297
295
|
automatically generated. If your branch adds new code that is not
|
@@ -306,4 +304,6 @@ branch, commit them (step 6), and push them to your remote repo (step
|
|
306
304
|
7), and these changes will be automatically incorporated into your
|
307
305
|
pull request.
|
308
306
|
|
309
|
-
You should now read the more detailed {doc}`pr_workflow` document.
|
307
|
+
You should now read the more detailed {doc}`pr_workflow` document.
|
308
|
+
|
309
|
+
This is the end of the Contributor Guide document.
|
@@ -2,12 +2,12 @@ Pull request workflow
|
|
2
2
|
=====================
|
3
3
|
|
4
4
|
This description of the git/GitHub workflow is written for a person
|
5
|
-
who wants to contribute changes to Tax-Calculator source code.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
who wants to contribute changes to Tax-Calculator source code. It
|
6
|
+
assumes that you have read the {doc}`contributor_guide` and and
|
7
|
+
{doc}`param_naming`, have forked the [central GitHub Tax-Calculator
|
8
|
+
repository](https://github.com/PSLmodels/Tax-Calculator) to your
|
9
|
+
GitHub account, and have cloned that forked copy to your local
|
10
|
+
computer.
|
11
11
|
|
12
12
|
This document describes the steps you should follow when developing a
|
13
13
|
pull request on your local computer and submitting it to GitHub for
|
@@ -18,25 +18,23 @@ repository, you have access to three copies of the repository: the
|
|
18
18
|
central repository (called `upstream`), the forked repository in your
|
19
19
|
personal GitHub account (called `origin`), and the repository on your
|
20
20
|
local computer, which is where you will prepare a pull request using
|
21
|
-
git.
|
22
|
-
git and GitHub are powerful and flexible, so there may be
|
21
|
+
git. git and GitHub are powerful and flexible, so there may be
|
23
22
|
alternative ways to accomplish the results generated by the following
|
24
|
-
workflow.
|
25
|
-
But the following is the workflow commonly used by the core
|
23
|
+
workflow. But the following is the workflow commonly used by the core
|
26
24
|
developers of Tax-Calculator.
|
27
25
|
|
28
26
|
## Steps in the workflow
|
29
27
|
|
30
28
|
It is essential to take each step in the order described here.
|
31
29
|
|
32
|
-
We assume that you are at the operating system command prompt in
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
We assume that you are at the operating system command prompt in the
|
31
|
+
top-level directory of the Tax-Calculator repository on your local
|
32
|
+
computer. (The top-level directory is the parent directory of the
|
33
|
+
taxcalc subdirectory.)
|
36
34
|
|
37
35
|
1. Make sure you are on the `master` branch by doing `git branch` to
|
38
36
|
confirm the asterisk is marking `master`; if not on the `master`
|
39
|
-
branch, do `git
|
37
|
+
branch, do `git switch master` to change the active branch.
|
40
38
|
|
41
39
|
2. Make sure your `master` branch is synchronized with the `upstream`
|
42
40
|
and `origin` repositories by executing `./gitsync` (on Mac OS X or
|
@@ -47,26 +45,26 @@ changes by doing `git checkout -b BNAME` (where you type in the name
|
|
47
45
|
of your branch in place of `BNAME`).
|
48
46
|
|
49
47
|
4. In your favorite text editor, revise one or more existing files and
|
50
|
-
save the changes.
|
51
|
-
If you want to add a new file to the Tax-Calculator
|
48
|
+
save the changes. If you want to add a new file to the Tax-Calculator
|
52
49
|
repository, create and save the new file in your editor and then do
|
53
50
|
`git add FNAME` (where you type in the name of your new file in place
|
54
51
|
of `FNAME`). If you want to delete an existing file in the
|
55
52
|
Tax-Calculator repository, then do `git rm FNAME` (where you type in
|
56
53
|
the name of the file you want to delete in place of `FNAME`). If you
|
57
|
-
want to rename an existing file in the Tax-Calculator repository, then
|
54
|
+
want to rename an existing file in the Tax-Calculator repository, then
|
55
|
+
do `git mv OLDNAME NEWNAME` (where you type in the name of the file
|
58
56
|
you want to rename in place of `OLDNAME` and type in the new name of
|
59
57
|
the file in place of `NEWNAME`).
|
60
58
|
|
61
59
|
5. Next test your proposed source-code changes in two ways: for coding
|
62
|
-
style and for substantive results.
|
63
|
-
|
60
|
+
style and for substantive results. Read {doc}`testing` for how to
|
61
|
+
conduct these tests on your local computer.
|
64
62
|
|
65
63
|
6. When you have successfully tested your changes, commit the changes
|
66
64
|
to your local repository by doing `git commit -a -m "MESSAGE"` (where
|
67
65
|
you type in a short --- no more than about 70 characters ---
|
68
|
-
description of the changes in place of `MESSAGE`).
|
69
|
-
|
66
|
+
description of the changes in place of `MESSAGE`). Note that it is
|
67
|
+
essential to use the quotation marks around the `MESSAGE` because it
|
70
68
|
will typically contain spaces.
|
71
69
|
|
72
70
|
**NOTE THAT SOME PULL REQUESTS CYCLE THROUGH STEPS 4-6 MORE THAN ONCE**
|
@@ -76,22 +74,21 @@ to GitHub for review by doing `git push origin BNAME` (where you type
|
|
76
74
|
in the branch name you used in step 3 in place of `BNAME`).
|
77
75
|
|
78
76
|
8. Then in your browser go to the [central GitHub Tax-Calculator
|
79
|
-
repository](https://github.com/PSLmodels/Tax-Calculator)
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
repository](https://github.com/PSLmodels/Tax-Calculator) and you
|
78
|
+
should see an invitation to create a pull request based on the branch
|
79
|
+
you just pushed to `origin`. Accept that invitation, write a
|
80
|
+
meaningful title, add a description of the reason for and nature of
|
83
81
|
your proposed source-code changes, and then click on the "Create"
|
84
82
|
button.
|
85
83
|
|
86
84
|
**IF ASKED TO MAKE CHANGES, REPEAT STEPS 4-7 ON YOUR DEVELOPMENT BRANCH**
|
87
85
|
|
88
|
-
To get back on your development branch, do `git
|
86
|
+
To get back on your development branch, do `git switch BNAME` (where
|
89
87
|
you type in the branch name you used in step 3 in place of `BNAME`).
|
90
88
|
|
91
89
|
9. After your pull request is merged into the `upstream` `master`
|
92
90
|
branch, repeat steps 1-2 in order to synchronize your `origin` and
|
93
91
|
`local` repositories with the new `master` branch in the `upstream`
|
94
|
-
repository.
|
95
|
-
You should also delete the now redundant development
|
92
|
+
repository. You should also delete the now redundant development
|
96
93
|
branch from your local computer by doing `git branch -d BNAME` (where
|
97
94
|
you type in the branch name you used in step 3 in place of `BNAME`).
|
@@ -0,0 +1,116 @@
|
|
1
|
+
Testing
|
2
|
+
=======
|
3
|
+
|
4
|
+
This description of Tax-Calculator testing procedures is written for a
|
5
|
+
person who wants to contribute changes to Tax-Calculator source code.
|
6
|
+
|
7
|
+
It assumes that you have read {doc}`contributor_guide` and
|
8
|
+
{doc}`param_naming`, have forked the [central GitHub Tax-Calculator
|
9
|
+
repository](https://github.com/PSLmodels/Tax-Calculator) to your
|
10
|
+
GitHub account, and have cloned that forked copy to your local
|
11
|
+
computer.
|
12
|
+
|
13
|
+
This document also assumes that you have read {doc}`pr_workflow`
|
14
|
+
so that you understand where the testing procedures fit into
|
15
|
+
the broader workflow of preparing a pull request that changes
|
16
|
+
Tax-Calculator source code.
|
17
|
+
|
18
|
+
There are two phases of testing: testing that the source code
|
19
|
+
complies with the Tax-Calculator coding style and testing that
|
20
|
+
the source code does not contain bugs.
|
21
|
+
|
22
|
+
## Testing coding style
|
23
|
+
|
24
|
+
The Tax-Calculator project follows `pycodestyle` and `pylint`
|
25
|
+
recommended coding style in most cases.
|
26
|
+
|
27
|
+
Check that your changes on a local branch are coding-style compliant
|
28
|
+
by running the coding-style test in the top-level Tax-Calculator
|
29
|
+
directory as follows:
|
30
|
+
|
31
|
+
```
|
32
|
+
make cstest
|
33
|
+
```
|
34
|
+
|
35
|
+
No messages indicate the tests pass. Fix any warnings. When you pass
|
36
|
+
all these coding-style tests, proceed to the second phase of testing.
|
37
|
+
|
38
|
+
## Testing with pytest
|
39
|
+
|
40
|
+
There are two variants of this second testing phase depending on
|
41
|
+
whether or not you have access to a file called `puf.csv` that
|
42
|
+
contains a representative sample of tax filing units derived from the
|
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
|
+
```
|
62
|
+
|
63
|
+
This will start executing a pytest suite containing hundreds of tests,
|
64
|
+
but will skip the tests that require the `puf.csv` file as input and
|
65
|
+
the tests that are executed only just before a new release is being
|
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:
|
73
|
+
|
74
|
+
```
|
75
|
+
make pytest
|
76
|
+
```
|
77
|
+
|
78
|
+
This will start executing a pytest suite containing hundreds of tests,
|
79
|
+
including the tests that require the `puf.csv` file as input but
|
80
|
+
excluding the tests that are executed only just before a new release
|
81
|
+
is being prepared.
|
82
|
+
|
83
|
+
Just before releasing a new version of Tax-Calculator or just after
|
84
|
+
adding a new parameter to `policy_current_law.json`, you should also
|
85
|
+
execute the pre-release tests using this command:
|
86
|
+
|
87
|
+
```
|
88
|
+
make pytest-all
|
89
|
+
```
|
90
|
+
|
91
|
+
## Interpreting test results
|
92
|
+
|
93
|
+
If you are adding an enhancement that expands the capabilities of the
|
94
|
+
Tax-Calculator, then all the tests you can run should pass before you
|
95
|
+
submit a pull request containing the enhancement. In addition, it
|
96
|
+
essential to add a test to the pytest suite, which is located in the
|
97
|
+
`taxcalc/tests` directory, that somehow checks that your enhancement
|
98
|
+
is working as you expect it to work.
|
99
|
+
|
100
|
+
On the other hand, if you think you have found a bug in the existing
|
101
|
+
Tax-Calculator source code, the first thing to do is add a test to the
|
102
|
+
pytest suite that demonstrates how the source code produces an
|
103
|
+
incorrect result (that is, the test fails because the result is
|
104
|
+
incorrect). Then change the source code to fix the bug and
|
105
|
+
demonstrate that the newly-added test, which used to fail, now passes.
|
106
|
+
|
107
|
+
## Updating test results
|
108
|
+
|
109
|
+
After an enhancement or bug fix, you may be convinced that the new and
|
110
|
+
different second-phase test results are, in fact, correct. How do you
|
111
|
+
eliminate the test failures? For all but the few tests that require
|
112
|
+
the `puf.csv` file or the `cps.csv` file as input, simply edit the
|
113
|
+
appropriate `taxcalc/tests/test_*.py` file so that the test passes
|
114
|
+
when you rerun pytest. If there are failures for the tests that write
|
115
|
+
results files, read the test error message for instructions about how
|
116
|
+
to update the test results.
|
@@ -4,7 +4,8 @@ import numpy as np
|
|
4
4
|
|
5
5
|
|
6
6
|
def make_io_vars(path, iotype):
|
7
|
-
"""
|
7
|
+
"""
|
8
|
+
Create string of information for input or output variables.
|
8
9
|
|
9
10
|
Args:
|
10
11
|
path: Path to records_variables.json.
|
@@ -18,8 +19,7 @@ def make_io_vars(path, iotype):
|
|
18
19
|
return '## `' + df.index + '` \n'
|
19
20
|
|
20
21
|
def required(df):
|
21
|
-
return np.where(df.required
|
22
|
-
'')
|
22
|
+
return np.where(df.required, '**_Required Input Variable_** \n', '')
|
23
23
|
|
24
24
|
def description(df):
|
25
25
|
return '_Description_: ' + df.desc + ' \n'
|