policyengine-core 3.32.8__tar.gz → 3.32.9__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 (405) hide show
  1. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CHANGELOG.md +7 -0
  2. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/PKG-INFO +1 -1
  3. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/hugging_face.py +20 -4
  4. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/pyproject.toml +1 -1
  5. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_hugging_face.py +147 -0
  6. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/ISSUE_TEMPLATE.md +0 -0
  7. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  8. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/bump_version.py +0 -0
  9. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/changelog_template.md +0 -0
  10. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/get-changelog-diff.sh +0 -0
  11. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/has-functional-changes.sh +0 -0
  12. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/is-version-number-acceptable.sh +0 -0
  13. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/publish-git-tag.sh +0 -0
  14. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/requirements/legacy-country-smoke.txt +0 -0
  15. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/workflows/pr.yaml +0 -0
  16. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/workflows/push.yaml +0 -0
  17. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.gitignore +0 -0
  18. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.python-version +0 -0
  19. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/AGENTS.md +0 -0
  20. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CLAUDE.md +0 -0
  21. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CONTRIBUTING.md +0 -0
  22. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/LICENSE +0 -0
  23. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/MANIFEST.in +0 -0
  24. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/Makefile +0 -0
  25. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/README.md +0 -0
  26. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/_build/logs/myst.build.json +0 -0
  27. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/changelog.d/.gitkeep +0 -0
  28. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_config.yml +0 -0
  29. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_static/style.css +0 -0
  30. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_toc.yml +0 -0
  31. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/add_plotly_to_book.py +0 -0
  32. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/contributing/intro.md +0 -0
  33. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/README.md +0 -0
  34. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/documentation_review.md +0 -0
  35. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/github-prs.md +0 -0
  36. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/testing.md +0 -0
  37. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/intro.md +0 -0
  38. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/logo.png +0 -0
  39. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/commons.md +0 -0
  40. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/country_template.md +0 -0
  41. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/data.md +0 -0
  42. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/data_storage.md +0 -0
  43. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/entities.md +0 -0
  44. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/enums.md +0 -0
  45. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/errors.md +0 -0
  46. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/experimental.md +0 -0
  47. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/extension_template.md +0 -0
  48. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/holders.md +0 -0
  49. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/parameters.md +0 -0
  50. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/periods.md +0 -0
  51. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/populations.md +0 -0
  52. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/projectors.md +0 -0
  53. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/reforms.md +0 -0
  54. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/scripts.md +0 -0
  55. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/simulations.md +0 -0
  56. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/taxbenefitsystems.md +0 -0
  57. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/taxscales.md +0 -0
  58. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/tools.md +0 -0
  59. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/tracers.md +0 -0
  60. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/types.md +0 -0
  61. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/variables.md +0 -0
  62. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/warnings.md +0 -0
  63. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/country.ipynb +0 -0
  64. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/datasets.ipynb +0 -0
  65. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/parameters.md +0 -0
  66. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/reforms.ipynb +0 -0
  67. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/simulation.ipynb +0 -0
  68. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/mypy.ini +0 -0
  69. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/__init__.py +0 -0
  70. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/build_metadata.py +0 -0
  71. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/__init__.py +0 -0
  72. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/api.py +0 -0
  73. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/bar.py +0 -0
  74. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/formatting.py +0 -0
  75. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/__init__.py +0 -0
  76. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/formulas.py +0 -0
  77. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/misc.py +0 -0
  78. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/rates.py +0 -0
  79. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/__init__.py +0 -0
  80. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/constants.py +0 -0
  81. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/__init__.py +0 -0
  82. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/datasets/__init__.py +0 -0
  83. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/datasets/country_template_dataset.py +0 -0
  84. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/entities.py +0 -0
  85. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/modelled_policies.yaml +0 -0
  86. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/basic_income.yaml +0 -0
  87. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/housing_allowance.yaml +0 -0
  88. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/index.yaml +0 -0
  89. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/parenting_allowance/amount.yaml +0 -0
  90. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/parenting_allowance/income_threshold.yaml +0 -0
  91. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/general/age_of_majority.yaml +0 -0
  92. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/general/age_of_retirement.yaml +0 -0
  93. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/housing_tax.yaml +0 -0
  94. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/income_tax_rate.yaml +0 -0
  95. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/social_security_contribution.yaml +0 -0
  96. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/__init__.py +0 -0
  97. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/add_dynamic_variable.py +0 -0
  98. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/add_new_tax.py +0 -0
  99. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/flat_social_security_contribution.py +0 -0
  100. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/modify_social_security_taxation.py +0 -0
  101. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/removal_basic_income.py +0 -0
  102. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/__init__.py +0 -0
  103. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/couple.json +0 -0
  104. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/housing.json +0 -0
  105. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/single.json +0 -0
  106. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/age.yaml +0 -0
  107. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/basic_income.yaml +0 -0
  108. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/disposable_income.yaml +0 -0
  109. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/housing_allowance.yaml +0 -0
  110. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/housing_tax.yaml +0 -0
  111. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/income_tax.yaml +0 -0
  112. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/add_dynamic_variable.yaml +0 -0
  113. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/add_new_tax.yaml +0 -0
  114. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/modify_social_security_taxation.yaml +0 -0
  115. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/situations/income_tax.yaml +0 -0
  116. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/situations/parenting_allowance.yaml +0 -0
  117. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/social_security_contribution.yaml +0 -0
  118. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/test_microsimulation.py +0 -0
  119. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/__init__.py +0 -0
  120. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/benefits.py +0 -0
  121. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/demographics.py +0 -0
  122. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/housing.py +0 -0
  123. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/ids.py +0 -0
  124. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/income.py +0 -0
  125. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/stats.py +0 -0
  126. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/taxes.py +0 -0
  127. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data/__init__.py +0 -0
  128. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data/dataset.py +0 -0
  129. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/__init__.py +0 -0
  130. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/in_memory_storage.py +0 -0
  131. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/on_disk_storage.py +0 -0
  132. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/__init__.py +0 -0
  133. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/parameter_metadata.py +0 -0
  134. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/parameter_node_metadata.py +0 -0
  135. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/reference.py +0 -0
  136. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/unit.py +0 -0
  137. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/__init__.py +0 -0
  138. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/entity.py +0 -0
  139. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/group_entity.py +0 -0
  140. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/helpers.py +0 -0
  141. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/role.py +0 -0
  142. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/__init__.py +0 -0
  143. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/config.py +0 -0
  144. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/enum.py +0 -0
  145. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/enum_array.py +0 -0
  146. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/__init__.py +0 -0
  147. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/cycle_error.py +0 -0
  148. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/empty_argument_error.py +0 -0
  149. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/nan_creation_error.py +0 -0
  150. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/non_deterministic_formula_error.py +0 -0
  151. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/parameter_not_found_error.py +0 -0
  152. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/parameter_parsing_error.py +0 -0
  153. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/period_mismatch_error.py +0 -0
  154. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/situation_parsing_error.py +0 -0
  155. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/spiral_error.py +0 -0
  156. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/variable_name_conflict_error.py +0 -0
  157. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/variable_not_found_error.py +0 -0
  158. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/experimental/__init__.py +0 -0
  159. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/experimental/memory_config.py +0 -0
  160. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/__init__.py +0 -0
  161. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/local_benefit.py +0 -0
  162. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/child_allowance/amount.yaml +0 -0
  163. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/child_allowance/index.yaml +0 -0
  164. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/index.yaml +0 -0
  165. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/tests/local_benefit.yaml +0 -0
  166. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/__init__.py +0 -0
  167. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/helpers.py +0 -0
  168. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/holder.py +0 -0
  169. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/model_api.py +0 -0
  170. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/__init__.py +0 -0
  171. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/at_instant_like.py +0 -0
  172. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/config.py +0 -0
  173. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/helpers.py +0 -0
  174. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/__init__.py +0 -0
  175. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/get_parameter.py +0 -0
  176. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/homogenize_parameters.py +0 -0
  177. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/interpolate_parameters.py +0 -0
  178. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/propagate_parameter_metadata.py +0 -0
  179. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/uprate_parameters.py +0 -0
  180. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter.py +0 -0
  181. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_at_instant.py +0 -0
  182. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_node.py +0 -0
  183. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_node_at_instant.py +0 -0
  184. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_scale.py +0 -0
  185. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_scale_bracket.py +0 -0
  186. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/vectorial_parameter_node_at_instant.py +0 -0
  187. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/__init__.py +0 -0
  188. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/config.py +0 -0
  189. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/helpers.py +0 -0
  190. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/instant_.py +0 -0
  191. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/period_.py +0 -0
  192. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/__init__.py +0 -0
  193. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/config.py +0 -0
  194. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/group_population.py +0 -0
  195. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/population.py +0 -0
  196. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/__init__.py +0 -0
  197. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/entity_to_person_projector.py +0 -0
  198. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/first_person_to_entity_projector.py +0 -0
  199. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/helpers.py +0 -0
  200. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/projector.py +0 -0
  201. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/unique_role_to_entity_projector.py +0 -0
  202. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/reforms/__init__.py +0 -0
  203. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/reforms/reform.py +0 -0
  204. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/__init__.py +0 -0
  205. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/assets/__init__.py +0 -0
  206. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/assets/index.html +0 -0
  207. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/policyengine_command.py +0 -0
  208. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/run_data.py +0 -0
  209. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/run_test.py +0 -0
  210. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/simulation_generator.py +0 -0
  211. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/__init__.py +0 -0
  212. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/helpers.py +0 -0
  213. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/individual_sim.py +0 -0
  214. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/microsimulation.py +0 -0
  215. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation.py +0 -0
  216. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation_builder.py +0 -0
  217. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation_macro_cache.py +0 -0
  218. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxbenefitsystems/__init__.py +0 -0
  219. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxbenefitsystems/tax_benefit_system.py +0 -0
  220. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/__init__.py +0 -0
  221. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/abstract_rate_tax_scale.py +0 -0
  222. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/abstract_tax_scale.py +0 -0
  223. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/amount_tax_scale_like.py +0 -0
  224. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/helpers.py +0 -0
  225. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/linear_average_rate_tax_scale.py +0 -0
  226. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/marginal_amount_tax_scale.py +0 -0
  227. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/marginal_rate_tax_scale.py +0 -0
  228. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/rate_tax_scale_like.py +0 -0
  229. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/single_amount_tax_scale.py +0 -0
  230. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/tax_scale_like.py +0 -0
  231. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/__init__.py +0 -0
  232. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/google_cloud.py +0 -0
  233. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/simulation_dumper.py +0 -0
  234. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/test_from_situation.py +0 -0
  235. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/test_runner.py +0 -0
  236. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/win_file_manager.py +0 -0
  237. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/__init__.py +0 -0
  238. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/computation_log.py +0 -0
  239. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/flat_trace.py +0 -0
  240. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/full_tracer.py +0 -0
  241. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/performance_log.py +0 -0
  242. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/simple_tracer.py +0 -0
  243. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/trace_node.py +0 -0
  244. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/tracing_parameter_node_at_instant.py +0 -0
  245. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/variable_graph.py +0 -0
  246. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/__init__.py +0 -0
  247. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/data_types/__init__.py +0 -0
  248. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/data_types/arrays.py +0 -0
  249. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/__init__.py +0 -0
  250. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/config.py +0 -0
  251. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/defined_for.py +0 -0
  252. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/formula_randomness.py +0 -0
  253. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/helpers.py +0 -0
  254. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/typing.py +0 -0
  255. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/variable.py +0 -0
  256. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/__init__.py +0 -0
  257. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/libyaml_warning.py +0 -0
  258. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/memory_config_warning.py +0 -0
  259. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/parameter_key_warning.py +0 -0
  260. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/tempfile_warning.py +0 -0
  261. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/pytest.ini +0 -0
  262. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/__init__.py +0 -0
  263. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/conftest.py +0 -0
  264. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/__init__.py +0 -0
  265. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/__init__.py +0 -0
  266. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_between_function.py +0 -0
  267. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_formulas.py +0 -0
  268. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_is_in_function.py +0 -0
  269. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_random_seed.py +0 -0
  270. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_rates.py +0 -0
  271. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/data/test_dataset.py +0 -0
  272. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/enums/test_enum.py +0 -0
  273. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/model_api/test_index_.py +0 -0
  274. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/__init__.py +0 -0
  275. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/array_type.yaml +0 -0
  276. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/duplicate_key.yaml +0 -0
  277. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/filesystem_hierarchy/empty_index_file/index.yaml +0 -0
  278. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/filesystem_hierarchy/node1/param.yaml +0 -0
  279. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/indentation.yaml +0 -0
  280. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/missing_value.yaml +0 -0
  281. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/parameter_for_unit_propagation.yaml +0 -0
  282. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_parameter_clone.py +0 -0
  283. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_parameter_validation.py +0 -0
  284. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_propagate_units.py +0 -0
  285. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_unknown_keys.py +0 -0
  286. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_parameter.yaml +0 -0
  287. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_scale.yaml +0 -0
  288. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_value_at_instant.yaml +0 -0
  289. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_value_history.yaml +0 -0
  290. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unknown_key_beside_values.yaml +0 -0
  291. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/uprating_under_metadata.yaml +0 -0
  292. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_date.yaml +0 -0
  293. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_scale.yaml +0 -0
  294. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_bracket.yaml +0 -0
  295. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_brackets.yaml +0 -0
  296. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_parameter.yaml +0 -0
  297. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_scale.yaml +0 -0
  298. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_value_history.yaml +0 -0
  299. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_value.yaml +0 -0
  300. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/yaml_hierarchy/node1.yaml +0 -0
  301. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_interpolation.py +0 -0
  302. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_nesting.py +0 -0
  303. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_propagation.py +0 -0
  304. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_scale_threshold_uprating.py +0 -0
  305. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_uprating.py +0 -0
  306. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/test_numpy2_structured_arrays.py +0 -0
  307. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/__init__.py +0 -0
  308. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/bareme.yaml +0 -0
  309. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/local_tax.yaml +0 -0
  310. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/rate.yaml +0 -0
  311. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/test_fancy_indexing.py +0 -0
  312. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/simulations/test_formula_randomness_concurrency.py +0 -0
  313. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/__init__.py +0 -0
  314. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_abstract_rate_tax_scale.py +0 -0
  315. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_abstract_tax_scale.py +0 -0
  316. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_linear_average_rate_tax_scale.py +0 -0
  317. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_marginal_amount_tax_scale.py +0 -0
  318. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_marginal_rate_tax_scale.py +0 -0
  319. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_rate_tax_scale_like.py +0 -0
  320. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_single_amount_tax_scale.py +0 -0
  321. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_tax_scales_commons.py +0 -0
  322. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_apply_reform_invalidates_cache.py +0 -0
  323. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_apply_reform_preserves_user_inputs.py +0 -0
  324. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_assert_near_precision.py +0 -0
  325. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_axes.py +0 -0
  326. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_bincount_minlength.py +0 -0
  327. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_branch_scoped_delete_arrays.py +0 -0
  328. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_build_metadata.py +0 -0
  329. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_calculate_output.py +0 -0
  330. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_countries.py +0 -0
  331. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_cycles.py +0 -0
  332. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dataset_getattr.py +0 -0
  333. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dataset_unknown_column_warning.py +0 -0
  334. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dump_restore.py +0 -0
  335. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_entities.py +0 -0
  336. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_eternity_subperiods.py +0 -0
  337. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_extensions.py +0 -0
  338. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_fast_cache.py +0 -0
  339. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_fast_cache_guards.py +0 -0
  340. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_formulas.py +0 -0
  341. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_holder_branch_fallback.py +0 -0
  342. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_holders.py +0 -0
  343. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_macro_cache_not_singleton.py +0 -0
  344. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_medium_fixes.py +0 -0
  345. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_microsimulation_person_accessor.py +0 -0
  346. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_microsimulation_weights.py +0 -0
  347. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_opt_out_cache.py +0 -0
  348. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_pandas3_compatibility.py +0 -0
  349. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_parameter_security.py +0 -0
  350. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_parameters.py +0 -0
  351. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_periods.py +0 -0
  352. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_projectors.py +0 -0
  353. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reform_parameter_isolation.py +0 -0
  354. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reform_period_keys.py +0 -0
  355. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reforms.py +0 -0
  356. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_release_tagging.py +0 -0
  357. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_simulation_builder.py +0 -0
  358. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_simulations.py +0 -0
  359. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_stable_hash_seed.py +0 -0
  360. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_storage_anchored_periods.py +0 -0
  361. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_storage_delete_branch.py +0 -0
  362. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_subsample_baseline_branch.py +0 -0
  363. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_subsample_invalidates_cache.py +0 -0
  364. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_tax_benefit_system_cache_identity.py +0 -0
  365. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_tracers.py +0 -0
  366. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_yaml.py +0 -0
  367. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/__init__.py +0 -0
  368. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_assert_near.py +0 -0
  369. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_google_cloud.py +0 -0
  370. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_runner/test_yaml_runner.py +0 -0
  371. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_adds.py +0 -0
  372. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_annualize.py +0 -0
  373. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_bounds.py +0 -0
  374. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_defined_for.py +0 -0
  375. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_formula_randomness.py +0 -0
  376. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_subtracts.py +0 -0
  377. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_subtracts_sign.py +0 -0
  378. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_clone.py +0 -0
  379. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_formula_determinism.py +0 -0
  380. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_uprating.py +0 -0
  381. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variables.py +0 -0
  382. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/__init__.py +0 -0
  383. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/appclient.py +0 -0
  384. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/entities.py +0 -0
  385. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/simulations.py +0 -0
  386. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/taxbenefitsystems.py +0 -0
  387. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/variables.py +0 -0
  388. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/__init__.py +0 -0
  389. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/subdirectory/test_4.yaml +0 -0
  390. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/test_1.yaml +0 -0
  391. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/test_2.yaml +0 -0
  392. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/failing_test_absolute_error_margin.yaml +0 -0
  393. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/failing_test_relative_error_margin.yaml +0 -0
  394. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_absolute_error_margin.yaml +0 -0
  395. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_failure.yaml +0 -0
  396. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_name_filter.yaml +0 -0
  397. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_relative_error_margin.yaml +0 -0
  398. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_success.yml +0 -0
  399. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_anchors.yaml +0 -0
  400. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_extension.yaml +0 -0
  401. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_reform.yaml +0 -0
  402. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_reform_2.yaml +0 -0
  403. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/smoke/test_country_init.py +0 -0
  404. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/smoke/test_us.py +0 -0
  405. {policyengine_core-3.32.8 → policyengine_core-3.32.9}/uv.lock +0 -0
