taxcalc 4.1.0__tar.gz → 4.2.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.
Files changed (247) hide show
  1. taxcalc-4.2.0/.coveragerc +7 -0
  2. taxcalc-4.2.0/.github/FUNDING.yml +3 -0
  3. taxcalc-4.2.0/.github/workflows/build_and_test.yml +47 -0
  4. taxcalc-4.2.0/.github/workflows/check_jupyterbook.yml +29 -0
  5. taxcalc-4.2.0/.github/workflows/deploy_jupyterbook.yml +38 -0
  6. taxcalc-4.2.0/.github/workflows/deploy_parameters_docs.yml +39 -0
  7. taxcalc-4.2.0/.gitignore +27 -0
  8. taxcalc-4.2.0/Makefile +128 -0
  9. {taxcalc-4.1.0/taxcalc.egg-info → taxcalc-4.2.0}/PKG-INFO +1 -1
  10. taxcalc-4.2.0/PSL_catalog.json +29 -0
  11. taxcalc-4.2.0/codecov.yml +25 -0
  12. taxcalc-4.2.0/conda.recipe/bld.bat +5 -0
  13. taxcalc-4.2.0/conda.recipe/build.sh +10 -0
  14. taxcalc-4.2.0/conda.recipe/meta.yaml +39 -0
  15. taxcalc-4.2.0/csv_show.sh +26 -0
  16. taxcalc-4.2.0/csv_vars.sh +10 -0
  17. taxcalc-4.2.0/docs/PSL.svg +49 -0
  18. taxcalc-4.2.0/docs/_config.yml +27 -0
  19. taxcalc-4.2.0/docs/_static/atr.png +0 -0
  20. taxcalc-4.2.0/docs/_static/mtr.png +0 -0
  21. taxcalc-4.2.0/docs/_static/pch.png +0 -0
  22. taxcalc-4.2.0/docs/_toc.yml +60 -0
  23. taxcalc-4.2.0/docs/about/LICENSE.md +22 -0
  24. taxcalc-4.2.0/docs/about/history.md +12 -0
  25. taxcalc-4.2.0/docs/about/releases.md +2367 -0
  26. taxcalc-4.2.0/docs/about/roadmap.md +18 -0
  27. taxcalc-4.2.0/docs/api/calcfunctions.rst +23 -0
  28. taxcalc-4.2.0/docs/api/calculator.rst +20 -0
  29. taxcalc-4.2.0/docs/api/consumption.rst +15 -0
  30. taxcalc-4.2.0/docs/api/data.rst +15 -0
  31. taxcalc-4.2.0/docs/api/decorators.rst +19 -0
  32. taxcalc-4.2.0/docs/api/growdiff.rst +15 -0
  33. taxcalc-4.2.0/docs/api/growfactors.rst +15 -0
  34. taxcalc-4.2.0/docs/api/parameters.rst +20 -0
  35. taxcalc-4.2.0/docs/api/policy.rst +15 -0
  36. taxcalc-4.2.0/docs/api/public_api.rst +29 -0
  37. taxcalc-4.2.0/docs/api/records.rst +15 -0
  38. taxcalc-4.2.0/docs/api/taxcalcio.rst +17 -0
  39. taxcalc-4.2.0/docs/api/utils.rst +21 -0
  40. taxcalc-4.2.0/docs/api/utilsprvt.rst +15 -0
  41. taxcalc-4.2.0/docs/contributing/RELEASING.md +86 -0
  42. taxcalc-4.2.0/docs/contributing/contributor_guide.md +309 -0
  43. taxcalc-4.2.0/docs/contributing/dependencies.md +14 -0
  44. taxcalc-4.2.0/docs/contributing/param_naming.md +107 -0
  45. taxcalc-4.2.0/docs/contributing/pr_workflow.md +97 -0
  46. taxcalc-4.2.0/docs/contributing/testing.md +184 -0
  47. taxcalc-4.2.0/docs/guide/README.md +14 -0
  48. taxcalc-4.2.0/docs/guide/assumption_params.md +343 -0
  49. taxcalc-4.2.0/docs/guide/cli.md +360 -0
  50. taxcalc-4.2.0/docs/guide/index.md +11 -0
  51. taxcalc-4.2.0/docs/guide/input_vars.md +867 -0
  52. taxcalc-4.2.0/docs/guide/make/make_io_vars.py +74 -0
  53. taxcalc-4.2.0/docs/guide/make/make_params.py +221 -0
  54. taxcalc-4.2.0/docs/guide/make/make_uguide.py +75 -0
  55. taxcalc-4.2.0/docs/guide/output_vars.md +744 -0
  56. taxcalc-4.2.0/docs/guide/policy_params.md +4810 -0
  57. taxcalc-4.2.0/docs/guide/python_interface.md +6 -0
  58. taxcalc-4.2.0/docs/guide/templates/assumption_params_template.md +6 -0
  59. taxcalc-4.2.0/docs/guide/templates/input_vars_template.md +7 -0
  60. taxcalc-4.2.0/docs/guide/templates/output_vars_template.md +6 -0
  61. taxcalc-4.2.0/docs/guide/templates/policy_params_template.md +10 -0
  62. taxcalc-4.2.0/docs/index.md +92 -0
  63. taxcalc-4.2.0/docs/recipes/README.md +7 -0
  64. taxcalc-4.2.0/docs/recipes/_static/reformA.json +15 -0
  65. taxcalc-4.2.0/docs/recipes/_static/reformB.json +6 -0
  66. taxcalc-4.2.0/docs/recipes/_static/reformC.json +3 -0
  67. taxcalc-4.2.0/docs/recipes/convert_all.sh +8 -0
  68. taxcalc-4.2.0/docs/recipes/index.md +9 -0
  69. taxcalc-4.2.0/docs/recipes/md_src/recipe00.md +211 -0
  70. taxcalc-4.2.0/docs/recipes/md_src/recipe01.md +111 -0
  71. taxcalc-4.2.0/docs/recipes/md_src/recipe02.md +127 -0
  72. taxcalc-4.2.0/docs/recipes/md_src/recipe03.md +88 -0
  73. taxcalc-4.2.0/docs/recipes/md_src/recipe04.md +119 -0
  74. taxcalc-4.2.0/docs/recipes/md_src/recipe04_pandas.md +146 -0
  75. taxcalc-4.2.0/docs/recipes/md_src/recipe05.md +190 -0
  76. taxcalc-4.2.0/docs/recipes/md_src/recipe06.md +215 -0
  77. taxcalc-4.2.0/docs/recipes/recipe00.ipynb +1137 -0
  78. taxcalc-4.2.0/docs/recipes/recipe01.ipynb +200 -0
  79. taxcalc-4.2.0/docs/recipes/recipe02.ipynb +864 -0
  80. taxcalc-4.2.0/docs/recipes/recipe03.ipynb +173 -0
  81. taxcalc-4.2.0/docs/recipes/recipe04.ipynb +174 -0
  82. taxcalc-4.2.0/docs/recipes/recipe04_pandas.ipynb +263 -0
  83. taxcalc-4.2.0/docs/recipes/recipe05.ipynb +260 -0
  84. taxcalc-4.2.0/docs/recipes/recipe06.ipynb +262 -0
  85. taxcalc-4.2.0/docs/usage/data.md +83 -0
  86. taxcalc-4.2.0/docs/usage/overview.md +126 -0
  87. taxcalc-4.2.0/docs/usage/starting.md +78 -0
  88. taxcalc-4.2.0/docs/usage/tcja_after_2025.md +141 -0
  89. taxcalc-4.2.0/docs/use_cases.md +402 -0
  90. taxcalc-4.2.0/environment.yml +21 -0
  91. taxcalc-4.2.0/extend_tcja.py +143 -0
  92. taxcalc-4.2.0/gitpr +19 -0
  93. taxcalc-4.2.0/gitpr.bat +21 -0
  94. taxcalc-4.2.0/gitsync +12 -0
  95. taxcalc-4.2.0/gitsync.bat +15 -0
  96. taxcalc-4.2.0/ppp.py +76 -0
  97. taxcalc-4.2.0/pytest.ini +16 -0
  98. {taxcalc-4.1.0 → taxcalc-4.2.0}/setup.py +1 -1
  99. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/__init__.py +1 -1
  100. taxcalc-4.2.0/taxcalc/assumptions/ASSUMPTIONS.md +53 -0
  101. taxcalc-4.2.0/taxcalc/assumptions/README.md +17 -0
  102. taxcalc-4.2.0/taxcalc/assumptions/economic_assumptions_template.json +77 -0
  103. taxcalc-4.2.0/taxcalc/reforms/2017_law.json +125 -0
  104. taxcalc-4.2.0/taxcalc/reforms/2017_law.out.csv +10 -0
  105. taxcalc-4.2.0/taxcalc/reforms/ARPA.json +78 -0
  106. taxcalc-4.2.0/taxcalc/reforms/ARPA.out.csv +10 -0
  107. taxcalc-4.2.0/taxcalc/reforms/BrownKhanna.json +23 -0
  108. taxcalc-4.2.0/taxcalc/reforms/BrownKhanna.out.csv +10 -0
  109. taxcalc-4.2.0/taxcalc/reforms/CARES.json +37 -0
  110. taxcalc-4.2.0/taxcalc/reforms/CARES.out.csv +10 -0
  111. taxcalc-4.2.0/taxcalc/reforms/ConsolidatedAppropriationsAct2021.json +15 -0
  112. taxcalc-4.2.0/taxcalc/reforms/ConsolidatedAppropriationsAct2021.out.csv +10 -0
  113. taxcalc-4.2.0/taxcalc/reforms/Larson2019.json +36 -0
  114. taxcalc-4.2.0/taxcalc/reforms/Larson2019.out.csv +10 -0
  115. taxcalc-4.2.0/taxcalc/reforms/README.md +22 -0
  116. taxcalc-4.2.0/taxcalc/reforms/REFORMS.md +92 -0
  117. taxcalc-4.2.0/taxcalc/reforms/Renacci.json +61 -0
  118. taxcalc-4.2.0/taxcalc/reforms/Renacci.out.csv +10 -0
  119. taxcalc-4.2.0/taxcalc/reforms/SandersDeFazio.json +15 -0
  120. taxcalc-4.2.0/taxcalc/reforms/SandersDeFazio.out.csv +10 -0
  121. taxcalc-4.2.0/taxcalc/reforms/TCJA.json +168 -0
  122. taxcalc-4.2.0/taxcalc/reforms/TCJA.md +48 -0
  123. taxcalc-4.2.0/taxcalc/reforms/TCJA.out.csv +10 -0
  124. taxcalc-4.2.0/taxcalc/reforms/Trump2016.json +71 -0
  125. taxcalc-4.2.0/taxcalc/reforms/Trump2016.out.csv +10 -0
  126. taxcalc-4.2.0/taxcalc/reforms/Trump2017.json +51 -0
  127. taxcalc-4.2.0/taxcalc/reforms/Trump2017.out.csv +10 -0
  128. taxcalc-4.2.0/taxcalc/reforms/archive/Clinton2016.json +56 -0
  129. taxcalc-4.2.0/taxcalc/reforms/archive/RyanBrady.json +104 -0
  130. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_House.json +144 -0
  131. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_House_Amended.json +152 -0
  132. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_Reconciliation.json +187 -0
  133. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_Senate.json +116 -0
  134. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_Senate_111417.json +169 -0
  135. taxcalc-4.2.0/taxcalc/reforms/archive/TCJA_Senate_120117.json +174 -0
  136. taxcalc-4.2.0/taxcalc/reforms/cases.csv +10 -0
  137. taxcalc-4.2.0/taxcalc/reforms/clp.out.csv +10 -0
  138. taxcalc-4.2.0/taxcalc/reforms/ext.json +59 -0
  139. taxcalc-4.2.0/taxcalc/reforms/ptaxes0.json +37 -0
  140. taxcalc-4.2.0/taxcalc/reforms/ptaxes0.out.csv +10 -0
  141. taxcalc-4.2.0/taxcalc/reforms/ptaxes1.json +21 -0
  142. taxcalc-4.2.0/taxcalc/reforms/ptaxes1.out.csv +10 -0
  143. taxcalc-4.2.0/taxcalc/reforms/ptaxes2.json +18 -0
  144. taxcalc-4.2.0/taxcalc/reforms/ptaxes2.out.csv +10 -0
  145. taxcalc-4.2.0/taxcalc/reforms/ptaxes3.json +28 -0
  146. taxcalc-4.2.0/taxcalc/reforms/ptaxes3.out.csv +10 -0
  147. taxcalc-4.2.0/taxcalc/reforms/rounding2022.json +143 -0
  148. taxcalc-4.2.0/taxcalc/reforms/rounding2022.out.csv +10 -0
  149. taxcalc-4.2.0/taxcalc/tests/benefits_expect.csv +169 -0
  150. taxcalc-4.2.0/taxcalc/tests/cmpi_cps_expect.txt +132 -0
  151. taxcalc-4.2.0/taxcalc/tests/cmpi_puf_expect.txt +132 -0
  152. taxcalc-4.2.0/taxcalc/tests/conftest.py +143 -0
  153. taxcalc-4.2.0/taxcalc/tests/cpscsv_agg_expect.csv +26 -0
  154. taxcalc-4.2.0/taxcalc/tests/puf_var_correl_coeffs_2016.csv +80 -0
  155. taxcalc-4.2.0/taxcalc/tests/puf_var_wght_means_by_year.csv +80 -0
  156. taxcalc-4.2.0/taxcalc/tests/pufcsv_agg_expect.csv +26 -0
  157. taxcalc-4.2.0/taxcalc/tests/pufcsv_mtr_expect.txt +63 -0
  158. taxcalc-4.2.0/taxcalc/tests/reforms.json +649 -0
  159. taxcalc-4.2.0/taxcalc/tests/reforms_expect.csv +65 -0
  160. taxcalc-4.2.0/taxcalc/tests/test_4package.py +67 -0
  161. taxcalc-4.2.0/taxcalc/tests/test_benefits.py +86 -0
  162. taxcalc-4.2.0/taxcalc/tests/test_calcfunctions.py +863 -0
  163. taxcalc-4.2.0/taxcalc/tests/test_calculator.py +1021 -0
  164. taxcalc-4.2.0/taxcalc/tests/test_compare.py +336 -0
  165. taxcalc-4.2.0/taxcalc/tests/test_compatible_data.py +338 -0
  166. taxcalc-4.2.0/taxcalc/tests/test_consumption.py +144 -0
  167. taxcalc-4.2.0/taxcalc/tests/test_cpscsv.py +163 -0
  168. taxcalc-4.2.0/taxcalc/tests/test_data.py +133 -0
  169. taxcalc-4.2.0/taxcalc/tests/test_decorators.py +332 -0
  170. taxcalc-4.2.0/taxcalc/tests/test_growdiff.py +102 -0
  171. taxcalc-4.2.0/taxcalc/tests/test_growfactors.py +94 -0
  172. taxcalc-4.2.0/taxcalc/tests/test_parameters.py +617 -0
  173. taxcalc-4.2.0/taxcalc/tests/test_policy.py +1575 -0
  174. taxcalc-4.2.0/taxcalc/tests/test_puf_var_stats.py +194 -0
  175. taxcalc-4.2.0/taxcalc/tests/test_pufcsv.py +385 -0
  176. taxcalc-4.2.0/taxcalc/tests/test_records.py +234 -0
  177. taxcalc-4.2.0/taxcalc/tests/test_reforms.py +385 -0
  178. taxcalc-4.2.0/taxcalc/tests/test_responses.py +41 -0
  179. taxcalc-4.2.0/taxcalc/tests/test_taxcalcio.py +755 -0
  180. taxcalc-4.2.0/taxcalc/tests/test_tmdcsv.py +38 -0
  181. taxcalc-4.2.0/taxcalc/tests/test_utils.py +792 -0
  182. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/tmd_weights.csv.gz +0 -0
  183. taxcalc-4.2.0/taxcalc/validation/CSV_INPUT_VARS.md +29 -0
  184. taxcalc-4.2.0/taxcalc/validation/CSV_OUTPUT_VARS.md +63 -0
  185. taxcalc-4.2.0/taxcalc/validation/README.md +68 -0
  186. taxcalc-4.2.0/taxcalc/validation/taxsim35/Differences_Explained.md +54 -0
  187. taxcalc-4.2.0/taxcalc/validation/taxsim35/README.md +139 -0
  188. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/a17-taxdiffs-expect.csv +25 -0
  189. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/a18-taxdiffs-expect.csv +25 -0
  190. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/a19-taxdiffs-expect.csv +25 -0
  191. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/a20-taxdiffs-expect.csv +25 -0
  192. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/a21-taxdiffs-expect.csv +25 -0
  193. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/b17-taxdiffs-expect.csv +25 -0
  194. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/b18-taxdiffs-expect.csv +25 -0
  195. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/b19-taxdiffs-expect.csv +25 -0
  196. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/b20-taxdiffs-expect.csv +25 -0
  197. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/b21-taxdiffs-expect.csv +25 -0
  198. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/c17-taxdiffs-expect.csv +25 -0
  199. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/c18-taxdiffs-expect.csv +25 -0
  200. taxcalc-4.2.0/taxcalc/validation/taxsim35/expected_differences/c19-taxdiffs-expect.csv +25 -0
  201. taxcalc-4.2.0/taxcalc/validation/taxsim35/input_setup.py +67 -0
  202. taxcalc-4.2.0/taxcalc/validation/taxsim35/main_comparison.py +183 -0
  203. taxcalc-4.2.0/taxcalc/validation/taxsim35/prepare_taxcalc_input.py +161 -0
  204. taxcalc-4.2.0/taxcalc/validation/taxsim35/process_taxcalc_output.py +140 -0
  205. taxcalc-4.2.0/taxcalc/validation/taxsim35/taxsim_emulation.json +49 -0
  206. taxcalc-4.2.0/taxcalc/validation/taxsim35/taxsim_input.py +321 -0
  207. taxcalc-4.2.0/taxcalc/validation/taxsim35/tc_sims.py +98 -0
  208. taxcalc-4.2.0/taxcalc/validation/taxsim35/tests_35.py +80 -0
  209. taxcalc-4.2.0/taxcalc/validation/tests_35.sh +13 -0
  210. {taxcalc-4.1.0 → taxcalc-4.2.0/taxcalc.egg-info}/PKG-INFO +1 -1
  211. taxcalc-4.2.0/taxcalc.egg-info/SOURCES.txt +244 -0
  212. taxcalc-4.2.0/tctest-nojit.sh +3 -0
  213. taxcalc-4.1.0/taxcalc.egg-info/SOURCES.txt +0 -38
  214. {taxcalc-4.1.0 → taxcalc-4.2.0}/LICENSE +0 -0
  215. {taxcalc-4.1.0 → taxcalc-4.2.0}/MANIFEST.in +0 -0
  216. {taxcalc-4.1.0 → taxcalc-4.2.0}/README.md +0 -0
  217. {taxcalc-4.1.0 → taxcalc-4.2.0}/setup.cfg +0 -0
  218. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/calcfunctions.py +0 -0
  219. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/calculator.py +0 -0
  220. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/cli/__init__.py +0 -0
  221. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/cli/tc.py +0 -0
  222. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/conftest.py +0 -0
  223. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/consumption.json +0 -0
  224. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/consumption.py +0 -0
  225. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/cps.csv.gz +0 -0
  226. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/cps_weights.csv.gz +0 -0
  227. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/data.py +0 -0
  228. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/decorators.py +0 -0
  229. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/growdiff.json +0 -0
  230. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/growdiff.py +0 -0
  231. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/growfactors.csv +0 -0
  232. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/growfactors.py +0 -0
  233. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/parameters.py +0 -0
  234. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/policy.py +0 -0
  235. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/policy_current_law.json +0 -0
  236. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/puf_ratios.csv +0 -0
  237. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/puf_weights.csv.gz +0 -0
  238. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/records.py +0 -0
  239. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/records_variables.json +0 -0
  240. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/taxcalcio.py +0 -0
  241. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/tmd_growfactors.csv +0 -0
  242. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/utils.py +0 -0
  243. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc/utilsprvt.py +0 -0
  244. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc.egg-info/dependency_links.txt +0 -0
  245. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc.egg-info/entry_points.txt +0 -0
  246. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc.egg-info/requires.txt +0 -0
  247. {taxcalc-4.1.0 → taxcalc-4.2.0}/taxcalc.egg-info/top_level.txt +0 -0
