taxcalc 4.3.5__tar.gz → 4.4.1__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.
Files changed (247) hide show
  1. {taxcalc-4.3.5 → taxcalc-4.4.1}/Makefile +5 -8
  2. {taxcalc-4.3.5 → taxcalc-4.4.1}/PKG-INFO +23 -11
  3. {taxcalc-4.3.5 → taxcalc-4.4.1}/README.md +8 -2
  4. {taxcalc-4.3.5 → taxcalc-4.4.1}/conda.recipe/meta.yaml +4 -4
  5. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/about/releases.md +32 -2
  6. taxcalc-4.4.1/docs/contributing/RELEASING.md +58 -0
  7. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/contributing/contributor_guide.md +51 -51
  8. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/contributing/pr_workflow.md +26 -29
  9. taxcalc-4.4.1/docs/contributing/testing.md +116 -0
  10. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/make/make_io_vars.py +3 -3
  11. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/make/make_params.py +34 -25
  12. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/make/make_uguide.py +4 -4
  13. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/policy_params.md +2 -19
  14. taxcalc-4.4.1/docs/guide/python_interface.md +14 -0
  15. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/index.md +1 -1
  16. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/usage/data.md +14 -9
  17. {taxcalc-4.3.5 → taxcalc-4.4.1}/environment.yml +3 -2
  18. {taxcalc-4.3.5 → taxcalc-4.4.1}/extend_tcja.py +7 -4
  19. {taxcalc-4.3.5 → taxcalc-4.4.1}/ppp.py +1 -0
  20. {taxcalc-4.3.5 → taxcalc-4.4.1}/setup.py +12 -11
  21. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/__init__.py +1 -1
  22. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/calcfunctions.py +326 -171
  23. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/calculator.py +35 -34
  24. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/cli/tc.py +6 -7
  25. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/consumption.py +14 -9
  26. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/data.py +8 -8
  27. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/decorators.py +3 -3
  28. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/growdiff.py +6 -6
  29. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/growfactors.py +1 -1
  30. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/parameters.py +91 -47
  31. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/policy.py +23 -7
  32. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/records.py +1 -0
  33. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/records_variables.json +6 -0
  34. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ext.json +1 -1
  35. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/taxcalcio.py +88 -73
  36. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/cmpi_cps_expect.txt +6 -6
  37. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/cmpi_puf_expect.txt +6 -6
  38. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/conftest.py +42 -41
  39. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_4package.py +47 -3
  40. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_benefits.py +9 -8
  41. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_calcfunctions.py +55 -38
  42. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_calculator.py +14 -10
  43. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_compare.py +44 -50
  44. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_compatible_data.py +9 -7
  45. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_consumption.py +41 -22
  46. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_cpscsv.py +81 -31
  47. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_data.py +31 -24
  48. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_decorators.py +84 -32
  49. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_growdiff.py +20 -19
  50. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_growfactors.py +8 -8
  51. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_parameters.py +54 -58
  52. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_policy.py +16 -14
  53. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_puf_var_stats.py +14 -14
  54. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_pufcsv.py +40 -40
  55. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_records.py +73 -60
  56. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_reforms.py +34 -31
  57. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_responses.py +4 -4
  58. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_taxcalcio.py +76 -62
  59. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/test_utils.py +78 -46
  60. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/utils.py +49 -42
  61. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/taxsim_emulation.json +1 -5
  62. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc.egg-info/PKG-INFO +23 -11
  63. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc.egg-info/SOURCES.txt +0 -1
  64. taxcalc-4.4.1/taxcalc.egg-info/requires.txt +5 -0
  65. taxcalc-4.3.5/docs/contributing/RELEASING.md +0 -94
  66. taxcalc-4.3.5/docs/contributing/dependencies.md +0 -14
  67. taxcalc-4.3.5/docs/contributing/testing.md +0 -184
  68. taxcalc-4.3.5/docs/guide/python_interface.md +0 -6
  69. taxcalc-4.3.5/taxcalc.egg-info/requires.txt +0 -7
  70. {taxcalc-4.3.5 → taxcalc-4.4.1}/.coveragerc +0 -0
  71. {taxcalc-4.3.5 → taxcalc-4.4.1}/.github/FUNDING.yml +0 -0
  72. {taxcalc-4.3.5 → taxcalc-4.4.1}/.github/workflows/build_and_test.yml +0 -0
  73. {taxcalc-4.3.5 → taxcalc-4.4.1}/.github/workflows/check_jupyterbook.yml +0 -0
  74. {taxcalc-4.3.5 → taxcalc-4.4.1}/.github/workflows/deploy_jupyterbook.yml +0 -0
  75. {taxcalc-4.3.5 → taxcalc-4.4.1}/.github/workflows/deploy_parameters_docs.yml +0 -0
  76. {taxcalc-4.3.5 → taxcalc-4.4.1}/.gitignore +0 -0
  77. {taxcalc-4.3.5 → taxcalc-4.4.1}/LICENSE +0 -0
  78. {taxcalc-4.3.5 → taxcalc-4.4.1}/MANIFEST.in +0 -0
  79. {taxcalc-4.3.5 → taxcalc-4.4.1}/PSL_catalog.json +0 -0
  80. {taxcalc-4.3.5 → taxcalc-4.4.1}/codecov.yml +0 -0
  81. {taxcalc-4.3.5 → taxcalc-4.4.1}/conda.recipe/bld.bat +0 -0
  82. {taxcalc-4.3.5 → taxcalc-4.4.1}/conda.recipe/build.sh +0 -0
  83. {taxcalc-4.3.5 → taxcalc-4.4.1}/csv_show.sh +0 -0
  84. {taxcalc-4.3.5 → taxcalc-4.4.1}/csv_vars.sh +0 -0
  85. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/PSL.svg +0 -0
  86. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/_config.yml +0 -0
  87. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/_static/atr.png +0 -0
  88. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/_static/mtr.png +0 -0
  89. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/_static/pch.png +0 -0
  90. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/_toc.yml +0 -0
  91. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/about/LICENSE.md +0 -0
  92. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/about/history.md +0 -0
  93. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/about/roadmap.md +0 -0
  94. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/calcfunctions.rst +0 -0
  95. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/calculator.rst +0 -0
  96. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/consumption.rst +0 -0
  97. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/data.rst +0 -0
  98. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/decorators.rst +0 -0
  99. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/growdiff.rst +0 -0
  100. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/growfactors.rst +0 -0
  101. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/parameters.rst +0 -0
  102. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/policy.rst +0 -0
  103. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/public_api.rst +0 -0
  104. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/records.rst +0 -0
  105. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/taxcalcio.rst +0 -0
  106. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/utils.rst +0 -0
  107. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/api/utilsprvt.rst +0 -0
  108. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/contributing/param_naming.md +0 -0
  109. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/README.md +0 -0
  110. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/assumption_params.md +0 -0
  111. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/cli.md +0 -0
  112. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/index.md +0 -0
  113. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/input_vars.md +0 -0
  114. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/output_vars.md +0 -0
  115. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/templates/assumption_params_template.md +0 -0
  116. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/templates/input_vars_template.md +0 -0
  117. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/templates/output_vars_template.md +0 -0
  118. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/guide/templates/policy_params_template.md +0 -0
  119. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/README.md +0 -0
  120. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/_static/reformA.json +0 -0
  121. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/_static/reformB.json +0 -0
  122. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/_static/reformC.json +0 -0
  123. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/convert_all.sh +0 -0
  124. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/index.md +0 -0
  125. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe00.md +0 -0
  126. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe01.md +0 -0
  127. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe02.md +0 -0
  128. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe03.md +0 -0
  129. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe04.md +0 -0
  130. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe04_pandas.md +0 -0
  131. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe05.md +0 -0
  132. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/md_src/recipe06.md +0 -0
  133. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe00.ipynb +0 -0
  134. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe01.ipynb +0 -0
  135. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe02.ipynb +0 -0
  136. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe03.ipynb +0 -0
  137. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe04.ipynb +0 -0
  138. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe04_pandas.ipynb +0 -0
  139. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe05.ipynb +0 -0
  140. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/recipes/recipe06.ipynb +0 -0
  141. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/usage/overview.md +0 -0
  142. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/usage/starting.md +0 -0
  143. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/usage/tcja_after_2025.md +0 -0
  144. {taxcalc-4.3.5 → taxcalc-4.4.1}/docs/use_cases.md +0 -0
  145. {taxcalc-4.3.5 → taxcalc-4.4.1}/gitpr +0 -0
  146. {taxcalc-4.3.5 → taxcalc-4.4.1}/gitpr.bat +0 -0
  147. {taxcalc-4.3.5 → taxcalc-4.4.1}/gitsync +0 -0
  148. {taxcalc-4.3.5 → taxcalc-4.4.1}/gitsync.bat +0 -0
  149. {taxcalc-4.3.5 → taxcalc-4.4.1}/pyproject.toml +0 -0
  150. {taxcalc-4.3.5 → taxcalc-4.4.1}/pytest.ini +0 -0
  151. {taxcalc-4.3.5 → taxcalc-4.4.1}/setup.cfg +0 -0
  152. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/assumptions/ASSUMPTIONS.md +0 -0
  153. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/assumptions/README.md +0 -0
  154. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/assumptions/economic_assumptions_template.json +0 -0
  155. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/cli/__init__.py +0 -0
  156. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/conftest.py +0 -0
  157. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/consumption.json +0 -0
  158. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/cps.csv.gz +0 -0
  159. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/cps_weights.csv.gz +0 -0
  160. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/growdiff.json +0 -0
  161. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/growfactors.csv +0 -0
  162. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/policy_current_law.json +0 -0
  163. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/puf_ratios.csv +0 -0
  164. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/puf_weights.csv.gz +0 -0
  165. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/2017_law.json +0 -0
  166. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/2017_law.out.csv +0 -0
  167. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ARPA.json +0 -0
  168. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ARPA.out.csv +0 -0
  169. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/BrownKhanna.json +0 -0
  170. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/BrownKhanna.out.csv +0 -0
  171. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/CARES.json +0 -0
  172. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/CARES.out.csv +0 -0
  173. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +0 -0
  174. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +0 -0
  175. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Larson2019.json +0 -0
  176. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Larson2019.out.csv +0 -0
  177. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/README.md +0 -0
  178. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/REFORMS.md +0 -0
  179. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Renacci.json +0 -0
  180. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Renacci.out.csv +0 -0
  181. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/SandersDeFazio.json +0 -0
  182. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/SandersDeFazio.out.csv +0 -0
  183. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/TCJA.json +0 -0
  184. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/TCJA.md +0 -0
  185. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/TCJA.out.csv +0 -0
  186. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Trump2016.json +0 -0
  187. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Trump2016.out.csv +0 -0
  188. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Trump2017.json +0 -0
  189. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/Trump2017.out.csv +0 -0
  190. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/Clinton2016.json +0 -0
  191. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/RyanBrady.json +0 -0
  192. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_House.json +0 -0
  193. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_House_Amended.json +0 -0
  194. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_Reconciliation.json +0 -0
  195. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_Senate.json +0 -0
  196. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_Senate_111417.json +0 -0
  197. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/archive/TCJA_Senate_120117.json +0 -0
  198. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/cases.csv +0 -0
  199. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/clp.out.csv +0 -0
  200. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/growfactors_ext.csv +0 -0
  201. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes0.json +0 -0
  202. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes0.out.csv +0 -0
  203. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes1.json +0 -0
  204. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes1.out.csv +0 -0
  205. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes2.json +0 -0
  206. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes2.out.csv +0 -0
  207. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes3.json +0 -0
  208. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/reforms/ptaxes3.out.csv +0 -0
  209. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/benefits_expect.csv +0 -0
  210. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/cpscsv_agg_expect.csv +0 -0
  211. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/puf_var_correl_coeffs_2016.csv +0 -0
  212. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/puf_var_wght_means_by_year.csv +0 -0
  213. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/pufcsv_agg_expect.csv +0 -0
  214. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/pufcsv_mtr_expect.txt +0 -0
  215. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/reforms.json +0 -0
  216. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/tests/reforms_expect.csv +0 -0
  217. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/utilsprvt.py +0 -0
  218. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/CSV_INPUT_VARS.md +0 -0
  219. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/CSV_OUTPUT_VARS.md +0 -0
  220. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/README.md +0 -0
  221. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/Differences_Explained.md +0 -0
  222. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/README.md +0 -0
  223. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +0 -0
  224. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +0 -0
  225. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +0 -0
  226. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +0 -0
  227. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +0 -0
  228. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +0 -0
  229. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +0 -0
  230. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +0 -0
  231. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +0 -0
  232. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +0 -0
  233. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +0 -0
  234. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +0 -0
  235. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +0 -0
  236. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/input_setup.py +0 -0
  237. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/main_comparison.py +0 -0
  238. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/prepare_taxcalc_input.py +0 -0
  239. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/process_taxcalc_output.py +0 -0
  240. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/taxsim_input.py +0 -0
  241. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/tc_sims.py +0 -0
  242. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/taxsim35/tests_35.py +0 -0
  243. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc/validation/tests_35.sh +0 -0
  244. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc.egg-info/dependency_links.txt +0 -0
  245. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc.egg-info/entry_points.txt +0 -0
  246. {taxcalc-4.3.5 → taxcalc-4.4.1}/taxcalc.egg-info/top_level.txt +0 -0
  247. {taxcalc-4.3.5 → taxcalc-4.4.1}/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
