policyengine-core 3.26.0__tar.gz → 3.26.2__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.26.2/AGENTS.md +33 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/CHANGELOG.md +18 -0
- policyengine_core-3.26.2/CLAUDE.md +24 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/PKG-INFO +1 -1
- policyengine_core-3.26.2/docs/engineering/skills/README.md +17 -0
- policyengine_core-3.26.2/docs/engineering/skills/documentation_review.md +51 -0
- policyengine_core-3.26.2/docs/engineering/skills/github-prs.md +71 -0
- policyengine_core-3.26.2/docs/engineering/skills/testing.md +38 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/enums/enum.py +5 -2
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/simulation.py +1 -2
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/pyproject.toml +1 -1
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/enums/test_enum.py +24 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_simulations.py +22 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/ISSUE_TEMPLATE.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/bump_version.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/changelog_template.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/get-changelog-diff.sh +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/has-functional-changes.sh +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/is-version-number-acceptable.sh +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/publish-git-tag.sh +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/workflows/pr.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/workflows/push.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.gitignore +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/.python-version +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/CONTRIBUTING.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/LICENSE +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/MANIFEST.in +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/Makefile +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/README.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/_build/logs/myst.build.json +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/changelog.d/.gitkeep +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/_config.yml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/_static/style.css +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/_toc.yml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/add_plotly_to_book.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/contributing/intro.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/intro.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/logo.png +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/commons.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/country_template.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/data.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/data_storage.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/entities.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/enums.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/errors.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/experimental.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/extension_template.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/holders.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/parameters.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/periods.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/populations.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/projectors.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/reforms.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/scripts.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/simulations.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/taxbenefitsystems.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/taxscales.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/tools.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/tracers.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/types.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/variables.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/python_api/warnings.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/usage/country.ipynb +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/usage/datasets.ipynb +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/usage/parameters.md +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/usage/reforms.ipynb +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/docs/usage/simulation.ipynb +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/mypy.ini +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/build_metadata.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/charts/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/charts/api.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/charts/bar.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/charts/formatting.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/commons/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/commons/formulas.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/commons/misc.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/commons/rates.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/constants.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/data/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/data/datasets/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/data/datasets/country_template_dataset.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/entities.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/modelled_policies.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/benefits/basic_income.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/benefits/housing_allowance.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/benefits/index.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/benefits/parenting_allowance/amount.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/benefits/parenting_allowance/income_threshold.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/general/age_of_majority.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/general/age_of_retirement.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/taxes/housing_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/taxes/income_tax_rate.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/parameters/taxes/social_security_contribution.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/add_dynamic_variable.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/add_new_tax.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/flat_social_security_contribution.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/modify_social_security_taxation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/reforms/removal_basic_income.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/situation_examples/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/situation_examples/couple.json +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/situation_examples/housing.json +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/situation_examples/single.json +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/age.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/basic_income.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/disposable_income.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/housing_allowance.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/housing_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/income_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/reforms/add_dynamic_variable.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/reforms/add_new_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/reforms/modify_social_security_taxation.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/situations/income_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/situations/parenting_allowance.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/social_security_contribution.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/tests/test_microsimulation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/benefits.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/demographics.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/housing.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/ids.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/income.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/stats.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/country_template/variables/taxes.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data/dataset.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_storage/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_storage/in_memory_storage.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_storage/on_disk_storage.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_structures/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_structures/parameter_metadata.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_structures/parameter_node_metadata.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_structures/reference.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/data_structures/unit.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/entities/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/entities/entity.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/entities/group_entity.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/entities/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/entities/role.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/enums/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/enums/config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/enums/enum_array.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/cycle_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/empty_argument_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/nan_creation_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/parameter_not_found_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/parameter_parsing_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/period_mismatch_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/situation_parsing_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/spiral_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/variable_name_conflict_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/errors/variable_not_found_error.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/experimental/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/experimental/memory_config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/local_benefit.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/parameters/local_town/child_allowance/amount.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/parameters/local_town/child_allowance/index.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/parameters/local_town/index.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/extension_template/tests/local_benefit.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/holders/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/holders/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/holders/holder.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/model_api.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/at_instant_like.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/get_parameter.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/homogenize_parameters.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/interpolate_parameters.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/propagate_parameter_metadata.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/operations/uprate_parameters.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter_at_instant.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter_node.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter_node_at_instant.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/parameter_scale_bracket.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/parameters/vectorial_parameter_node_at_instant.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/periods/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/periods/config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/periods/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/periods/instant_.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/periods/period_.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/populations/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/populations/config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/populations/group_population.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/populations/population.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/entity_to_person_projector.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/first_person_to_entity_projector.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/projector.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/projectors/unique_role_to_entity_projector.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/reforms/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/reforms/reform.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/assets/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/assets/index.html +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/policyengine_command.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/run_data.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/run_test.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/scripts/simulation_generator.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/individual_sim.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/microsimulation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/simulation_builder.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/simulation_macro_cache.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxbenefitsystems/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxbenefitsystems/tax_benefit_system.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/abstract_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/abstract_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/amount_tax_scale_like.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/linear_average_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/marginal_amount_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/marginal_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/rate_tax_scale_like.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/single_amount_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/taxscales/tax_scale_like.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/google_cloud.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/hugging_face.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/simulation_dumper.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/test_from_situation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/test_runner.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tools/win_file_manager.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/computation_log.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/flat_trace.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/full_tracer.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/performance_log.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/simple_tracer.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/trace_node.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/tracing_parameter_node_at_instant.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/tracers/variable_graph.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/types/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/types/data_types/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/types/data_types/arrays.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/config.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/defined_for.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/helpers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/typing.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/variables/variable.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/warnings/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/warnings/libyaml_warning.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/warnings/memory_config_warning.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/warnings/tempfile_warning.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/pytest.ini +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/test.ipynb +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/conftest.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/test_between_function.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/test_formulas.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/test_is_in_function.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/test_random_seed.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/commons/test_rates.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/data/test_dataset.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/model_api/test_index_.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/array_type.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/duplicate_key.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/filesystem_hierarchy/empty_index_file/index.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/filesystem_hierarchy/node1/param.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/indentation.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/missing_value.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/parameter_for_unit_propagation.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/test_parameter_clone.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/test_parameter_validation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/test_propagate_units.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/unexpected_key_in_parameter.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/unexpected_key_in_scale.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/unexpected_key_in_value_at_instant.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/unexpected_key_in_value_history.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_date.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_scale.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_type_in_bracket.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_type_in_brackets.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_type_in_parameter.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_type_in_scale.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_type_in_value_history.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/wrong_value.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameter_validation/yaml_hierarchy/node1.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters/operations/test_interpolation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters/operations/test_nesting.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters/operations/test_propagation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters/operations/test_uprating.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters/test_numpy2_structured_arrays.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters_fancy_indexing/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters_fancy_indexing/bareme.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters_fancy_indexing/local_tax.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters_fancy_indexing/rate.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/parameters_fancy_indexing/test_fancy_indexing.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_abstract_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_abstract_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_linear_average_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_marginal_amount_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_marginal_rate_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_rate_tax_scale_like.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_single_amount_tax_scale.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tax_scales/test_tax_scales_commons.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_apply_reform_invalidates_cache.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_apply_reform_preserves_user_inputs.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_assert_near_precision.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_axes.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_bincount_minlength.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_build_metadata.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_calculate_output.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_countries.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_cycles.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_dataset_getattr.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_dump_restore.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_entities.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_eternity_subperiods.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_extensions.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_fast_cache.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_fast_cache_guards.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_formulas.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_holder_branch_fallback.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_holders.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_macro_cache_not_singleton.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_medium_fixes.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_microsimulation_person_accessor.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_opt_out_cache.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_pandas3_compatibility.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_parameters.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_periods.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_projectors.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_reform_parameter_isolation.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_reforms.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_simulation_builder.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_stable_hash_seed.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_storage_delete_branch.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_subsample_invalidates_cache.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_tax_benefit_system_cache_identity.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_tracers.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/test_yaml.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tools/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tools/test_assert_near.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tools/test_google_cloud.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tools/test_hugging_face.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/tools/test_runner/test_yaml_runner.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_adds.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_annualize.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_bounds.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_defined_for.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_subtracts.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_subtracts_sign.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/core/variables/test_variables.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/appclient.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/entities.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/simulations.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/taxbenefitsystems.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/variables.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/__init__.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/directory/subdirectory/test_4.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/directory/test_1.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/directory/test_2.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/failing_test_absolute_error_margin.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/failing_test_relative_error_margin.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_absolute_error_margin.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_failure.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_name_filter.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_relative_error_margin.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_success.yml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_with_anchors.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_with_extension.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_with_reform.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/fixtures/yaml_tests/test_with_reform_2.yaml +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/smoke/test_country_init.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/tests/smoke/test_us.py +0 -0
- {policyengine_core-3.26.0 → policyengine_core-3.26.2}/uv.lock +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Agent Instructions
|
|
2
|
+
|
|
3
|
+
These instructions apply repository-wide.
|
|
4
|
+
|
|
5
|
+
## Skills system
|
|
6
|
+
|
|
7
|
+
Canonical AI-facing engineering skills live under `docs/engineering/skills/`.
|
|
8
|
+
Use those files as the source of truth across Codex, Claude, Copilot, and other
|
|
9
|
+
AI tools.
|
|
10
|
+
|
|
11
|
+
When adding, moving, or reviewing tests, read
|
|
12
|
+
`docs/engineering/skills/testing.md`.
|
|
13
|
+
|
|
14
|
+
When reviewing changes to public APIs, architecture, documentation, or generated
|
|
15
|
+
artifacts, read `docs/engineering/skills/documentation_review.md`.
|
|
16
|
+
|
|
17
|
+
## GitHub PRs
|
|
18
|
+
|
|
19
|
+
Read `docs/engineering/skills/github-prs.md` before opening, replacing, or
|
|
20
|
+
sharing any pull request.
|
|
21
|
+
|
|
22
|
+
Before creating or sharing any PR, all developers and agents must:
|
|
23
|
+
|
|
24
|
+
1. Confirm the target remote is the canonical repository:
|
|
25
|
+
`gh repo view PolicyEngine/policyengine-core --json nameWithOwner`.
|
|
26
|
+
2. Add a towncrier changelog fragment in `changelog.d/` using the format
|
|
27
|
+
documented in `docs/engineering/skills/github-prs.md`.
|
|
28
|
+
3. Push the branch to `PolicyEngine/policyengine-core`.
|
|
29
|
+
4. Create the PR against `master`.
|
|
30
|
+
5. Verify the PR head repository before reporting it.
|
|
31
|
+
|
|
32
|
+
If you cannot push to the canonical repository, stop and ask for access. Do not
|
|
33
|
+
open a fork PR as a fallback unless the user explicitly asks for one.
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## [3.26.2] - 2026-05-14
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- Avoid constructing macro-cache metadata during calculations when macro-cache reads are disabled.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## [3.26.1] - 2026-05-07
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Added provider-neutral AI engineering guidance for tests, documentation review, pull requests, and changelog fragments.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Fixed enum encoding for HDF5-style UTF-8 byte-string arrays containing non-ASCII enum member names.
|
|
17
|
+
|
|
18
|
+
|
|
1
19
|
## [3.26.0] - 2026-05-04
|
|
2
20
|
|
|
3
21
|
### Added
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Claude Instructions
|
|
2
|
+
|
|
3
|
+
These instructions apply repository-wide.
|
|
4
|
+
|
|
5
|
+
## Canonical guidance
|
|
6
|
+
|
|
7
|
+
Repository-wide AI-facing engineering guidance lives in `AGENTS.md`.
|
|
8
|
+
Canonical skills live under `docs/engineering/skills/`.
|
|
9
|
+
|
|
10
|
+
Use those files as the source of truth. This file is a Claude adapter and should
|
|
11
|
+
stay thin; do not duplicate detailed testing, CI, formatting, or architecture
|
|
12
|
+
rules here.
|
|
13
|
+
|
|
14
|
+
## Required skill lookup
|
|
15
|
+
|
|
16
|
+
Before opening, replacing, or sharing a PR, read
|
|
17
|
+
`docs/engineering/skills/github-prs.md`. Add the required towncrier changelog
|
|
18
|
+
fragment before creating the PR.
|
|
19
|
+
|
|
20
|
+
When adding, moving, or reviewing tests, read
|
|
21
|
+
`docs/engineering/skills/testing.md` before editing.
|
|
22
|
+
|
|
23
|
+
When reviewing changes to public APIs, architecture, documentation, or generated
|
|
24
|
+
artifacts, read `docs/engineering/skills/documentation_review.md`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: policyengine-core
|
|
3
|
-
Version: 3.26.
|
|
3
|
+
Version: 3.26.2
|
|
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>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Engineering Skills
|
|
2
|
+
|
|
3
|
+
This directory is the canonical source for AI-facing engineering rules.
|
|
4
|
+
|
|
5
|
+
Tool-specific instruction files such as `AGENTS.md`, `CLAUDE.md`, and
|
|
6
|
+
`.github/copilot-instructions.md` should point here instead of duplicating
|
|
7
|
+
implementation-specific guidance. When a rule changes, update the skill here
|
|
8
|
+
first, then keep adapters thin.
|
|
9
|
+
|
|
10
|
+
Current skills:
|
|
11
|
+
|
|
12
|
+
- `documentation_review.md`: model-neutral review checklist for public API,
|
|
13
|
+
architecture, documentation, and generated artifact changes.
|
|
14
|
+
- `github-prs.md`: canonical PR workflow, required changelog fragments, PR head
|
|
15
|
+
verification, and title conventions.
|
|
16
|
+
- `testing.md`: test placement, fixture scope, command, and environment
|
|
17
|
+
expectations.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Documentation Review
|
|
2
|
+
|
|
3
|
+
Use this skill when reviewing a pull request that changes public APIs,
|
|
4
|
+
architecture, documentation, generated artifacts, or developer-facing workflows.
|
|
5
|
+
|
|
6
|
+
## Review goal
|
|
7
|
+
|
|
8
|
+
Documentation review is a harness check, not copyediting. Confirm that durable
|
|
9
|
+
documentation still describes the code paths a maintainer or AI agent would use
|
|
10
|
+
to understand, validate, or modify the system.
|
|
11
|
+
|
|
12
|
+
Do not put PR-specific confidence, impact, or reviewer notes into durable API
|
|
13
|
+
docs. Keep durable facts in source documentation and keep review judgment in the
|
|
14
|
+
PR description or review comment.
|
|
15
|
+
|
|
16
|
+
## Trigger files
|
|
17
|
+
|
|
18
|
+
Run documentation review when a PR changes any of these paths:
|
|
19
|
+
|
|
20
|
+
- `policyengine_core/`
|
|
21
|
+
- `docs/`
|
|
22
|
+
- `.github/`
|
|
23
|
+
- `README.md`
|
|
24
|
+
- `CONTRIBUTING.md`
|
|
25
|
+
- `pyproject.toml`
|
|
26
|
+
- generated documentation or package metadata
|
|
27
|
+
|
|
28
|
+
Also run it when a PR changes public import surfaces, command-line behavior,
|
|
29
|
+
test/development workflows, changelog tooling, or release behavior even if the
|
|
30
|
+
changed path is not listed above.
|
|
31
|
+
|
|
32
|
+
## Checks
|
|
33
|
+
|
|
34
|
+
- Public API changes are reflected in relevant docs or API reference pages.
|
|
35
|
+
- Developer workflow changes are reflected in `README.md`, contributing docs, or
|
|
36
|
+
AI-facing skills when needed.
|
|
37
|
+
- Generated artifacts are not hand-edited unless the repo expects them to be
|
|
38
|
+
checked in.
|
|
39
|
+
- Changelog fragment guidance still matches the towncrier config in
|
|
40
|
+
`pyproject.toml`.
|
|
41
|
+
- Review notes distinguish facts proven by code or tests from assumptions.
|
|
42
|
+
|
|
43
|
+
## Review output
|
|
44
|
+
|
|
45
|
+
Use a concise PR-facing note. Include:
|
|
46
|
+
|
|
47
|
+
- Documentation changes observed, or `not required` with a reason.
|
|
48
|
+
- Commands run, or commands not run with a reason.
|
|
49
|
+
- Impact: `low`, `medium`, or `high`.
|
|
50
|
+
- Confidence: `low`, `medium`, or `high`.
|
|
51
|
+
- Known gaps that should be handled in this PR or a follow-up.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# GitHub PRs
|
|
2
|
+
|
|
3
|
+
These rules apply to every developer and AI agent opening pull requests in this
|
|
4
|
+
repository.
|
|
5
|
+
|
|
6
|
+
## Repository and branch
|
|
7
|
+
|
|
8
|
+
Open PRs against `master` in `PolicyEngine/policyengine-core`.
|
|
9
|
+
|
|
10
|
+
Before creating or sharing a PR:
|
|
11
|
+
|
|
12
|
+
1. Confirm the canonical repository is reachable:
|
|
13
|
+
`gh repo view PolicyEngine/policyengine-core --json nameWithOwner`.
|
|
14
|
+
2. Add the required towncrier changelog fragment under `changelog.d/`.
|
|
15
|
+
3. Push the current branch to `PolicyEngine/policyengine-core`.
|
|
16
|
+
4. Create the PR against `master`.
|
|
17
|
+
5. Verify the PR head repository before reporting it:
|
|
18
|
+
`gh pr view <PR> --repo PolicyEngine/policyengine-core --json headRepositoryOwner,headRepository`.
|
|
19
|
+
|
|
20
|
+
If you cannot push to the canonical repository, stop and ask for access. Do not
|
|
21
|
+
open a fork PR as a fallback unless the user explicitly asks for one.
|
|
22
|
+
|
|
23
|
+
## Changelog fragment
|
|
24
|
+
|
|
25
|
+
A changelog entry is required before opening, replacing, or sharing a PR. When a
|
|
26
|
+
user asks an AI agent to open a PR, the agent must check for an appropriate
|
|
27
|
+
fragment and add one if it is missing before running `gh pr create`.
|
|
28
|
+
|
|
29
|
+
Use towncrier fragments in this format:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
changelog.d/<short-slug>.<type>.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Allowed `<type>` values are configured in `pyproject.toml`:
|
|
36
|
+
|
|
37
|
+
- `breaking`
|
|
38
|
+
- `added`
|
|
39
|
+
- `changed`
|
|
40
|
+
- `fixed`
|
|
41
|
+
- `removed`
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
changelog.d/fix-enum-utf8-bytes.fixed.md
|
|
47
|
+
changelog.d/add-agent-pr-guidance.changed.md
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Write one concise Markdown sentence in the fragment. Use `fixed` for bug fixes,
|
|
51
|
+
`added` for new user-facing capabilities, `changed` for behavior, documentation,
|
|
52
|
+
tooling, or refactors, `removed` for removals, and `breaking` only for changes
|
|
53
|
+
that intentionally break compatibility. Prefer updating an existing branch
|
|
54
|
+
fragment over adding duplicate fragments for the same PR.
|
|
55
|
+
|
|
56
|
+
Do not run `make changelog` for a PR. The release workflow builds
|
|
57
|
+
`CHANGELOG.md` from fragments after merge.
|
|
58
|
+
|
|
59
|
+
## PR title
|
|
60
|
+
|
|
61
|
+
Do not add `[codex]`, `[claude]`, `[copilot]`, or other agent labels to PR
|
|
62
|
+
titles. Use a plain descriptive title.
|
|
63
|
+
|
|
64
|
+
## PR body
|
|
65
|
+
|
|
66
|
+
Keep the description concrete:
|
|
67
|
+
|
|
68
|
+
- Link the issue the PR fixes.
|
|
69
|
+
- Summarize the user-visible behavior change.
|
|
70
|
+
- List the tests or checks run.
|
|
71
|
+
- Call out any commands that were not run and why.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Testing Skill
|
|
2
|
+
|
|
3
|
+
Use this skill whenever adding, moving, or reviewing tests.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
Use `uv run` for Python commands so the repo environment is selected
|
|
8
|
+
consistently.
|
|
9
|
+
|
|
10
|
+
Common checks:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
uv run pytest tests/core/enums/test_enum.py -v
|
|
14
|
+
uv run pytest tests/core/test_file.py::test_name -v
|
|
15
|
+
make format
|
|
16
|
+
make test
|
|
17
|
+
make documentation
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Run the narrowest test that proves the change while working. Before handing off a
|
|
21
|
+
broader behavioral change, run the relevant focused tests and formatting check.
|
|
22
|
+
|
|
23
|
+
## Placement
|
|
24
|
+
|
|
25
|
+
- Put core package tests under `tests/core/`.
|
|
26
|
+
- Put smoke tests under `tests/smoke/`.
|
|
27
|
+
- Keep fixtures under `tests/fixtures/` unless pytest fixture discovery requires
|
|
28
|
+
a local `conftest.py`.
|
|
29
|
+
- Do not add tests inside `policyengine_core/`.
|
|
30
|
+
|
|
31
|
+
## Fixture and dependency boundaries
|
|
32
|
+
|
|
33
|
+
- Keep root `tests/conftest.py` lightweight.
|
|
34
|
+
- Avoid network access, cloud credentials, or country package imports in ordinary
|
|
35
|
+
unit tests unless the test is explicitly a smoke/integration check.
|
|
36
|
+
- Prefer small synthetic fixtures for regression tests.
|
|
37
|
+
- When fixing a bug, add a regression test that fails without the fix and passes
|
|
38
|
+
with it unless the change is documentation-only.
|
|
@@ -77,8 +77,11 @@ class Enum(enum.Enum):
|
|
|
77
77
|
indices = np.array([item.index for item in array], dtype=ENUM_ARRAY_DTYPE)
|
|
78
78
|
return EnumArray(indices, cls)
|
|
79
79
|
|
|
80
|
-
# Convert byte
|
|
81
|
-
|
|
80
|
+
# Convert fixed-width byte strings, as returned by h5py for string
|
|
81
|
+
# datasets, to Unicode before matching enum names.
|
|
82
|
+
if array.dtype.kind == "S":
|
|
83
|
+
array = np.char.decode(array, "utf-8")
|
|
84
|
+
elif array.dtype == object:
|
|
82
85
|
array = array.astype(str)
|
|
83
86
|
|
|
84
87
|
if isinstance(array, np.ndarray) and array.dtype.kind in {"U", "S"}:
|
{policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/simulations/simulation.py
RENAMED
|
@@ -707,11 +707,10 @@ class Simulation:
|
|
|
707
707
|
if cached_array is not None:
|
|
708
708
|
return cached_array
|
|
709
709
|
|
|
710
|
-
smc = SimulationMacroCache(self.tax_benefit_system)
|
|
711
|
-
|
|
712
710
|
# Check if cache can be used, if available, check if path exists
|
|
713
711
|
is_cache_available = self.check_macro_cache(variable_name, str(period))
|
|
714
712
|
if is_cache_available:
|
|
713
|
+
smc = SimulationMacroCache(self.tax_benefit_system)
|
|
715
714
|
smc.set_cache_path(
|
|
716
715
|
self.dataset.file_path.parent,
|
|
717
716
|
self.dataset.name,
|
|
@@ -74,6 +74,30 @@ def test_enum_encode_all_invalid_raises_error():
|
|
|
74
74
|
assert "FOO" in error_message or "BAR" in error_message or "BAZ" in error_message
|
|
75
75
|
|
|
76
76
|
|
|
77
|
+
def test_enum_encode_utf8_byte_string_array():
|
|
78
|
+
"""
|
|
79
|
+
Test that HDF5-style UTF-8 byte strings encode as enum names.
|
|
80
|
+
|
|
81
|
+
The ñ mirrors values like DOÑA_ANA_COUNTY_NM. It is a non-ASCII
|
|
82
|
+
character, so NumPy's default byte-string conversion cannot decode it
|
|
83
|
+
as ASCII.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
class Sample(Enum):
|
|
87
|
+
DOÑA_ANA = "Doña Ana"
|
|
88
|
+
DWORKIN = "dworkin"
|
|
89
|
+
|
|
90
|
+
byte_string_array = np.array(
|
|
91
|
+
["DOÑA_ANA".encode("utf-8"), b"DWORKIN"],
|
|
92
|
+
dtype="S10",
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
encoded_array = Sample.encode(byte_string_array)
|
|
96
|
+
|
|
97
|
+
assert isinstance(encoded_array, EnumArray)
|
|
98
|
+
assert list(encoded_array) == [0, 1]
|
|
99
|
+
|
|
100
|
+
|
|
77
101
|
def test_enum_encode_empty_string_raises_error():
|
|
78
102
|
"""Test that encoding empty strings raises ValueError."""
|
|
79
103
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from policyengine_core.country_template.situation_examples import single
|
|
2
2
|
from policyengine_core.simulations import SimulationBuilder
|
|
3
|
+
import policyengine_core.simulations.simulation as simulation_module
|
|
3
4
|
from policyengine_core.simulations.simulation_macro_cache import (
|
|
4
5
|
SimulationMacroCache,
|
|
5
6
|
)
|
|
@@ -90,3 +91,24 @@ def test_macro_cache(tax_benefit_system):
|
|
|
90
91
|
)
|
|
91
92
|
cache.clear_cache(cache.cache_folder_path)
|
|
92
93
|
assert not cache.cache_folder_path.exists()
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_calculate_without_macro_cache_does_not_build_macro_cache(
|
|
97
|
+
tax_benefit_system, monkeypatch
|
|
98
|
+
):
|
|
99
|
+
class UnexpectedSimulationMacroCache:
|
|
100
|
+
def __init__(self, tax_benefit_system):
|
|
101
|
+
raise AssertionError(
|
|
102
|
+
"SimulationMacroCache should not be constructed when "
|
|
103
|
+
"macro cache reads are disabled"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
monkeypatch.setattr(
|
|
107
|
+
simulation_module,
|
|
108
|
+
"SimulationMacroCache",
|
|
109
|
+
UnexpectedSimulationMacroCache,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
simulation = SimulationBuilder().build_default_simulation(tax_benefit_system)
|
|
113
|
+
|
|
114
|
+
simulation.calculate("income_tax", "2017-01")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.26.0 → policyengine_core-3.26.2}/.github/is-version-number-acceptable.sh
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
|
{policyengine_core-3.26.0 → policyengine_core-3.26.2}/policyengine_core/charts/formatting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{policyengine_core-3.26.0 → policyengine_core-3.26.2}/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.26.0 → policyengine_core-3.26.2}/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
|