@@ -0,0 +1,7 @@
1
+ [run]
2
+ omit =
3
+ taxcalc/calcfunctions.py
4
+ taxcalc/cli/*
5
+ taxcalc/tests/*
6
+ taxcalc/validation/*
7
+ docs/cookbook/*
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ open_collective: psl
@@ -0,0 +1,47 @@
1
+ name: Build Package and Test Source Code [Python 3.9, 3.10, 3.11, 3.12]
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ${{ matrix.os }}
8
+ strategy:
9
+ matrix:
10
+ os: [ubuntu-latest, windows-latest]
11
+ python-version: [3.9, '3.10', '3.11', '3.12']
12
+
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@master
16
+ with:
17
+ persist-credentials: false
18
+
19
+ - name: Setup Miniconda using Python ${{ matrix.python-version }}
20
+ uses: conda-incubator/setup-miniconda@v2
21
+ with:
22
+ activate-environment: taxcalc-dev
23
+ environment-file: environment.yml
24
+ python-version: ${{ matrix.python-version }}
25
+ auto-activate-base: false
26
+
27
+ - name: Build
28
+ shell: bash -l {0}
29
+ run: |
30
+ pip install -e . --user
31
+ pip install pytest-cov --user
32
+ pip install pytest-pycodestyle --user
33
+ - name: Test
34
+ shell: bash -l {0}
35
+ working-directory: ./
36
+ run: |
37
+ pytest -m 'not requires_pufcsv and not requires_tmdcsv and not pre_release and not local' --cov=./ --cov-report=xml
38
+ - name: Upload coverage to Codecov
39
+ if: matrix.os == 'ubuntu-latest'
40
+ uses: codecov/codecov-action@v4
41
+ with:
42
+ token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
43
+ file: ./coverage.xml
44
+ flags: unittests
45
+ name: codecov-umbrella
46
+ fail_ci_if_error: true
47
+ verbose: true
@@ -0,0 +1,29 @@
1
+ name: Test that Jupyter Book builds
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ build-and-deploy:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - name: Checkout
9
+ uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
10
+ with:
11
+ persist-credentials: false
12
+
13
+ - name: Setup Miniconda
14
+ uses: conda-incubator/setup-miniconda@v2
15
+ with:
16
+ activate-environment: taxcalc-dev
17
+ environment-file: environment.yml
18
+ python-version: 3.11
19
+ auto-activate-base: false
20
+
21
+ - name: Build # Build Jupyter Book
22
+ shell: bash -l {0}
23
+ run: |
24
+ pip install jupyter-book
25
+ conda install -c pslmodels behresp
26
+ pip install -e .
27
+ python docs/guide/make/make_uguide.py
28
+ cd docs
29
+ jb build .
@@ -0,0 +1,38 @@
1
+ name: Build and Deploy Jupyter Book
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ jobs:
7
+ build-and-deploy:
8
+ if: github.repository == 'PSLmodels/Tax-Calculator'
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout
12
+ uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
13
+ with:
14
+ persist-credentials: false
15
+
16
+ - name: Setup Miniconda
17
+ uses: conda-incubator/setup-miniconda@v2
18
+ with:
19
+ activate-environment: taxcalc-dev
20
+ environment-file: environment.yml
21
+ python-version: 3.11
22
+ auto-activate-base: false
23
+
24
+ - name: Build # Build Jupyter Book
25
+ shell: bash -l {0}
26
+ run: |
27
+ pip install jupyter-book
28
+ conda install -c pslmodels behresp
29
+ pip install -e .
30
+ cd docs
31
+ jb build .
32
+
33
+ - name: Deploy
34
+ uses: JamesIves/github-pages-deploy-action@releases/v3
35
+ with:
36
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
+ BRANCH: gh-pages # The branch the action should deploy to.
38
+ FOLDER: docs/_build/html # The folder the action should deploy.
@@ -0,0 +1,39 @@
1
+ name: Build and Deploy Jupyter Book with Parameter Documentation
2
+ on:
3
+ release:
4
+ types: [published]
5
+
6
+ jobs:
7
+ build-and-deploy:
8
+ if: github.repository == 'PSLmodels/Tax-Calculator'
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout
12
+ uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
13
+ with:
14
+ persist-credentials: false
15
+
16
+ - name: Setup Miniconda
17
+ uses: conda-incubator/setup-miniconda@v2
18
+ with:
19
+ activate-environment: taxcalc-dev
20
+ environment-file: environment.yml
21
+ python-version: 3.11
22
+ auto-activate-base: false
23
+
24
+ - name: Build # Build Jupyter Book
25
+ shell: bash -l {0}
26
+ run: |
27
+ pip install jupyter-book
28
+ conda install -c pslmodels behresp
29
+ pip install -e .
30
+ python docs/guide/make/make_uguide.py
31
+ cd docs
32
+ jb build .
33
+
34
+ - name: Deploy
35
+ uses: JamesIves/github-pages-deploy-action@releases/v3
36
+ with:
37
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38
+ BRANCH: gh-pages # The branch the action should deploy to.
39
+ FOLDER: docs/_build/html # The folder the action should deploy.
@@ -0,0 +1,27 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+
5
+ # Unit test / coverage reports
6
+ .pytest_cache/
7
+ htmlcov/
8
+ .coverage
9
+
10
+ # Sphinx documentation
11
+ read-the-docs/_build/
12
+
13
+ # Mac OS X
14
+ *.DS_Store
15
+
16
+ # IRS-SOI PUF data file
17
+ puf.csv
18
+ tmd.csv
19
+
20
+ # Jupyter notebook checkpoints
21
+ *.ipynb_checkpoints*
22
+
23
+ # Built documentation
24
+ docs/_build/
25
+
26
+ # Validation files
27
+ taxcalc/validation/taxsim35/actual_differences/
taxcalc-4.2.0/Makefile ADDED
@@ -0,0 +1,128 @@
1
+ # GNU Makefile that documents and automates common development operations
2
+ # using the GNU make tool (version >= 3.81)
3
+ # Development is typically conducted on Linux or Max OS X (with the Xcode
4
+ # command-line tools installed), so this Makefile is designed
5
+ # to work in that environment (and not on Windows).
6
+ # USAGE: Tax-Calculator$ make [TARGET]
7
+
8
+ .PHONY=help
9
+ help:
10
+ @echo "USAGE: make [TARGET]"
11
+ @echo "TARGETS:"
12
+ @echo "help : show help message"
13
+ @echo "clean : remove .pyc files and local taxcalc package"
14
+ @echo "package : build and install local package"
15
+ @echo "pytest-cps : generate report for and cleanup after"
16
+ @echo " pytest -m 'not requires_pufcsv and not requires_tmdcsv and not pre_release'"
17
+ @echo "pytest : generate report for and cleanup after"
18
+ @echo " pytest -m 'not pre_release'"
19
+ @echo "pytest-all : generate report for and cleanup after"
20
+ @echo " pytest -m ''"
21
+ @echo "tctest : generate report for and cleanup after"
22
+ @echo " tc --test"
23
+ @echo "tctest-jit : generate report for and cleanup after"
24
+ @echo " tc --test when environment var NOTAXCALCJIT is set"
25
+ @echo "cstest : generate coding-style errors using the"
26
+ @echo " pycodestyle (nee pep8) and pylint tools"
27
+ @echo "coverage : generate test coverage report"
28
+ @echo "git-sync : synchronize local, origin, and upstream Git repos"
29
+ @echo "git-pr N=n : create local pr-n branch containing upstream PR"
30
+
31
+ .PHONY=clean
32
+ clean:
33
+ @find . -name *pyc -exec rm {} \;
34
+ @find . -name *cache -maxdepth 1 -exec rm -r {} \;
35
+ @pip uninstall taxcalc --yes --quiet 2>&1 > /dev/null
36
+
37
+ .PHONY=package
38
+ package:
39
+ @pip install -e .
40
+
41
+ define pytest-setup
42
+ rm -f taxcalc/tests/reforms_actual_init
43
+ endef
44
+
45
+ define pytest-cleanup
46
+ find . -name *cache -maxdepth 1 -exec rm -r {} \;
47
+ rm -f df-??-#-*
48
+ rm -f tmp??????-??-#-tmp*
49
+ endef
50
+
51
+ .PHONY=pytest-cps
52
+ pytest-cps:
53
+ @$(pytest-setup)
54
+ @cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m "not requires_pufcsv and not requires_tmdcsv and not pre_release"
55
+ @$(pytest-cleanup)
56
+
57
+ .PHONY=pytest
58
+ pytest:
59
+ @$(pytest-setup)
60
+ @cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m "not pre_release"
61
+ @$(pytest-cleanup)
62
+
63
+ .PHONY=pytest-all
64
+ pytest-all:
65
+ @$(pytest-setup)
66
+ @cd taxcalc ; pytest -n4 --disable-warnings --durations=0 --durations-min=2 -m ""
67
+ @$(pytest-cleanup)
68
+
69
+ define tctest-cleanup
70
+ rm -f test.csv
71
+ rm -f test-18-*
72
+ pip uninstall taxcalc --yes --quiet 2>&1 > /dev/null
73
+ endef
74
+
75
+ .PHONY=tctest
76
+ tctest: package
77
+ tc --test
78
+ @$(tctest-cleanup)
79
+
80
+ .PHONY=tctest-jit
81
+ tctest-jit:
82
+ @./tctest-nojit.sh
83
+
84
+ TOPLEVEL_JSON_FILES := $(shell ls -l ./*json | awk '{print $$9}')
85
+ TAXCALC_JSON_FILES := $(shell ls -l ./taxcalc/*json | awk '{print $$9}')
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
92
+
93
+ .PHONY=cstest
94
+ cstest:
95
+ -pycodestyle .
96
+ @-pycodestyle --ignore=E501,E121 $(TOPLEVEL_JSON_FILES)
97
+ @-pycodestyle --ignore=E501,E121 $(TAXCALC_JSON_FILES)
98
+ @-pycodestyle --ignore=E501,E121 $(TESTS_JSON_FILES)
99
+ @-pylint $(PYLINT_OPTIONS) $(PYLINT_FILES)
100
+ @-pylint $(RECIPE_OPTIONS) $(RECIPE_FILES)
101
+
102
+ define coverage-cleanup
103
+ rm -f .coverage htmlcov/*
104
+ endef
105
+
106
+ COVMARK = "not requires_pufcsv and not requires_tmdcsv and not pre_release"
107
+
108
+ OS := $(shell uname -s)
109
+
110
+ .PHONY=coverage
111
+ coverage:
112
+ @$(coverage-cleanup)
113
+ @coverage run -m pytest -v -m $(COVMARK) > /dev/null
114
+ @coverage html --ignore-errors
115
+ ifeq ($(OS), Darwin) # on Mac OS X
116
+ @open htmlcov/index.html
117
+ else
118
+ @echo "Open htmlcov/index.html in browser to view report"
119
+ endif
120
+ @$(pytest-cleanup)
121
+
122
+ .PHONY=git-sync
123
+ git-sync:
124
+ @./gitsync
125
+
126
+ .PHONY=git-pr
127
+ git-pr:
128
+ @./gitpr $(N)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taxcalc
3
- Version: 4.1.0
3
+ Version: 4.2.0
4
4
  Summary: taxcalc
5
5
  Home-page: https://github.com/PSLmodels/Tax-Calculator
6
6
  Download-URL: https://github.com/PSLmodels/Tax-Calculator
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "Tax-Calculator",
3
+ "img": "",
4
+ "banner_title": "Tax-Calculator",
5
+ "banner_subtitle": "USA Federal Individual Income and Payroll Tax Microsimulation Model",
6
+ "detailed_description": "Tax-Calculator is an open-source microsimulation model for static analysis of USA federal income and payroll taxes.",
7
+ "policy_area": "Tax Microsimulation, Revenue Estimation, Distributional Analysis",
8
+ "geography": "United States",
9
+ "language": "Python",
10
+ "maintainers": [
11
+ {
12
+ "name": "Jason DeBacker",
13
+ "image": "https://github.com/jdebacker.png",
14
+ "link": "https://github.com/jdebacker"
15
+ },
16
+ {
17
+ "name": "Matthew Jensen",
18
+ "image": "https://avatars.githubusercontent.com/u/8301092?v=4",
19
+ "link": "https://github.com/MattHJensen/"
20
+ }
21
+ ],
22
+ "links": {
23
+ "code_repository": "https://github.com/PSLmodels/Tax-Calculator",
24
+ "user_documentation": "https://taxcalc.pslmodels.org/",
25
+ "contributor_documentation": "https://taxcalc.pslmodels.org/contributing/contributor_guide.html",
26
+ "webapp": "",
27
+ "recent_changes": "https://taxcalc.pslmodels.org/about/releases.html"
28
+ }
29
+ }
@@ -0,0 +1,25 @@
1
+ codecov:
2
+ require_ci_to_pass: yes
3
+
4
+ coverage:
5
+ precision: 2
6
+ round: down
7
+ range: "70...100"
8
+
9
+ parsers:
10
+ gcov:
11
+ branch_detection:
12
+ conditional: yes
13
+ loop: yes
14
+ method: no
15
+ macro: no
16
+
17
+ comment:
18
+ layout: "reach, diff, flags, files"
19
+ behavior: default
20
+ require_changes: false
21
+
22
+ ignore:
23
+ - "setup.py"
24
+ - "ppp.py"
25
+ - "extend_tcja.py"
@@ -0,0 +1,5 @@
1
+ @echo off
2
+
3
+ SET BLD_DIR=%CD%
4
+ cd /D "%RECIPE_DIR%\.."
5
+ "%PYTHON%" setup.py install
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ BLD_DIR=`pwd`
4
+
5
+ # Recipe and source are stored together
6
+ SRC_DIR=$RECIPE_DIR/..
7
+ pushd $SRC_DIR
8
+
9
+ $PYTHON setup.py install
10
+ popd
@@ -0,0 +1,39 @@
1
+ package:
2
+ name: taxcalc
3
+ version: 0.0.0
4
+
5
+ build:
6
+ entry_points:
7
+ - tc = taxcalc.cli.tc:cli_tc_main
8
+
9
+ requirements:
10
+ build:
11
+ - "python>=3.9, <3.13"
12
+ - "numpy>=1.20"
13
+ - "pandas>=2.2"
14
+ - "bokeh>=2.4"
15
+ - "paramtools>=0.18.2"
16
+ - numba
17
+ - curl
18
+ - openpyxl
19
+ - behresp
20
+
21
+ run:
22
+ - "python>=3.9, <3.13"
23
+ - "numpy>=1.20"
24
+ - "pandas>=2.2"
25
+ - "bokeh>=2.4"
26
+ - "paramtools>=0.18.2"
27
+ - numba
28
+ - curl
29
+ - openpyxl
30
+ - behresp
31
+
32
+ test:
33
+ commands:
34
+ - which tc # [unix]
35
+ - where tc # [win]
36
+ - tc --help
37
+
38
+ about:
39
+ home: https://github.com/PSLmodels/Tax-Calculator
@@ -0,0 +1,26 @@
1
+ #!/bin/bash
2
+ if [[ "$#" -ne 2 ]]; then
3
+ echo "csv_show.sh prints all non-zero CSV file column values for RECID"
4
+ echo "ERROR: must specify exactly two command-line arguments"
5
+ echo "USAGE: ./csv_show.sh FILENAME RECID"
6
+ exit 1
7
+ fi
8
+ awk -F, '
9
+ BEGIN {
10
+ recid_varnum = 0
11
+ }
12
+ NR == 1 {
13
+ for ( i = 1; i <= NF; i++ ) {
14
+ varname[i] = $i
15
+ if ( $i == "RECID" ) recid_varnum = i
16
+ }
17
+ }
18
+ $recid_varnum == id {
19
+ for ( i = 1; i <= NF; i++ ) {
20
+ if ( $i != 0 ) {
21
+ print i, varname[i], $i
22
+ }
23
+ }
24
+ exit
25
+ }
26
+ ' id=$2 $1
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ if [[ "$#" -ne 1 ]]; then
3
+ echo "csv_vars.sh prints all CSV file column numbers and names"
4
+ echo "ERROR: number of command-line arguments not equal to one"
5
+ echo "USAGE: ./csv_vars.sh FILENAME"
6
+ exit 1
7
+ fi
8
+ awk -F, '
9
+ NR == 1 { for( i = 1; i <= NF; i++ ) print i, $i }
10
+ ' $1
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
2
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="1389px" height="581px" viewBox="0 0 13890 5810" preserveAspectRatio="xMidYMid meet">
3
+ <g id="layer101" fill="#09517e" stroke="none">
4
+ <path d="M9025 5222 c-16 -1 -54 -7 -83 -13 l-54 -11 7 -36 c3 -21 11 -54 16 -74 l9 -37 68 6 c82 7 91 -1 131 -109 l27 -73 -150 -367 c-83 -202 -152 -366 -153 -364 -1 1 -3 25 -4 54 l-2 51 -76 -5 c-65 -5 -81 -2 -108 15 -18 11 -40 35 -49 53 -37 71 -44 127 -44 361 l0 227 -90 0 -90 0 0 -405 0 -405 90 0 90 0 0 40 0 41 35 -35 c52 -52 128 -72 214 -57 36 6 99 13 139 14 l74 2 72 190 c41 105 91 236 112 292 l39 102 74 -197 c41 -108 90 -240 110 -292 l36 -95 98 -3 c53 -1 97 -1 97 2 0 2 -14 37 -31 77 -16 41 -63 155 -104 254 -41 99 -104 252 -140 340 -36 88 -79 192 -95 232 -40 98 -85 168 -123 192 -38 23 -99 38 -142 33z"/>
5
+ <path d="M6387 4910 c-48 -13 -92 -35 -139 -72 l-38 -30 0 46 0 46 -90 0 -90 0 0 -585 0 -585 95 0 95 0 0 226 0 226 40 -35 c53 -45 136 -72 225 -71 228 0 379 150 392 389 15 257 -138 441 -372 451 -44 2 -97 -1 -118 -6z m171 -172 c52 -25 96 -82 117 -151 48 -163 -29 -326 -169 -358 -86 -19 -154 0 -216 59 -38 37 -52 60 -65 106 -40 137 11 293 112 341 79 38 144 39 221 3z"/>
6
+ <path d="M7678 4906 c-209 -56 -266 -319 -93 -430 63 -42 129 -57 277 -65 75 -3 140 -10 143 -13 11 -11 -5 -82 -26 -117 -26 -42 -89 -71 -160 -71 -56 0 -161 29 -211 58 -15 9 -30 14 -32 11 -3 -3 -17 -30 -30 -61 -29 -66 -29 -66 65 -102 101 -38 212 -52 300 -37 95 16 145 39 197 92 79 81 85 112 90 442 l4 287 -96 0 -96 0 0 -35 0 -35 -47 31 c-90 56 -186 72 -285 45z m227 -140 c28 -13 63 -38 78 -55 24 -29 27 -40 27 -112 l0 -80 -92 6 c-120 8 -142 11 -184 31 -90 43 -84 172 9 215 56 25 102 24 162 -5z"/>
7
+ <path d="M4930 4315 l0 -585 95 0 95 0 0 505 0 505 200 0 200 0 0 80 0 80 -295 0 -295 0 0 -585z"/>
8
+ <path d="M5630 4495 l0 -405 95 0 95 0 0 405 0 405 -95 0 -95 0 0 -405z"/>
9
+ <path d="M7020 4495 l0 -405 95 0 95 0 0 37 0 37 28 -26 c46 -44 92 -62 157 -62 91 -1 95 2 95 78 0 96 0 95 -83 89 -64 -4 -76 -2 -107 18 -20 14 -46 46 -60 74 -24 49 -25 56 -28 308 l-4 257 -94 0 -94 0 0 -405z"/>
10
+ <path d="M3985 4877 c-3 -7 -4 -154 -3 -327 l3 -315 328 -3 327 -2 0 330 0 330 -325 0 c-253 0 -327 -3 -330 -13z"/>
11
+ <path d="M1490 3840 l0 -330 1573 2 1572 3 3 328 2 327 -1575 0 -1575 0 0 -330z"/>
12
+ <path d="M5641 3911 c-24 -22 -31 -38 -31 -66 0 -73 43 -115 116 -115 70 0 113 41 114 108 0 35 -6 49 -29 73 -25 25 -37 29 -84 29 -47 0 -60 -4 -86 -29z"/>
13
+ <path d="M2743 3453 c-10 -4 -13 -79 -13 -329 l0 -324 23 -5 c12 -3 441 -4 952 -3 l930 3 0 330 0 330 -940 2 c-517 1 -946 -1 -952 -4z"/>
14
+ <path d="M5122 3395 c-69 -16 -206 -85 -257 -129 l-40 -34 68 -101 c37 -55 73 -101 80 -101 7 0 35 17 64 38 143 108 292 129 357 51 31 -37 33 -77 5 -113 -26 -34 -56 -49 -182 -92 -139 -49 -210 -88 -263 -147 -135 -151 -76 -416 114 -508 115 -56 281 -66 417 -24 73 22 193 87 209 113 7 12 -101 192 -120 199 -7 2 -34 -11 -59 -31 -72 -55 -147 -79 -225 -73 -57 4 -68 9 -93 37 -23 26 -28 39 -23 64 9 47 54 78 183 126 157 57 206 83 264 137 68 63 92 130 87 243 -2 66 -9 96 -28 135 -52 105 -172 191 -299 215 -72 13 -193 11 -259 -5z"/>
15
+ <path d="M7927 3396 c-75 -21 -127 -63 -162 -131 l-30 -59 -3 -328 -3 -328 145 0 146 0 0 248 c0 136 5 265 10 287 17 75 89 106 161 69 57 -29 63 -61 67 -346 l3 -258 145 0 144 0 0 420 0 420 -140 0 -140 0 0 -37 0 -36 -22 20 c-69 63 -214 90 -321 59z"/>
16
+ <path d="M9310 3396 c-85 -22 -156 -80 -184 -148 -20 -47 -21 -164 -2 -209 20 -48 71 -93 139 -124 48 -22 81 -28 212 -38 l155 -11 0 -26 c0 -63 -58 -100 -157 -100 -73 0 -135 15 -201 49 -23 12 -45 21 -50 21 -5 0 -24 -37 -41 -82 -18 -46 -35 -88 -38 -95 -9 -23 125 -69 261 -89 213 -32 382 19 466 140 53 78 60 130 60 433 l0 274 -142 -3 -143 -3 -3 -27 -3 -26 -48 30 c-79 48 -183 61 -281 34z m288 -205 c28 -20 31 -26 34 -91 4 -81 11 -77 -115 -61 -49 7 -76 16 -93 32 -41 39 -25 116 30 140 34 14 110 4 144 -20z"/>
17
+ <path d="M10289 3400 c-87 -22 -149 -85 -168 -170 -6 -25 -11 -138 -11 -252 l0 -208 -60 0 -60 0 0 -110 0 -110 60 0 60 0 0 -110 0 -110 151 0 150 0 -3 110 -3 110 93 0 92 0 0 110 0 110 -92 0 -93 0 3 182 c4 222 4 223 99 215 l62 -6 5 42 c3 23 7 72 10 109 l5 66 -32 11 c-43 15 -223 23 -268 11z"/>
18
+ <path d="M11427 3400 c-72 -12 -170 -63 -228 -117 -166 -155 -169 -454 -7 -616 148 -148 431 -175 626 -61 184 108 252 365 150 571 -86 175 -300 263 -541 223z m192 -245 c133 -68 132 -309 -2 -374 -55 -27 -92 -27 -147 2 -127 64 -134 282 -11 364 40 27 116 31 160 8z"/>
19
+ <path d="M5820 2970 l0 -420 145 0 145 0 0 420 0 420 -145 0 -145 0 0 -420z"/>
20
+ <path d="M6270 2970 l0 -420 145 0 145 0 0 41 0 41 39 -31 c63 -50 107 -65 192 -64 106 1 171 31 222 103 l16 23 26 -32 c89 -105 292 -129 413 -47 58 38 99 114 112 206 5 36 10 185 10 333 l0 267 -150 0 -150 0 0 -266 c0 -292 -6 -325 -59 -346 -32 -12 -79 -3 -104 19 -42 39 -47 72 -47 339 l0 254 -150 0 -150 0 0 -260 c0 -280 -5 -311 -51 -344 -61 -42 -137 7 -158 102 -6 31 -11 148 -11 277 l0 225 -145 0 -145 0 0 -420z"/>
21
+ <path d="M8710 2805 l0 -585 150 0 150 0 0 585 0 585 -150 0 -150 0 0 -585z"/>
22
+ <path d="M10670 2970 l0 -420 150 0 150 0 0 420 0 420 -150 0 -150 0 0 -420z"/>
23
+ <path d="M12120 2970 l0 -420 145 0 145 0 0 46 0 46 45 -40 c55 -48 117 -67 211 -65 90 1 160 30 213 88 69 74 74 107 79 458 l4 307 -151 0 -150 0 -3 -274 c-3 -261 -4 -276 -24 -303 -28 -38 -81 -51 -131 -32 -30 11 -43 25 -63 64 -24 49 -25 57 -28 298 l-4 247 -144 0 -144 0 0 -420z"/>
24
+ <path d="M910 2410 l0 -330 1865 0 1865 0 -2 328 -3 327 -1862 3 -1863 2 0 -330z"/>
25
+ <path d="M5881 2452 c-100 -50 -106 -186 -12 -249 26 -17 48 -23 93 -23 65 0 100 14 138 55 21 23 25 36 25 90 0 54 -4 67 -25 90 -14 15 -37 33 -52 41 -38 20 -126 18 -167 -4z"/>
26
+ <path d="M10729 2450 c-51 -27 -73 -65 -73 -126 0 -94 56 -144 163 -144 106 0 161 50 161 145 0 25 -7 59 -15 75 -33 65 -159 91 -236 50z"/>
27
+ <path d="M8624 2190 c-23 -5 -60 -14 -83 -20 -47 -12 -46 -1 -6 -140 l21 -75 76 4 77 3 20 -33 c41 -66 41 -64 -114 -445 -80 -198 -152 -374 -160 -392 -8 -18 -15 -37 -15 -43 0 -6 56 -8 152 -7 l153 3 32 90 c17 50 55 159 85 242 46 134 68 179 68 142 0 -6 37 -116 82 -245 l82 -234 154 0 c119 0 153 3 149 13 -228 559 -383 932 -402 972 -60 122 -140 176 -259 174 -39 -1 -90 -5 -112 -9z"/>
28
+ <path d="M2110 1690 l0 -330 1265 0 1265 0 0 330 0 330 -1265 0 -1265 0 0 -330z"/>
29
+ <path d="M6097 1885 c-134 -37 -237 -119 -290 -232 -30 -65 -32 -74 -32 -189 0 -119 0 -121 38 -196 79 -161 219 -238 434 -238 80 0 116 5 171 24 188 63 292 209 292 410 0 214 -119 366 -327 420 -73 19 -219 20 -286 1z m230 -245 c41 -25 63 -59 80 -123 39 -153 -74 -293 -209 -256 -88 23 -135 107 -125 226 9 113 67 173 166 173 38 0 66 -6 88 -20z"/>
30
+ <path d="M7998 1885 c-199 -55 -318 -212 -318 -420 1 -125 32 -211 107 -296 87 -96 196 -139 355 -139 107 0 179 16 261 56 26 14 47 30 47 37 -1 19 -55 195 -63 203 -4 4 -34 -8 -68 -26 -156 -83 -306 -32 -340 116 -21 93 27 197 107 230 73 31 185 10 266 -48 22 -15 32 -18 38 -9 16 26 62 201 57 215 -8 20 -120 71 -185 85 -69 14 -205 13 -264 -4z"/>
31
+ <path d="M4910 1295 l0 -585 253 0 c272 0 335 8 425 54 59 30 126 101 154 164 18 39 22 67 22 157 0 102 -2 114 -29 168 -36 73 -108 139 -183 168 -47 19 -81 24 -202 27 l-145 4 3 214 3 214 -151 0 -150 0 0 -585z m479 -83 c55 -27 76 -64 75 -130 0 -104 -48 -142 -183 -142 l-81 0 0 145 0 145 78 0 c54 0 87 -5 111 -18z"/>
32
+ <path d="M6822 1298 l3 -583 148 -3 147 -3 0 586 0 585 -150 0 -150 0 2 -582z"/>
33
+ <path d="M7280 1460 l0 -420 145 0 145 0 0 420 0 420 -145 0 -145 0 0 -420z"/>
34
+ <path d="M3992 1302 c-9 -7 -12 -80 -10 -333 l3 -324 325 0 325 0 0 330 0 330 -315 2 c-173 2 -321 -1 -328 -5z"/>
35
+ <path d="M7345 946 c-16 -7 -41 -26 -55 -41 -21 -22 -25 -36 -25 -90 0 -54 4 -67 25 -90 38 -41 73 -55 135 -55 98 0 153 45 162 131 4 46 1 59 -19 89 -13 19 -39 43 -58 52 -41 21 -122 23 -165 4z"/>
36
+ </g>
37
+ <g id="layer102" fill="#1691ce" stroke="none">
38
+ <path d="M9030 5223 c-14 -2 -51 -8 -83 -15 l-59 -11 7 -36 c3 -20 11 -53 16 -74 l10 -38 47 7 c94 15 109 4 150 -107 l28 -75 -150 -368 c-93 -227 -152 -360 -154 -345 -1 13 -5 38 -8 56 l-5 31 -72 -4 c-84 -6 -124 12 -153 68 -37 71 -44 127 -44 361 l0 227 -90 0 -90 0 0 -405 0 -405 90 0 90 0 0 40 0 41 37 -36 c53 -52 126 -71 212 -56 36 6 99 13 139 14 l74 2 59 155 c182 477 162 432 176 397 7 -18 48 -129 93 -247 45 -118 89 -235 99 -260 l17 -45 97 -3 c53 -1 97 -1 97 2 0 2 -9 26 -21 53 -12 26 -49 118 -84 203 -65 159 -139 338 -239 583 -67 164 -105 229 -149 256 -37 23 -100 38 -137 34z"/>
39
+ <path d="M6393 4910 c-53 -11 -110 -41 -150 -79 l-33 -30 0 50 0 49 -90 0 -90 0 0 -585 0 -585 95 0 95 0 0 226 0 226 31 -27 c142 -119 382 -105 512 29 86 88 123 203 114 347 -14 219 -160 373 -364 384 -43 2 -97 0 -120 -5z m164 -172 c149 -69 180 -324 54 -449 -89 -89 -219 -92 -315 -8 -63 56 -89 128 -84 229 11 200 175 308 345 228z"/>
40
+ <path d="M7693 4910 c-76 -16 -141 -62 -180 -128 -22 -37 -26 -57 -26 -117 0 -77 9 -101 62 -158 59 -65 169 -95 350 -98 l113 -1 -6 -46 c-13 -99 -76 -152 -182 -152 -67 0 -151 21 -203 51 -39 23 -44 20 -76 -49 -27 -59 -28 -58 65 -95 138 -54 310 -57 416 -6 60 29 121 95 146 159 20 52 21 73 22 340 l1 285 -90 0 -90 0 -1 -28 c-1 -15 -3 -29 -5 -32 -3 -2 -24 9 -48 26 -79 53 -167 69 -268 49z m189 -132 c22 -6 59 -29 84 -51 l44 -39 0 -84 0 -85 -92 6 c-120 8 -142 11 -184 31 -90 43 -84 172 9 215 49 22 84 24 139 7z"/>
41
+ <path d="M4930 4315 l0 -585 95 0 95 0 0 505 0 505 193 1 c105 1 195 1 200 0 4 0 7 35 7 79 l0 80 -295 0 -295 0 0 -585z"/>
42
+ <path d="M5632 4498 l3 -403 93 -3 92 -3 0 406 0 405 -95 0 -95 0 2 -402z"/>
43
+ <path d="M7020 4495 l0 -405 95 0 95 0 0 41 0 42 21 -27 c33 -42 96 -69 164 -70 91 -1 95 2 95 78 0 96 0 95 -83 89 -64 -4 -76 -2 -107 18 -20 14 -46 46 -60 74 -24 49 -25 56 -28 308 l-3 257 -95 0 -94 0 0 -405z"/>
44
+ <path d="M3985 4877 c-3 -7 -4 -154 -3 -327 l3 -315 323 -3 322 -2 0 330 0 330 -320 0 c-249 0 -322 -3 -325 -13z"/>
45
+ <path d="M1490 3840 l0 -330 1570 0 1570 0 0 330 0 330 -1570 0 -1570 0 0 -330z"/>
46
+ <path d="M5661 3926 c-45 -25 -63 -88 -40 -139 15 -32 60 -57 104 -57 71 0 114 41 115 108 0 35 -6 49 -29 73 -25 24 -37 29 -78 29 -26 -1 -59 -7 -72 -14z"/>
47
+ </g>
48
+
49
+ </svg>
@@ -0,0 +1,27 @@
1
+ # Book settings
2
+ title: Tax-Calculator
3
+ author: Policy Simulation Library
4
+ logo: PSL.svg
5
+ exclude_patterns: [guide/make, guide/templates, recipes/md_src, '**/README.md']
6
+ repository:
7
+ url: https://github.com/PSLmodels/Tax-Calculator
8
+ path_to_book: docs
9
+ branch: master
10
+ html:
11
+ use_edit_page_button: true
12
+ use_repository_button: true
13
+ use_issues_button: true
14
+ launch_buttons:
15
+ colab_url: "https://colab.research.google.com"
16
+ binderhub_url: "https://mybinder.org"
17
+ notebook_interface: "classic" # or "jupyterlab"
18
+ execute:
19
+ timeout: -1
20
+
21
+ #######################################################################################
22
+ # Advanced and power-user settings
23
+ sphinx:
24
+ extra_extensions : ['sphinx.ext.autodoc', 'sphinx.ext.mathjax',
25
+ 'sphinx.ext.viewcode', 'sphinx.ext.napoleon',
26
+ 'alabaster'] # A list of extra extensions to load by Sphinx.
27
+ config : # key-value pairs to directly over-ride the Sphinx configuration
Binary file
Binary file
Binary file
@@ -0,0 +1,60 @@
1
+ format: jb-book
2
+ root: index
3
+ parts:
4
+ - caption: Usage
5
+ chapters:
6
+ - file: usage/starting
7
+ - file: usage/overview
8
+ - file: usage/data
9
+ - file: guide/index
10
+ sections:
11
+ - file: guide/python_interface
12
+ - file: guide/cli
13
+ - file: guide/policy_params
14
+ - file: guide/input_vars
15
+ - file: guide/output_vars
16
+ - file: guide/assumption_params
17
+ - file: recipes/index
18
+ sections:
19
+ - file: recipes/recipe00
20
+ - file: recipes/recipe01
21
+ - file: recipes/recipe02
22
+ - file: recipes/recipe03
23
+ - file: recipes/recipe04
24
+ - file: recipes/recipe04_pandas
25
+ - file: recipes/recipe05
26
+ - file: recipes/recipe06
27
+ - file: usage/tcja_after_2025
28
+ - caption: About
29
+ chapters:
30
+ - file: about/history
31
+ - file: about/releases
32
+ - file: about/roadmap
33
+ - file: about/LICENSE
34
+ - caption: Contributing
35
+ chapters:
36
+ - file: contributing/contributor_guide
37
+ - file: contributing/pr_workflow
38
+ - file: contributing/param_naming
39
+ - file: contributing/testing
40
+ - file: contributing/RELEASING
41
+ - caption: API
42
+ chapters:
43
+ - file: api/public_api
44
+ sections:
45
+ - file: api/calcfunctions
46
+ - file: api/calculator
47
+ - file: api/consumption
48
+ - file: api/data
49
+ - file: api/decorators
50
+ - file: api/growdiff
51
+ - file: api/growfactors
52
+ - file: api/parameters
53
+ - file: api/policy
54
+ - file: api/records
55
+ - file: api/taxcalcio
56
+ - file: api/utils
57
+ - file: api/utilsprvt
58
+ - caption: Tax-Calculator use cases
59
+ chapters:
60
+ - file: use_cases
@@ -0,0 +1,22 @@
1
+ License
2
+ =======
3
+
4
+ The Tax-Calculator project is in the public domain within the United States.
5
+
6
+ Additionally, we waive copyright and related rights in the work worldwide through the CC0 1.0 Universal public domain dedication.
7
+
8
+ ## CC0 1.0 Universal Summary
9
+
10
+ The text below is a human-readable summary of the [Legal Code](https://creativecommons.org/publicdomain/zero/1.0/legalcode):
11
+
12
+ _No Copyright_
13
+
14
+ The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
15
+
16
+ You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
17
+
18
+ _Other Information_
19
+
20
+ In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights.
21
+
22
+ Unless expressly stated otherwise, the person who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law. When using or citing the work, you should not imply endorsement by the author or the affirmer.