- PYLINT_FILES := $(shell grep -rl --include="*py" disable=locally-disabled .)
88
- PYLINT_OPTIONS = --disable=locally-disabled --score=no --jobs=4
89
- RECIPE_FILES := $(shell ls -l ./docs/recipes/recipe*.ipynb | awk '{print $$9}')
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
- -pycodestyle .
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) $(PYLINT_FILES)
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
1
+ Metadata-Version: 2.2
2
2
  Name: taxcalc
3
- Version: 4.3.5
4
- Summary: taxcalc
3
+ Version: 4.4.1
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
@@ -18,13 +18,19 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
19
  Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
- Requires-Dist: setuptools
22
- Requires-Dist: numpy
23
- Requires-Dist: pandas
24
- Requires-Dist: bokeh
21
+ Requires-Dist: numpy>=1.26
22
+ Requires-Dist: pandas>=2.2
23
+ Requires-Dist: bokeh>=2.4
25
24
  Requires-Dist: numba
26
- Requires-Dist: requests
27
- Requires-Dist: paramtools>=0.18.3
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
28
34
 
29
35
  | | |
30
36
  | --- | --- |
@@ -39,8 +45,14 @@ Tax-Calculator
39
45
  Tax-Calculator is an open-source microsimulation model for static
40
46
  analysis of USA federal income and payroll taxes.