@@ -1,3 +1,10 @@
1
+ ## [3.32.9] - 2026-09-29
2
+
3
+ ### Fixed
4
+
5
+ - Send the HUGGING_FACE_TOKEN when downloading from public but gated Hugging Face repos, not only private ones, so gated dataset downloads no longer fail with a 401 gated-repo error.
6
+
7
+
1
8
  ## [3.32.8] - 2026-09-27
2
9
 
3
10
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: policyengine-core
3
- Version: 3.32.8
3
+ Version: 3.32.9
4
4
  Summary: Core microsimulation engine enabling country-specific policy models.
5
5
  Project-URL: Homepage, https://github.com/policyengine/policyengine-core
6
6
  Author-email: PolicyEngine <hello@policyengine.org>
@@ -53,6 +53,14 @@ def download_huggingface_dataset(
53
53
  """
54
54
  Download a PolicyEngine dataset file from the Hugging Face Hub.
55
55
 
56
+ Private repos and public-but-gated repos both require authentication,
57
+ so for either the token is resolved by get_or_prompt_hf_token()
58
+ (HUGGING_FACE_TOKEN, else an interactive prompt when stdin is a TTY,
59
+ else None) and passed explicitly to hf_hub_download. Public, ungated
60
+ repos are requested with token=None and never prompt; huggingface_hub
61
+ may still apply its own implicitly configured token (HF_TOKEN or the
62
+ login file) in that case.
63
+
56
64
  Args:
57
65
  repo: Hugging Face model repository identifier in ``owner/name``
58
66
  format.
@@ -68,15 +76,23 @@ def download_huggingface_dataset(
68
76
  """
69
77
  # Attempt connection to Hugging Face model_info endpoint
70
78
  # (https://huggingface.co/docs/huggingface_hub/v0.26.5/en/package_reference/hf_api#huggingface_hub.HfApi.model_info)
71
- # Attempt to fetch model info to determine if repo is private
79
+ # Attempt to fetch model info to determine if the repo requires
80
+ # authentication. Testing `private` alone is not enough: a public but
81
+ # gated repo still answers model_info() without a token, but the file
82
+ # download returns 401 unless a gate-approved token is sent.
83
+ # ModelInfo.gated is False for ungated repos, "auto" or "manual" for
84
+ # gated repos, and None if the field is absent, so a truthiness test
85
+ # covers every state (both gate modes need an authenticated request).
72
86
  # A RepositoryNotFoundError & 401 likely means the repo is private,
73
87
  # but this error will also surface for public repos with malformed URL, etc.
74
88
  try:
75
89
  fetched_model_info: ModelInfo = model_info(repo)
76
- is_repo_private = bool(fetched_model_info.private)
90
+ requires_authentication: bool = bool(fetched_model_info.private) or bool(
91
+ fetched_model_info.gated
92
+ )
77
93
  except RepositoryNotFoundError as e:
78
94
  # If this error type arises, it's likely the repo is private; see docs above
79
- is_repo_private = True
95
+ requires_authentication = True
80
96
  pass
81
97
  except Exception as e:
82
98
  # Otherwise, there probably is just a download error
@@ -86,7 +102,7 @@ def download_huggingface_dataset(
86
102
  )
87
103
 
88
104
  authentication_token: str | None = None
89
- if is_repo_private:
105
+ if requires_authentication:
90
106
  authentication_token = get_or_prompt_hf_token()
91
107
 
92
108
  return hf_hub_download(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "policyengine-core"
3
- version = "3.32.8"
3
+ version = "3.32.9"
4
4
  description = "Core microsimulation engine enabling country-specific policy models."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -141,6 +141,153 @@ class TestHuggingFaceDownload:
141
141
  local_dir=test_dir,
142
142
  )
143
143
 
144
+ @pytest.mark.parametrize("gated", ["manual", "auto"])
145
+ def test_download_gated_public_repo_passes_env_token(self, gated):
146
+ """A public but gated repo must receive HUGGING_FACE_TOKEN.
147
+
148
+ Regression test for PolicyEngine/policyengine-core#529: `private`
149
+ is False for a gated repo, but the file download still needs a
150
+ gate-approved token or the Hub answers 401.
151
+ """
152
+ test_repo = "test_repo"
153
+ test_filename = "test_filename"
154
+ test_version = "test_version"
155
+ test_dir = "test_dir"
156
+ test_token = "gated_repo_test_token"
157
+
158
+ with patch.dict(os.environ, {"HUGGING_FACE_TOKEN": test_token}, clear=True):
159
+ with patch(
160
+ "policyengine_core.tools.hugging_face.hf_hub_download"
161
+ ) as mock_download:
162
+ with patch(
163
+ "policyengine_core.tools.hugging_face.model_info"
164
+ ) as mock_model_info:
165
+ mock_model_info.return_value = ModelInfo(
166
+ id=test_repo, private=False, gated=gated
167
+ )
168
+
169
+ download_huggingface_dataset(
170
+ test_repo, test_filename, test_version, test_dir
171
+ )
172
+
173
+ mock_download.assert_called_once_with(
174
+ repo_id=test_repo,
175
+ repo_type="model",
176
+ filename=test_filename,
177
+ revision=test_version,
178
+ token=test_token,
179
+ local_dir=test_dir,
180
+ )
181
+
182
+ def test_download_private_flag_repo_passes_env_token(self):
183
+ """A repo reported as private=True by model_info still gets the token."""
184
+ test_repo = "test_repo"
185
+ test_filename = "test_filename"
186
+ test_version = "test_version"
187
+ test_dir = "test_dir"
188
+ test_token = "private_repo_test_token"
189
+
190
+ with patch.dict(os.environ, {"HUGGING_FACE_TOKEN": test_token}, clear=True):
191
+ with patch(
192
+ "policyengine_core.tools.hugging_face.hf_hub_download"
193
+ ) as mock_download:
194
+ with patch(
195
+ "policyengine_core.tools.hugging_face.model_info"
196
+ ) as mock_model_info:
197
+ mock_model_info.return_value = ModelInfo(
198
+ id=test_repo, private=True, gated=False
199
+ )
200
+
201
+ download_huggingface_dataset(
202
+ test_repo, test_filename, test_version, test_dir
203
+ )
204
+
205
+ mock_download.assert_called_once_with(
206
+ repo_id=test_repo,
207
+ repo_type="model",
208
+ filename=test_filename,
209
+ revision=test_version,
210
+ token=test_token,
211
+ local_dir=test_dir,
212
+ )
213
+
214
+ def test_download_gated_repo_non_interactive_without_token(self):
215
+ """Gated repo in CI without secrets: no prompt, token=None is passed."""
216
+ test_repo = "test_repo"
217
+ test_filename = "test_filename"
218
+ test_version = "test_version"
219
+ test_dir = "test_dir"
220
+
221
+ with patch.dict(os.environ, {}, clear=True):
222
+ with patch("os.isatty", return_value=False):
223
+ with patch(
224
+ "policyengine_core.tools.hugging_face.getpass"
225
+ ) as mock_getpass:
226
+ with patch(
227
+ "policyengine_core.tools.hugging_face.hf_hub_download"
228
+ ) as mock_download:
229
+ with patch(
230
+ "policyengine_core.tools.hugging_face.model_info"
231
+ ) as mock_model_info:
232
+ mock_model_info.return_value = ModelInfo(
233
+ id=test_repo, private=False, gated="manual"
234
+ )
235
+
236
+ download_huggingface_dataset(
237
+ test_repo, test_filename, test_version, test_dir
238
+ )
239
+
240
+ mock_getpass.assert_not_called()
241
+ mock_download.assert_called_once_with(
242
+ repo_id=test_repo,
243
+ repo_type="model",
244
+ filename=test_filename,
245
+ revision=test_version,
246
+ token=None,
247
+ local_dir=test_dir,
248
+ )
249
+
250
+ @pytest.mark.parametrize("gated", [False, None])
251
+ def test_download_public_ungated_repo_never_prompts(self, gated):
252
+ """Public, ungated repo: no token lookup and no interactive prompt.
253
+
254
+ Guards against widening the predicate so far that every public
255
+ download on a developer machine asks for a token.
256
+ """
257
+ test_repo = "test_repo"
258
+ test_filename = "test_filename"
259
+ test_version = "test_version"
260
+ test_dir = "test_dir"
261
+
262
+ with patch.dict(os.environ, {}, clear=True):
263
+ with patch("os.isatty", return_value=True):
264
+ with patch(
265
+ "policyengine_core.tools.hugging_face.getpass"
266
+ ) as mock_getpass:
267
+ with patch(
268
+ "policyengine_core.tools.hugging_face.hf_hub_download"
269
+ ) as mock_download:
270
+ with patch(
271
+ "policyengine_core.tools.hugging_face.model_info"
272
+ ) as mock_model_info:
273
+ mock_model_info.return_value = ModelInfo(
274
+ id=test_repo, private=False, gated=gated
275
+ )
276
+
277
+ download_huggingface_dataset(
278
+ test_repo, test_filename, test_version, test_dir
279
+ )
280
+
281
+ mock_getpass.assert_not_called()
282
+ mock_download.assert_called_once_with(
283
+ repo_id=test_repo,
284
+ repo_type="model",
285
+ filename=test_filename,
286
+ revision=test_version,
287
+ token=None,
288
+ local_dir=test_dir,
289
+ )
290
+
144
291
 
145
292
  class TestGetOrPromptHfToken:
146
293
  def test_get_token_from_environment(self):