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.
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CHANGELOG.md +7 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/PKG-INFO +1 -1
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/hugging_face.py +20 -4
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/pyproject.toml +1 -1
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_hugging_face.py +147 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/ISSUE_TEMPLATE.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/bump_version.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/changelog_template.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/get-changelog-diff.sh +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/has-functional-changes.sh +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/is-version-number-acceptable.sh +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/publish-git-tag.sh +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/requirements/legacy-country-smoke.txt +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/workflows/pr.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/workflows/push.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.gitignore +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/.python-version +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/AGENTS.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CLAUDE.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/CONTRIBUTING.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/LICENSE +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/MANIFEST.in +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/Makefile +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/README.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/_build/logs/myst.build.json +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/changelog.d/.gitkeep +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_config.yml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_static/style.css +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/_toc.yml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/add_plotly_to_book.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/contributing/intro.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/README.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/documentation_review.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/github-prs.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/engineering/skills/testing.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/intro.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/logo.png +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/commons.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/country_template.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/data.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/data_storage.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/entities.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/enums.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/errors.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/experimental.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/extension_template.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/holders.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/parameters.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/periods.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/populations.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/projectors.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/reforms.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/scripts.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/simulations.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/taxbenefitsystems.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/taxscales.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/tools.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/tracers.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/types.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/variables.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/python_api/warnings.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/country.ipynb +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/datasets.ipynb +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/parameters.md +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/reforms.ipynb +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/docs/usage/simulation.ipynb +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/mypy.ini +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/build_metadata.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/api.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/bar.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/formatting.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/formulas.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/misc.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/commons/rates.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/constants.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/datasets/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/data/datasets/country_template_dataset.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/entities.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/modelled_policies.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/basic_income.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/housing_allowance.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/index.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/parenting_allowance/amount.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/benefits/parenting_allowance/income_threshold.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/general/age_of_majority.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/general/age_of_retirement.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/housing_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/income_tax_rate.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/parameters/taxes/social_security_contribution.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/add_dynamic_variable.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/add_new_tax.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/flat_social_security_contribution.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/modify_social_security_taxation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/reforms/removal_basic_income.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/couple.json +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/housing.json +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/situation_examples/single.json +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/age.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/basic_income.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/disposable_income.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/housing_allowance.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/housing_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/income_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/add_dynamic_variable.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/add_new_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/reforms/modify_social_security_taxation.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/situations/income_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/situations/parenting_allowance.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/social_security_contribution.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/tests/test_microsimulation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/benefits.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/demographics.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/housing.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/ids.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/income.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/stats.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/variables/taxes.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data/dataset.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/in_memory_storage.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/on_disk_storage.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/parameter_metadata.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/parameter_node_metadata.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/reference.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/unit.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/entity.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/group_entity.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/role.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/enum.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/enums/enum_array.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/cycle_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/empty_argument_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/nan_creation_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/non_deterministic_formula_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/parameter_not_found_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/parameter_parsing_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/period_mismatch_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/situation_parsing_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/spiral_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/variable_name_conflict_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/variable_not_found_error.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/experimental/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/experimental/memory_config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/local_benefit.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/child_allowance/amount.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/child_allowance/index.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/parameters/local_town/index.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/extension_template/tests/local_benefit.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/holders/holder.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/model_api.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/at_instant_like.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/get_parameter.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/homogenize_parameters.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/interpolate_parameters.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/propagate_parameter_metadata.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/operations/uprate_parameters.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_at_instant.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_node.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_node_at_instant.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/parameter_scale_bracket.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/parameters/vectorial_parameter_node_at_instant.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/instant_.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/periods/period_.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/group_population.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/populations/population.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/entity_to_person_projector.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/first_person_to_entity_projector.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/projector.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/projectors/unique_role_to_entity_projector.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/reforms/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/reforms/reform.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/assets/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/assets/index.html +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/policyengine_command.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/run_data.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/run_test.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/scripts/simulation_generator.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/individual_sim.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/microsimulation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation_builder.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/simulations/simulation_macro_cache.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxbenefitsystems/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxbenefitsystems/tax_benefit_system.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/abstract_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/abstract_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/amount_tax_scale_like.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/linear_average_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/marginal_amount_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/marginal_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/rate_tax_scale_like.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/single_amount_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/taxscales/tax_scale_like.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/google_cloud.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/simulation_dumper.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/test_from_situation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/test_runner.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/win_file_manager.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/computation_log.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/flat_trace.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/full_tracer.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/performance_log.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/simple_tracer.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/trace_node.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/tracing_parameter_node_at_instant.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tracers/variable_graph.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/data_types/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/types/data_types/arrays.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/config.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/defined_for.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/formula_randomness.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/helpers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/typing.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/variables/variable.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/libyaml_warning.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/memory_config_warning.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/parameter_key_warning.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/warnings/tempfile_warning.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/pytest.ini +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/conftest.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_between_function.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_formulas.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_is_in_function.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_random_seed.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/commons/test_rates.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/data/test_dataset.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/enums/test_enum.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/model_api/test_index_.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/array_type.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/duplicate_key.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/filesystem_hierarchy/empty_index_file/index.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/filesystem_hierarchy/node1/param.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/indentation.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/missing_value.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/parameter_for_unit_propagation.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_parameter_clone.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_parameter_validation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_propagate_units.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/test_unknown_keys.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_parameter.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_scale.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_value_at_instant.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unexpected_key_in_value_history.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/unknown_key_beside_values.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/uprating_under_metadata.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_date.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_scale.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_bracket.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_brackets.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_parameter.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_scale.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_type_in_value_history.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/wrong_value.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameter_validation/yaml_hierarchy/node1.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_interpolation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_nesting.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_propagation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_scale_threshold_uprating.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/operations/test_uprating.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters/test_numpy2_structured_arrays.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/bareme.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/local_tax.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/rate.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/parameters_fancy_indexing/test_fancy_indexing.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/simulations/test_formula_randomness_concurrency.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_abstract_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_abstract_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_linear_average_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_marginal_amount_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_marginal_rate_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_rate_tax_scale_like.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_single_amount_tax_scale.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tax_scales/test_tax_scales_commons.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_apply_reform_invalidates_cache.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_apply_reform_preserves_user_inputs.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_assert_near_precision.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_axes.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_bincount_minlength.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_branch_scoped_delete_arrays.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_build_metadata.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_calculate_output.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_countries.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_cycles.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dataset_getattr.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dataset_unknown_column_warning.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_dump_restore.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_entities.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_eternity_subperiods.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_extensions.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_fast_cache.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_fast_cache_guards.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_formulas.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_holder_branch_fallback.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_holders.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_macro_cache_not_singleton.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_medium_fixes.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_microsimulation_person_accessor.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_microsimulation_weights.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_opt_out_cache.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_pandas3_compatibility.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_parameter_security.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_parameters.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_periods.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_projectors.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reform_parameter_isolation.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reform_period_keys.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_reforms.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_release_tagging.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_simulation_builder.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_simulations.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_stable_hash_seed.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_storage_anchored_periods.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_storage_delete_branch.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_subsample_baseline_branch.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_subsample_invalidates_cache.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_tax_benefit_system_cache_identity.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_tracers.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/test_yaml.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_assert_near.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_google_cloud.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/tools/test_runner/test_yaml_runner.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_adds.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_annualize.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_bounds.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_defined_for.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_formula_randomness.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_subtracts.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_subtracts_sign.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_clone.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_formula_determinism.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variable_uprating.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/core/variables/test_variables.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/appclient.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/entities.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/simulations.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/taxbenefitsystems.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/variables.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/__init__.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/subdirectory/test_4.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/test_1.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/directory/test_2.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/failing_test_absolute_error_margin.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/failing_test_relative_error_margin.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_absolute_error_margin.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_failure.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_name_filter.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_relative_error_margin.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_success.yml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_anchors.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_extension.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_reform.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/fixtures/yaml_tests/test_with_reform_2.yaml +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/smoke/test_country_init.py +0 -0
- {policyengine_core-3.32.8 → policyengine_core-3.32.9}/tests/smoke/test_us.py +0 -0
- {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.
|
|
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>
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/tools/hugging_face.py
RENAMED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
105
|
+
if requires_authentication:
|
|
90
106
|
authentication_token = get_or_prompt_hf_token()
|
|
91
107
|
|
|
92
108
|
return hf_hub_download(
|
|
@@ -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):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/is-version-number-acceptable.sh
RENAMED
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/.github/requirements/legacy-country-smoke.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/charts/formatting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/country_template/entities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_storage/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/reference.py
RENAMED
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/data_structures/unit.py
RENAMED
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/entities/group_entity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.32.8 → policyengine_core-3.32.9}/policyengine_core/errors/cycle_error.py
RENAMED
|
File without changes
|
|
File without changes
|