41
47
 
42
- We are seeking contributors and maintainers. If you are interested in joining the project as a contributor or maintainer,
43
- open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping [@MattHJensen](https://github.com/MattHJensen/) or [@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
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.
44
56
 
45
57
  Complete documentation is available
46
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. If you are interested in joining the project as a contributor or maintainer,
15
- open a new [issue](https://github.com/PSLmodels/Tax-Calculator/issues) and ping [@MattHJensen](https://github.com/MattHJensen/) or [@jdebacker](https://github.com/jdebacker/) -- or just jump right in.
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/).
@@ -9,10 +9,10 @@ build:
9
9
  requirements:
10
10
  build:
11
11
  - "python>=3.10, <3.13"
12
- - "numpy>=1.26,<1.27"
12
+ - "numpy>=1.26"
13
13
  - "pandas>=2.2"
14
14
  - "bokeh>=2.4"
15
- - "paramtools>=0.18.3"
15
+ - "paramtools>=0.19.0"
16
16
  - numba
17
17
  - curl
18
18
  - openpyxl
@@ -20,10 +20,10 @@ requirements:
20
20
 
21
21
  run:
22
22
  - "python>=3.10, <3.13"
23
- - "numpy>=1.26,<1.27"
23
+ - "numpy>=1.26"
24
24
  - "pandas>=2.2"
25
25
  - "bokeh>=2.4"
26
- - "paramtools>=0.18.3"
26
+ - "paramtools>=0.19.0"
27
27
  - numba
28
28
  - curl
29
29
  - openpyxl
@@ -4,6 +4,36 @@ 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-02-13 Release 4.4.1
8
+ ------------------------
9
+ (last merged pull request is
10
+ [#2872](https://github.com/PSLmodels/Tax-Calculator/pull/2872))
11
+
12
+ **This is a minor enhancement release.**
13
+
14
+ **API Changes**
15
+
16
+ **New Features**
17
+ - Cosmetic code changes so that "make cstest" produces no warnings
18
+ - New tests added so that "make coverage" produces 100% code coverage
19
+ - Add c32800 to list of calc variables in records_variables.json file
20
+ [[#2872](https://github.com/PSLmodels/Tax-Calculator/pull/2872) by Martin Holmer]
21
+
22
+
23
+ 2024-12-19 Release 4.4.0
24
+ ------------------------
25
+ (last merged pull request is
26
+ [#2856](https://github.com/PSLmodels/Tax-Calculator/pull/2856))
27
+
28
+ **This is an enhancement release.**
29
+
30
+ **API Changes**
31
+
32
+ **New Features**
33
+ - Make a Policy object's last budget year be flexible
34
+ [[#2856](https://github.com/PSLmodels/Tax-Calculator/pull/2856) by Jason DeBacker with minor assistance from Martin Holmer]
35
+
36
+
7
37
  2024-12-16 Release 4.3.5
8
38
  ------------------------
9
39
  (last merged pull request is
@@ -23,8 +53,8 @@ for a complete commit history.
23
53
 
24
54
  **Bug Fixes**
25
55
  - Fix several broken documentation links
26
- [[#2847](https://github.com/PSLmodels/Tax-Calculator/pull/2847) by Martin Holmer] and
27
- [[#2849](https://github.com/PSLmodels/Tax-Calculator/pull/2849) by Martin Holmer]
56
+ [[#2847](https://github.com/PSLmodels/Tax-Calculator/pull/2847) by Martin Holmer and
57
+ [#2849](https://github.com/PSLmodels/Tax-Calculator/pull/2849) by Martin Holmer]
28
58
  - Remove incorrect use of GrowFactors() in Policy and Parameters classes
29
59
  [[#2852](https://github.com/PSLmodels/Tax-Calculator/pull/2852) by Martin Holmer]
30
60
 
@@ -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 the Tax-Calculator and share them with the rest
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 recipe 6 that
18
- simulates the reform and provide some numerical results that
19
- illustrate the effects of the reform.
20
- In the course of the conversation about your issue, you may be asked to prepare a pull request that would allow this reform to be analyzed using new policy parameters and associated logic.
21
- If so, follow the directions below when preparing that pull request.
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](https://git-scm.com/) via
25
- [GitHub](https://help.github.com/articles/github-glossary/#git). We
26
- don't expect you to be an expert Git user.
27
- Where possible, we link toGit and GitHub documentation to help with some of the unfamiliar terminology (often from this [glossary of GitHub
28
- terms](https://help.github.com/articles/github-glossary/).
29
- Following the next steps will get you up and running and contributing to
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
- A good tutorial can be found
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 [Setup Python](#setup-python) and
37
- [Setup Git](#setup-Git) sections, please skip to [Workflow](#workflow).
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 instructions](https://PSLmodels.github.io/Tax-Calculator/tc_starting.html),
43
- but be sure to skip step 2, because the installation of the `taxcalc`
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 tutorial
48
- is [Quantitative Economics with
49
- Python](https://lectures.quantecon.org/py/).
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 1-4
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 1-4
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 env create
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 if working on Mac or Linux:
106
+ Activate this environment as follows:
105
107
  ```
106
- source activate taxcalc-dev
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 will conflict.
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.com. You've also created a local repo --- a
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 checkout master
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 checkout master
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 checkout master
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 accuracy of the Tax-Calculator.
228
- To do this, run the following commands from the command line from inside
229
- the Tax-Calculator/taxcalc directory::
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
- pycodestyle .
232
- pytest -m "not requires_pufcsv and not pre_release" -n4
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 issue by using the
237
- information provided by the error message. If this isn't possible
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. Feel free to ask other contributors for guidance
282
- if this happens to you. If you do need to fix a merge
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
- [pull request](https://help.github.com/articles/creating-a-pull-request/#creating-the-pull-request)
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
- It assumes that you have read the {doc}`contributor_guide` and
7
- and {doc}`param_naming`,
8
- have forked the [central GitHub Tax-Calculator
9
- repository](https://github.com/PSLmodels/Tax-Calculator)
10
- to your GitHub account, and have cloned that forked copy to your local computer.
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
- the top-level directory of the Tax-Calculator repository on your
34
- local computer.
35
- (The top-level directory is the parent directory of the taxcalc subdirectory.)
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 checkout master` to change the active branch.
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 do `git mv OLDNAME NEWNAME` (where you type in the name of the file
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
- Read {doc}`testing` for how to conduct these tests on your local computer.
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
- Note that it is essential to use the quotation marks around the `MESSAGE` because it
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
- and you should see an invitation to create a pull request based on the
81
- branch you just pushed to `origin`.
82
- Accept that invitation, write a meaningful title, add a description of the reason for and nature of
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 checkout BNAME` (where
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.