policyengine 6.2.4__tar.gz → 6.2.6__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-6.2.4 → policyengine-6.2.6}/CHANGELOG.md +14 -0
- {policyengine-6.2.4/src/policyengine.egg-info → policyengine-6.2.6}/PKG-INFO +8 -8
- policyengine-6.2.6/docs/engineering/runbooks/acs-local-wic-replacement.md +56 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/households.md +1 -1
- {policyengine-6.2.4 → policyengine-6.2.6}/pyproject.toml +8 -8
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/bundle/manifest.json +48 -48
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/bundle/uk.trace.tro.jsonld +21 -21
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/bundle/us.trace.tro.jsonld +5 -5
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/legacy_inputs.py +49 -3
- {policyengine-6.2.4 → policyengine-6.2.6/src/policyengine.egg-info}/PKG-INFO +8 -8
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine.egg-info/SOURCES.txt +1 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine.egg-info/requires.txt +7 -7
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/uk_couple_two_kids.json +5 -5
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/uk_model_surface.json +2 -2
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_employment_income.json +1 -1
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/uk_single_parent_one_child.json +1 -1
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_models.py +3 -3
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_release_manifests.py +7 -7
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_uk_regions.py +1 -1
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_legacy_inputs.py +185 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_legacy_inputs_integration.py +22 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_variable_metadata.py +4 -4
- {policyengine-6.2.4 → policyengine-6.2.6}/uv.lock +14 -14
- {policyengine-6.2.4 → policyengine-6.2.6}/.claude/policyengine-guide.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.claude/quick-reference.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/CONTRIBUTING.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/bump_version.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/capture-version.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/changelog_template.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/check-changelog.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/copilot-instructions.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/dispatch-policyengine-release.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/fetch_version.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/get-changelog-diff.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/has-functional-changes.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/is-version-number-acceptable.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/publish-git-tag.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/wait-for-pypi.sh +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/workflows/draft-pdf.yml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/workflows/pr_code_changes.yaml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/workflows/pr_docs_changes.yaml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.github/workflows/push.yaml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.gitignore +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/.python-version +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/AGENTS.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/CITATION.cff +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/CLAUDE.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/CODE_OF_CONDUCT.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/CONTRIBUTING.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/LICENSE +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/Makefile +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/README.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/architecture.png +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/architecture.svg +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/changelog.d/.gitkeep +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/.gitignore +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/_generator/README.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/_generator/build_reference.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/_quarto.yml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/bundles.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/countries.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/data-publishing-design.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/decile-impact-spec.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/dev.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/runbooks/build-m-us-populace-certification.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/runbooks/canonical-spm-development.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/skills/README.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/skills/data-certification.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/skills/github-prs.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/engineering/skills/repository-guidance.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/examples.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/getting-started.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/impact-analysis.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/index.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/methodology/index.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/methodology/model-architecture.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/methodology/us-health-costs.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/microsim.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/outputs.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/programs/index.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/programs/us-chip.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/reference/index.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/reforms.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/regions.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/release-bundles.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/run-records.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/trace-case-study.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/docs/visualisation.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/belgium_axiom_pilot.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/employment_income_variation_uk.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/employment_income_variation_us.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/household_impact_example.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/income_bands_uk.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/income_distribution_us.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/paper_repro_uk.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/policy_change_uk.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/speedtest_us_simulation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/examples/us_budgetary_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/paper-preview.html +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/paper.bib +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/paper.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/bundle.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/certify_data_release.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/check_data_staleness.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/check_native_spm_loading.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/check_release_credentials.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/export_bundle_release_assets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/generate_bundle_artifacts.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/generate_trace_tros.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/prepare_package_bundle_update.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/release_lock.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/scripts/spm_bundle.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/setup.cfg +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/bundle.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/cli.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/cache.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/dataset.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/dynamic.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/output.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/parameter.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/parameter_node.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/parameter_value.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/policy.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/region.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/run_record.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/scoping_strategy.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/simulation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/spm.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/tax_benefit_model.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/tax_benefit_model_version.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/core/variable.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/uk/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/uk/regions.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/data/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/data/districts.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/data/places.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/data/states.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/countries/us/regions.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/schemas/trace_tro.schema.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/data/uk_geography_assets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/derivations/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/derivations/narrate.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/derivations/trace.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/graph/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/graph/extractor.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/graph/graph.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/aggregate.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/change_aggregate.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/cliff_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/congressional_district_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/constituency_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/decile_analysis.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/decile_grouping.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/decile_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/extra_variables.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/inequality.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/intra_decile_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/labor_supply_response.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/local_authority_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/poverty.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/program_statistics.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/uk_geography_assets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/outputs/uk_geography_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/bundle_validation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/certification.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/dataset_materialization.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/manifest.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/pyproject_pins.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/spm_configuration.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/trace.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/verify.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/provenance/zenodo.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/results/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/results/schema.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/results/trace_tro.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/results/tracking.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/be/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/be/datasets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/be/model.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/axes.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/extra_variables.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/household.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/model_version.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/reform.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/common/result.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/uk/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/uk/analysis.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/uk/datasets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/uk/household.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/uk/model.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/analysis.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/datasets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/household.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/model.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/spm.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/dates.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/design.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/entity_utils.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/errors.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/hashing.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/household_validation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/parameter_labels.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/parametric_reforms.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/utils/plotting.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine.egg-info/dependency_links.txt +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine.egg-info/entry_points.txt +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine.egg-info/top_level.txt +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/conftest.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/filtering_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_no_income.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/us_married_two_kids_high_income.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/us_model_surface.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_employment_income.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_no_income.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/household_calculator_snapshots/us_single_parent_one_child.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/parameter_labels_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/parametric_reforms_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/poverty_by_demographics_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/region_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/release_tros/README.md +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/release_tros/country-models.lock.toml +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/release_tros/manifest.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/release_tros/us-release_manifest.json +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/release_tros/us.trace.tro.jsonld +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/spm_development.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/us_reform_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/fixtures/variable_label_fixtures.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_aggregate.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_be_axiom_pilot.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_budgetary_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_bump_version.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_bundle.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_bundle_metadata.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_cache.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_certify_data_release.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_change_aggregate.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_cliff_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_cliff_impact_analysis.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_congressional_district_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_constituency_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_dataset_materialization.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_dataset_persistence.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_dataset_runtime.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_dataset_source.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_decile_grouping.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_derivations.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_dict_reforms_on_simulation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_entity_mapping.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_entity_utils.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_entity_utils_characterization.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_errors.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_extra_variables.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_filtering.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_generate_trace_tros.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_graph/__init__.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_graph/conftest.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_graph/test_extractor.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_household_calculator_snapshot.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_household_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_inequality.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_intra_decile_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_labor_supply_response.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_local_authority_impact.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_manifest_version_mismatch.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_pandas3_compatibility.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_parameter_labels.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_parameter_nodes.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_parameter_values.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_parametric_reforms.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_poverty.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_poverty_by_demographics.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_poverty_run.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_preservation_mirror.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_program_statistics.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_pyproject_pins.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_region.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_region_group_strategy.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_release_credentials.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_release_lock.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_release_tro_generation.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_results.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_run_record.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_scoping_strategy.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_small_follow_ups.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_bundle_bootstrap.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_bundle_tooling.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_decile.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_development_authentication.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_household.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_model.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_selection.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_spm_selection_schema.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_trace_tro.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_trace_tro_verify.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_uk_analysis.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_uk_geography_assets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_uk_program_statistics.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_uk_year_file_data_year.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_long_term_datasets.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_microsim_structural_reforms.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_native_alignment.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_native_hdf_weights.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_program_statistics.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_reform_application.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_us_regions.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_variable_labels.py +0 -0
- {policyengine-6.2.4 → policyengine-6.2.6}/tests/test_zenodo_mirror.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [6.2.6] - 2026-10-10
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
|
|
5
|
+
- Certify policyengine-uk-data 1.58.0 (`enhanced_frs_2024_25`) as the UK default, and pin policyengine-uk 2.125.1 and policyengine-core 3.33.0. The data was built with policyengine-uk 2.122.2 and core 3.32.13; the publisher's compatibility claim in the 1.58.0 release manifest covers the newer versions. UK results change with the new data release and with the policyengine-uk updates since 2.102.3, including Housing Benefit's Guarantee Credit passport now keyed on receipt.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## [6.2.5] - 2026-10-09
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Add opt-in verified US state/year preparation and temporarily assume WIC claiming only for missing participation decisions on identified ACS people, preserving donor decisions and country-model eligibility.
|
|
13
|
+
|
|
14
|
+
|
|
1
15
|
## [6.2.4] - 2026-10-09
|
|
2
16
|
|
|
3
17
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: policyengine
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.6
|
|
4
4
|
Summary: A package to conduct policy analysis using PolicyEngine tax-benefit models.
|
|
5
5
|
Author-email: PolicyEngine <hello@policyengine.org>
|
|
6
6
|
License: GNU AFFERO GENERAL PUBLIC LICENSE
|
|
@@ -685,15 +685,15 @@ Requires-Dist: plotly>=5.0.0; extra == "plotting"
|
|
|
685
685
|
Provides-Extra: graph
|
|
686
686
|
Requires-Dist: networkx>=3.0; extra == "graph"
|
|
687
687
|
Provides-Extra: models
|
|
688
|
-
Requires-Dist: policyengine-core==3.
|
|
688
|
+
Requires-Dist: policyengine-core==3.33.0; extra == "models"
|
|
689
689
|
Requires-Dist: policyengine-us==2.2.1; extra == "models"
|
|
690
|
-
Requires-Dist: policyengine-uk==2.
|
|
690
|
+
Requires-Dist: policyengine-uk==2.125.1; extra == "models"
|
|
691
691
|
Requires-Dist: spm-calculator==1.0.0; extra == "models"
|
|
692
692
|
Provides-Extra: uk
|
|
693
|
-
Requires-Dist: policyengine-core==3.
|
|
694
|
-
Requires-Dist: policyengine-uk==2.
|
|
693
|
+
Requires-Dist: policyengine-core==3.33.0; extra == "uk"
|
|
694
|
+
Requires-Dist: policyengine-uk==2.125.1; extra == "uk"
|
|
695
695
|
Provides-Extra: us
|
|
696
|
-
Requires-Dist: policyengine-core==3.
|
|
696
|
+
Requires-Dist: policyengine-core==3.33.0; extra == "us"
|
|
697
697
|
Requires-Dist: policyengine-us==2.2.1; extra == "us"
|
|
698
698
|
Requires-Dist: spm-calculator==1.0.0; extra == "us"
|
|
699
699
|
Provides-Extra: dev
|
|
@@ -711,9 +711,9 @@ Requires-Dist: towncrier>=24.8.0; extra == "dev"
|
|
|
711
711
|
Requires-Dist: mypy>=1.11.0; extra == "dev"
|
|
712
712
|
Requires-Dist: pytest-cov>=5.0.0; extra == "dev"
|
|
713
713
|
Requires-Dist: hypothesis>=6.100.0; extra == "dev"
|
|
714
|
-
Requires-Dist: policyengine-core==3.
|
|
714
|
+
Requires-Dist: policyengine-core==3.33.0; extra == "dev"
|
|
715
715
|
Requires-Dist: policyengine-us==2.2.1; extra == "dev"
|
|
716
|
-
Requires-Dist: policyengine-uk==2.
|
|
716
|
+
Requires-Dist: policyengine-uk==2.125.1; extra == "dev"
|
|
717
717
|
Requires-Dist: spm-calculator==1.0.0; extra == "dev"
|
|
718
718
|
Dynamic: license-file
|
|
719
719
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Replace the temporary ACS WIC assumption
|
|
2
|
+
|
|
3
|
+
## Temporary compatibility fix
|
|
4
|
+
|
|
5
|
+
The certified local-area release
|
|
6
|
+
`populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z` stores donor
|
|
7
|
+
participation decisions as `would_claim_wic`, with missing decisions on ACS
|
|
8
|
+
people. The current model consumes the monthly person input
|
|
9
|
+
`takes_up_wic_if_eligible`.
|
|
10
|
+
|
|
11
|
+
The wrapper preserves all valid existing decisions and sets only missing
|
|
12
|
+
decisions on people whose `person_support_channel` is `acs_2024_1yr` to `True`.
|
|
13
|
+
This explicitly assumes that every eligible affected ACS person claims WIC;
|
|
14
|
+
it does not change eligibility. Missing donor decisions, missing identifying
|
|
15
|
+
provenance, and malformed values remain errors. Source H5 files are unchanged.
|
|
16
|
+
|
|
17
|
+
The existing loader applies this before calculation and year preparation,
|
|
18
|
+
including baseline and reform branches. The fix does not add partitioning,
|
|
19
|
+
state/year preparation APIs, new dataset defaults, or deployment behavior.
|
|
20
|
+
|
|
21
|
+
## Replacement ownership
|
|
22
|
+
|
|
23
|
+
[Microcosm #1154](https://github.com/PolicyEngine/microcosm/issues/1154) tracks
|
|
24
|
+
the code repair, a dataset rebuild and publication by a separate dataset owner,
|
|
25
|
+
certification in this repository, and removal of the exception. Merging the
|
|
26
|
+
[code repair](https://github.com/PolicyEngine/microcosm/pull/1156) does not
|
|
27
|
+
publish a replacement population or complete that issue.
|
|
28
|
+
|
|
29
|
+
The repair generates ACS participation after completing demographic inputs and
|
|
30
|
+
before combining ACS records with donors. It reuses the existing WIC generator,
|
|
31
|
+
preserves donor decisions, writes complete boolean participation inputs, and
|
|
32
|
+
rejects missing decisions. The dataset owner must rebuild the affected outputs
|
|
33
|
+
and satisfy the existing release checks.
|
|
34
|
+
|
|
35
|
+
## Remove the exception
|
|
36
|
+
|
|
37
|
+
The separate stacked [removal PR #563](https://github.com/PolicyEngine/policyengine.py/pull/563)
|
|
38
|
+
must remain a draft until the replacement dataset has been published and
|
|
39
|
+
certified. Do not invent its revision or hash or relax its failing check.
|
|
40
|
+
|
|
41
|
+
Once the replacement is available:
|
|
42
|
+
|
|
43
|
+
1. Follow the [US certification runbook](build-m-us-populace-certification.md)
|
|
44
|
+
with its actual immutable regional manifest. Keep national defaults and
|
|
45
|
+
model pins unchanged unless separately approved.
|
|
46
|
+
2. Verify complete current-name participation on the replacement and record
|
|
47
|
+
its revision and hashes.
|
|
48
|
+
3. Add the real certification changes to the removal PR and rebase it onto
|
|
49
|
+
`main` after the temporary compatibility fix merges.
|
|
50
|
+
4. Delete only the ACS missing-value exception. Keep ordinary legacy-name
|
|
51
|
+
mapping while other certified datasets require it.
|
|
52
|
+
5. Run the focused mapping and country-model integration tests and validate
|
|
53
|
+
preparation against the actual replacement dataset.
|
|
54
|
+
|
|
55
|
+
This fix does not rebuild or publish data, deploy services, or introduce
|
|
56
|
+
environment variables or database changes.
|
|
@@ -106,7 +106,7 @@ separate benefit inputs; they do not override SPM measurement composition.
|
|
|
106
106
|
|
|
107
107
|
These changes require the coordinated canonical country/calculator bundle, which
|
|
108
108
|
the packaged production manifest now pins and certifies: `policyengine-us`
|
|
109
|
-
2.2.1, `policyengine-core` 3.
|
|
109
|
+
2.2.1, `policyengine-core` 3.33.0, `spm-calculator` 1.0.0, and the US data
|
|
110
110
|
release `populace-us-2024-spm-20260915`. Local-wheel development manifest
|
|
111
111
|
fixtures remain explicitly uncertified. The measurement receipt identifies a
|
|
112
112
|
calculation; it does not certify a population dataset or establish publication
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "policyengine"
|
|
7
|
-
version = "6.2.
|
|
7
|
+
version = "6.2.6"
|
|
8
8
|
description = "A package to conduct policy analysis using PolicyEngine tax-benefit models."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -40,17 +40,17 @@ graph = [
|
|
|
40
40
|
"networkx>=3.0",
|
|
41
41
|
]
|
|
42
42
|
models = [
|
|
43
|
-
"policyengine-core==3.
|
|
43
|
+
"policyengine-core==3.33.0",
|
|
44
44
|
"policyengine-us==2.2.1",
|
|
45
|
-
"policyengine-uk==2.
|
|
45
|
+
"policyengine-uk==2.125.1",
|
|
46
46
|
"spm-calculator==1.0.0",
|
|
47
47
|
]
|
|
48
48
|
uk = [
|
|
49
|
-
"policyengine-core==3.
|
|
50
|
-
"policyengine-uk==2.
|
|
49
|
+
"policyengine-core==3.33.0",
|
|
50
|
+
"policyengine-uk==2.125.1",
|
|
51
51
|
]
|
|
52
52
|
us = [
|
|
53
|
-
"policyengine-core==3.
|
|
53
|
+
"policyengine-core==3.33.0",
|
|
54
54
|
"policyengine-us==2.2.1",
|
|
55
55
|
"spm-calculator==1.0.0",
|
|
56
56
|
]
|
|
@@ -69,9 +69,9 @@ dev = [
|
|
|
69
69
|
"mypy>=1.11.0",
|
|
70
70
|
"pytest-cov>=5.0.0",
|
|
71
71
|
"hypothesis>=6.100.0",
|
|
72
|
-
"policyengine-core==3.
|
|
72
|
+
"policyengine-core==3.33.0",
|
|
73
73
|
"policyengine-us==2.2.1",
|
|
74
|
-
"policyengine-uk==2.
|
|
74
|
+
"policyengine-uk==2.125.1",
|
|
75
75
|
"spm-calculator==1.0.0",
|
|
76
76
|
]
|
|
77
77
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bundle_version": "6.2.
|
|
2
|
+
"bundle_version": "6.2.6",
|
|
3
3
|
"citation": {
|
|
4
4
|
"publisher": "PolicyEngine",
|
|
5
|
-
"title": "PolicyEngine bundle 6.2.
|
|
5
|
+
"title": "PolicyEngine bundle 6.2.6",
|
|
6
6
|
"type": "software-bundle",
|
|
7
|
-
"version": "6.2.
|
|
7
|
+
"version": "6.2.6"
|
|
8
8
|
},
|
|
9
9
|
"countries": {
|
|
10
10
|
"uk": {
|
|
@@ -16,103 +16,103 @@
|
|
|
16
16
|
},
|
|
17
17
|
"data_releases": {
|
|
18
18
|
"uk": {
|
|
19
|
-
"build_id": "policyengine-uk-data-1.
|
|
20
|
-
"bundle_id": "uk-6.2.
|
|
19
|
+
"build_id": "policyengine-uk-data-1.58.0",
|
|
20
|
+
"bundle_id": "uk-6.2.6",
|
|
21
21
|
"certification": {
|
|
22
|
-
"built_with_model_git_sha": "
|
|
23
|
-
"built_with_model_version": "2.
|
|
22
|
+
"built_with_model_git_sha": "4cbedbecca352f52dffe47e849553c2759a00711",
|
|
23
|
+
"built_with_model_version": "2.122.2",
|
|
24
24
|
"certified_by": "policyengine.py bundle certification",
|
|
25
|
-
"certified_for_model_version": "2.
|
|
25
|
+
"certified_for_model_version": "2.125.1",
|
|
26
26
|
"compatibility_basis": "legacy_compatible_model_package",
|
|
27
|
-
"data_build_fingerprint": "sha256:
|
|
28
|
-
"data_build_id": "policyengine-uk-data-1.
|
|
27
|
+
"data_build_fingerprint": "sha256:c094d7006fdd81df220090284212f16bbffb15624643bc442c4bb3e1b1e5dac8",
|
|
28
|
+
"data_build_id": "policyengine-uk-data-1.58.0"
|
|
29
29
|
},
|
|
30
30
|
"certified_data_artifact": {
|
|
31
|
-
"build_id": "policyengine-uk-data-1.
|
|
31
|
+
"build_id": "policyengine-uk-data-1.58.0",
|
|
32
32
|
"data_package": {
|
|
33
33
|
"name": "policyengine-uk-data",
|
|
34
|
-
"version": "1.
|
|
34
|
+
"version": "1.58.0"
|
|
35
35
|
},
|
|
36
36
|
"dataset": "enhanced_frs_2024_25",
|
|
37
|
-
"sha256": "
|
|
38
|
-
"uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.
|
|
37
|
+
"sha256": "5ba399ea5ab9a6c7d4e9aaf6c623080beb34d9ad5f330f6244dbad72b8d960b6",
|
|
38
|
+
"uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.58.0"
|
|
39
39
|
},
|
|
40
40
|
"country_id": "uk",
|
|
41
41
|
"data_package": {
|
|
42
42
|
"name": "policyengine-uk-data",
|
|
43
|
-
"release_manifest_path": "releases/1.
|
|
44
|
-
"release_manifest_revision": "
|
|
43
|
+
"release_manifest_path": "releases/1.58.0/release_manifest.json",
|
|
44
|
+
"release_manifest_revision": "fdeba38517bd86067f34c0a5d8ed8923efb3b10a",
|
|
45
45
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
46
46
|
"repo_type": "model",
|
|
47
|
-
"version": "1.
|
|
47
|
+
"version": "1.58.0"
|
|
48
48
|
},
|
|
49
49
|
"data_producer": "populace",
|
|
50
50
|
"datasets": {
|
|
51
51
|
"enhanced_frs_2024_25": {
|
|
52
52
|
"path": "enhanced_frs_2024_25.h5",
|
|
53
53
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
54
|
-
"revision": "1.
|
|
55
|
-
"sha256": "
|
|
54
|
+
"revision": "1.58.0",
|
|
55
|
+
"sha256": "5ba399ea5ab9a6c7d4e9aaf6c623080beb34d9ad5f330f6244dbad72b8d960b6"
|
|
56
56
|
},
|
|
57
57
|
"enhanced_frs_2024_25_tiny": {
|
|
58
58
|
"path": "enhanced_frs_2024_25_tiny.h5",
|
|
59
59
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
60
|
-
"revision": "1.
|
|
61
|
-
"sha256": "
|
|
60
|
+
"revision": "1.58.0",
|
|
61
|
+
"sha256": "a2e938b6c68952dc6fa3af998501371d9014b66263baef262d4f649fe6f19dd5"
|
|
62
62
|
},
|
|
63
63
|
"frs_2024_25": {
|
|
64
64
|
"path": "frs_2024_25.h5",
|
|
65
65
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
66
|
-
"revision": "1.
|
|
67
|
-
"sha256": "
|
|
66
|
+
"revision": "1.58.0",
|
|
67
|
+
"sha256": "2ec0ea6c10bc82d030a071474c1b376780ea88053e1659d784b4253662341634"
|
|
68
68
|
},
|
|
69
69
|
"frs_2024_25_tiny": {
|
|
70
70
|
"path": "frs_2024_25_tiny.h5",
|
|
71
71
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
72
|
-
"revision": "1.
|
|
73
|
-
"sha256": "
|
|
72
|
+
"revision": "1.58.0",
|
|
73
|
+
"sha256": "e91d17c4bae92067222272da33918f15027f65a58e3765c7bdff8aa119df914e"
|
|
74
74
|
},
|
|
75
75
|
"local_authority_weights": {
|
|
76
76
|
"path": "local_authority_weights.h5",
|
|
77
77
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
78
|
-
"revision": "1.
|
|
79
|
-
"sha256": "
|
|
78
|
+
"revision": "1.58.0",
|
|
79
|
+
"sha256": "0f8e43877f13cea86ea7bd78ce938769d0c2746ac0b191be661c25608aa786fc"
|
|
80
80
|
},
|
|
81
81
|
"local_geography_weights": {
|
|
82
82
|
"path": "local_geography_weights.csv.gz",
|
|
83
83
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
84
|
-
"revision": "1.
|
|
85
|
-
"sha256": "
|
|
84
|
+
"revision": "1.58.0",
|
|
85
|
+
"sha256": "2c4026139eb69d26af5a0ddad7e7fe9ee981b89a0968e77a5f41820091f641c2"
|
|
86
86
|
},
|
|
87
87
|
"parliamentary_constituency_weights": {
|
|
88
88
|
"path": "parliamentary_constituency_weights.h5",
|
|
89
89
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
90
|
-
"revision": "1.
|
|
91
|
-
"sha256": "
|
|
90
|
+
"revision": "1.58.0",
|
|
91
|
+
"sha256": "da3d021bf6cd57f06e878094e48524a6a691207231158d9a109da73ea459e900"
|
|
92
92
|
}
|
|
93
93
|
},
|
|
94
94
|
"default_dataset": "enhanced_frs_2024_25",
|
|
95
|
-
"default_dataset_uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.
|
|
95
|
+
"default_dataset_uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.58.0",
|
|
96
96
|
"model_package": {
|
|
97
97
|
"name": "policyengine-uk",
|
|
98
|
-
"sha256": "
|
|
99
|
-
"version": "2.
|
|
100
|
-
"wheel_url": "https://files.pythonhosted.org/packages/
|
|
98
|
+
"sha256": "a0983b4cef868467578a4fd0d163a977a0da8f710dd5194ec01c75f66d512c5a",
|
|
99
|
+
"version": "2.125.1",
|
|
100
|
+
"wheel_url": "https://files.pythonhosted.org/packages/ec/3a/1d90bad4346d1a8c2715be211ed3d3d7f48917da0d90405b8257b7304091/policyengine_uk-2.125.1-py3-none-any.whl"
|
|
101
101
|
},
|
|
102
|
-
"policyengine_version": "6.2.
|
|
102
|
+
"policyengine_version": "6.2.6",
|
|
103
103
|
"region_datasets": {
|
|
104
104
|
"national": {
|
|
105
105
|
"path_template": "enhanced_frs_2024_25.h5"
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
|
-
"release_manifest_uri": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/
|
|
108
|
+
"release_manifest_uri": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/fdeba38517bd86067f34c0a5d8ed8923efb3b10a/releases/1.58.0/release_manifest.json",
|
|
109
109
|
"schema_version": 1,
|
|
110
|
-
"source_manifest_uri": "hf://model/policyengine/policyengine-uk-data-private@
|
|
111
|
-
"version": "policyengine-uk-data-1.
|
|
110
|
+
"source_manifest_uri": "hf://model/policyengine/policyengine-uk-data-private@fdeba38517bd86067f34c0a5d8ed8923efb3b10a/releases/1.58.0/release_manifest.json",
|
|
111
|
+
"version": "policyengine-uk-data-1.58.0"
|
|
112
112
|
},
|
|
113
113
|
"us": {
|
|
114
114
|
"build_id": "populace-us-2024-spm-20260915",
|
|
115
|
-
"bundle_id": "us-6.2.
|
|
115
|
+
"bundle_id": "us-6.2.6",
|
|
116
116
|
"certification": {
|
|
117
117
|
"built_with_model_version": "2.2.1",
|
|
118
118
|
"certified_by": "policyengine.py bundle certification",
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
"version": "2.2.1",
|
|
218
218
|
"wheel_url": "https://files.pythonhosted.org/packages/5e/09/86ac3968d2a18e28fce3ba1186fc21728e9f299b96a806d6f204f1e0aaed/policyengine_us-2.2.1-py3-none-any.whl"
|
|
219
219
|
},
|
|
220
|
-
"policyengine_version": "6.2.
|
|
220
|
+
"policyengine_version": "6.2.6",
|
|
221
221
|
"region_datasets": {
|
|
222
222
|
"congressional_district": {
|
|
223
223
|
"path_template": "populace_us_2024_acs_local.h5"
|
|
@@ -295,25 +295,25 @@
|
|
|
295
295
|
"packages": {
|
|
296
296
|
"policyengine": {
|
|
297
297
|
"import_name": "policyengine",
|
|
298
|
-
"install_requirement": "policyengine==6.2.
|
|
298
|
+
"install_requirement": "policyengine==6.2.6",
|
|
299
299
|
"name": "policyengine",
|
|
300
300
|
"role": "bundle_carrier",
|
|
301
|
-
"version": "6.2.
|
|
301
|
+
"version": "6.2.6"
|
|
302
302
|
},
|
|
303
303
|
"policyengine-core": {
|
|
304
304
|
"import_name": "policyengine_core",
|
|
305
|
-
"install_requirement": "policyengine-core==3.
|
|
305
|
+
"install_requirement": "policyengine-core==3.33.0",
|
|
306
306
|
"name": "policyengine-core",
|
|
307
307
|
"role": "runtime_dependency",
|
|
308
|
-
"version": "3.
|
|
308
|
+
"version": "3.33.0"
|
|
309
309
|
},
|
|
310
310
|
"policyengine-uk": {
|
|
311
311
|
"country": "uk",
|
|
312
312
|
"import_name": "policyengine_uk",
|
|
313
|
-
"install_requirement": "policyengine-uk==2.
|
|
313
|
+
"install_requirement": "policyengine-uk==2.125.1",
|
|
314
314
|
"name": "policyengine-uk",
|
|
315
315
|
"role": "country_model",
|
|
316
|
-
"version": "2.
|
|
316
|
+
"version": "2.125.1"
|
|
317
317
|
},
|
|
318
318
|
"policyengine-us": {
|
|
319
319
|
"country": "us",
|
|
@@ -334,6 +334,6 @@
|
|
|
334
334
|
"wheel_url": "https://files.pythonhosted.org/packages/19/a0/c484f69a0ebf88a9b9fd0ac28176f8df66550f46714f1b0c5ec0b360824e/spm_calculator-1.0.0-py3-none-any.whl"
|
|
335
335
|
}
|
|
336
336
|
},
|
|
337
|
-
"policyengine_version": "6.2.
|
|
337
|
+
"policyengine_version": "6.2.6",
|
|
338
338
|
"schema_version": 2
|
|
339
339
|
}
|
|
@@ -17,19 +17,19 @@
|
|
|
17
17
|
"schema:name": "PolicyEngine",
|
|
18
18
|
"schema:url": "https://policyengine.org"
|
|
19
19
|
},
|
|
20
|
-
"schema:dateCreated": "2026-
|
|
21
|
-
"schema:description": "TRACE TRO for certified runtime bundle uk-6.2.
|
|
20
|
+
"schema:dateCreated": "2026-10-07T17:31:53.189867Z",
|
|
21
|
+
"schema:description": "TRACE TRO for certified runtime bundle uk-6.2.6 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
|
|
22
22
|
"schema:name": "policyengine uk certified bundle TRO",
|
|
23
23
|
"trov:createdWith": {
|
|
24
24
|
"@type": "schema:SoftwareApplication",
|
|
25
25
|
"schema:name": "policyengine",
|
|
26
|
-
"schema:softwareVersion": "6.2.
|
|
26
|
+
"schema:softwareVersion": "6.2.6"
|
|
27
27
|
},
|
|
28
28
|
"trov:hasArrangement": [
|
|
29
29
|
{
|
|
30
30
|
"@id": "arrangement/1",
|
|
31
31
|
"@type": "trov:ArtifactArrangement",
|
|
32
|
-
"rdfs:comment": "Certified arrangement for bundle uk-6.2.
|
|
32
|
+
"rdfs:comment": "Certified arrangement for bundle uk-6.2.6.",
|
|
33
33
|
"trov:hasArtifactLocation": [
|
|
34
34
|
{
|
|
35
35
|
"@id": "arrangement/1/location/bundle_manifest",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"trov:hasArtifact": {
|
|
46
46
|
"@id": "composition/1/artifact/data_release_manifest"
|
|
47
47
|
},
|
|
48
|
-
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/
|
|
48
|
+
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/fdeba38517bd86067f34c0a5d8ed8923efb3b10a/releases/1.58.0/release_manifest.json"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"@id": "arrangement/1/location/dataset",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"trov:hasArtifact": {
|
|
54
54
|
"@id": "composition/1/artifact/dataset"
|
|
55
55
|
},
|
|
56
|
-
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/1.
|
|
56
|
+
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/1.58.0/enhanced_frs_2024_25.h5"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"@id": "arrangement/1/location/model_wheel",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"trov:hasArtifact": {
|
|
62
62
|
"@id": "composition/1/artifact/model_wheel"
|
|
63
63
|
},
|
|
64
|
-
"trov:hasLocation": "https://files.pythonhosted.org/packages/
|
|
64
|
+
"trov:hasLocation": "https://files.pythonhosted.org/packages/ec/3a/1d90bad4346d1a8c2715be211ed3d3d7f48917da0d90405b8257b7304091/policyengine_uk-2.125.1-py3-none-any.whl"
|
|
65
65
|
}
|
|
66
66
|
]
|
|
67
67
|
}
|
|
@@ -75,52 +75,52 @@
|
|
|
75
75
|
"@type": "trov:ResearchArtifact",
|
|
76
76
|
"schema:name": "policyengine.py bundle manifest for uk",
|
|
77
77
|
"trov:mimeType": "application/json",
|
|
78
|
-
"trov:sha256": "
|
|
78
|
+
"trov:sha256": "8633ad814c9c85e53c7c513f69c4c7b1500a03cd2f6ef133d6e2ea8346b2db54"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"@id": "composition/1/artifact/data_release_manifest",
|
|
82
82
|
"@type": "trov:ResearchArtifact",
|
|
83
|
-
"schema:name": "policyengine-uk-data release manifest 1.
|
|
83
|
+
"schema:name": "policyengine-uk-data release manifest 1.58.0",
|
|
84
84
|
"trov:mimeType": "application/json",
|
|
85
|
-
"trov:sha256": "
|
|
85
|
+
"trov:sha256": "ddd63e1f7755ee358c4ede9050bfdde09f3a80f48a5c0d8ee9d1fb531e4a1a07"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"@id": "composition/1/artifact/dataset",
|
|
89
89
|
"@type": "trov:ResearchArtifact",
|
|
90
90
|
"schema:name": "enhanced_frs_2024_25",
|
|
91
91
|
"trov:mimeType": "application/x-hdf5",
|
|
92
|
-
"trov:sha256": "
|
|
92
|
+
"trov:sha256": "5ba399ea5ab9a6c7d4e9aaf6c623080beb34d9ad5f330f6244dbad72b8d960b6"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"@id": "composition/1/artifact/model_wheel",
|
|
96
96
|
"@type": "trov:ResearchArtifact",
|
|
97
|
-
"schema:name": "policyengine-uk==2.
|
|
97
|
+
"schema:name": "policyengine-uk==2.125.1 wheel",
|
|
98
98
|
"trov:mimeType": "application/zip",
|
|
99
|
-
"trov:sha256": "
|
|
99
|
+
"trov:sha256": "a0983b4cef868467578a4fd0d163a977a0da8f710dd5194ec01c75f66d512c5a"
|
|
100
100
|
}
|
|
101
101
|
],
|
|
102
102
|
"trov:hasFingerprint": {
|
|
103
103
|
"@id": "composition/1/fingerprint",
|
|
104
104
|
"@type": "trov:CompositionFingerprint",
|
|
105
|
-
"trov:sha256": "
|
|
105
|
+
"trov:sha256": "e6c6d39c2dfcf28a1047e783f4a927673d0dfbcd84b5b305675e1de10e6c4050"
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
"trov:hasPerformance": {
|
|
109
109
|
"@id": "trp/1",
|
|
110
110
|
"@type": "trov:TransparentResearchPerformance",
|
|
111
|
-
"pe:builtWithModelGitSha": "
|
|
112
|
-
"pe:builtWithModelVersion": "2.
|
|
111
|
+
"pe:builtWithModelGitSha": "4cbedbecca352f52dffe47e849553c2759a00711",
|
|
112
|
+
"pe:builtWithModelVersion": "2.122.2",
|
|
113
113
|
"pe:certifiedBy": "policyengine.py bundle certification",
|
|
114
|
-
"pe:certifiedForModelVersion": "2.
|
|
114
|
+
"pe:certifiedForModelVersion": "2.125.1",
|
|
115
115
|
"pe:compatibilityBasis": "legacy_compatible_model_package",
|
|
116
|
-
"pe:dataBuildFingerprint": "sha256:
|
|
117
|
-
"pe:dataBuildId": "policyengine-uk-data-1.
|
|
116
|
+
"pe:dataBuildFingerprint": "sha256:c094d7006fdd81df220090284212f16bbffb15624643bc442c4bb3e1b1e5dac8",
|
|
117
|
+
"pe:dataBuildId": "policyengine-uk-data-1.58.0",
|
|
118
118
|
"pe:emittedIn": "repository-bundle",
|
|
119
|
-
"rdfs:comment": "Certification of build policyengine-uk-data-1.
|
|
119
|
+
"rdfs:comment": "Certification of build policyengine-uk-data-1.58.0 for policyengine-uk 2.125.1.",
|
|
120
120
|
"trov:accessedArrangement": {
|
|
121
121
|
"@id": "arrangement/1"
|
|
122
122
|
},
|
|
123
|
-
"trov:startedAtTime": "2026-
|
|
123
|
+
"trov:startedAtTime": "2026-10-07T17:31:53.189867Z",
|
|
124
124
|
"trov:wasConductedBy": {
|
|
125
125
|
"@id": "trs"
|
|
126
126
|
}
|
|
@@ -17,18 +17,18 @@
|
|
|
17
17
|
"schema:name": "PolicyEngine",
|
|
18
18
|
"schema:url": "https://policyengine.org"
|
|
19
19
|
},
|
|
20
|
-
"schema:description": "TRACE TRO for certified runtime bundle us-6.2.
|
|
20
|
+
"schema:description": "TRACE TRO for certified runtime bundle us-6.2.6 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.",
|
|
21
21
|
"schema:name": "policyengine us certified bundle TRO",
|
|
22
22
|
"trov:createdWith": {
|
|
23
23
|
"@type": "schema:SoftwareApplication",
|
|
24
24
|
"schema:name": "policyengine",
|
|
25
|
-
"schema:softwareVersion": "6.2.
|
|
25
|
+
"schema:softwareVersion": "6.2.6"
|
|
26
26
|
},
|
|
27
27
|
"trov:hasArrangement": [
|
|
28
28
|
{
|
|
29
29
|
"@id": "arrangement/1",
|
|
30
30
|
"@type": "trov:ArtifactArrangement",
|
|
31
|
-
"rdfs:comment": "Certified arrangement for bundle us-6.2.
|
|
31
|
+
"rdfs:comment": "Certified arrangement for bundle us-6.2.6.",
|
|
32
32
|
"trov:hasArtifactLocation": [
|
|
33
33
|
{
|
|
34
34
|
"@id": "arrangement/1/location/bundle_manifest",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@type": "trov:ResearchArtifact",
|
|
75
75
|
"schema:name": "policyengine.py bundle manifest for us",
|
|
76
76
|
"trov:mimeType": "application/json",
|
|
77
|
-
"trov:sha256": "
|
|
77
|
+
"trov:sha256": "8633ad814c9c85e53c7c513f69c4c7b1500a03cd2f6ef133d6e2ea8346b2db54"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"@id": "composition/1/artifact/data_release_manifest",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"trov:hasFingerprint": {
|
|
102
102
|
"@id": "composition/1/fingerprint",
|
|
103
103
|
"@type": "trov:CompositionFingerprint",
|
|
104
|
-
"trov:sha256": "
|
|
104
|
+
"trov:sha256": "4c980b674225037116186b6a8af9a22ff68f534b52dc05dc4519b2dbe2e9055c"
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
"trov:hasPerformance": {
|
{policyengine-6.2.4 → policyengine-6.2.6}/src/policyengine/tax_benefit_models/us/legacy_inputs.py
RENAMED
|
@@ -146,8 +146,9 @@ def apply_legacy_input_renames(
|
|
|
146
146
|
Every mapped table is checked before anything is set. Its ``{entity}_id``
|
|
147
147
|
column must list the simulation's entity IDs in the simulation's order,
|
|
148
148
|
and its stored values must be complete and, for a boolean live input,
|
|
149
|
-
boolean.
|
|
150
|
-
|
|
149
|
+
boolean. A temporary WIC-only exception assumes claiming for missing
|
|
150
|
+
decisions on explicitly identified ACS people. Missing donor decisions
|
|
151
|
+
and malformed stored values still raise ``ValueError``.
|
|
151
152
|
|
|
152
153
|
Applying the mapping again sets the same values, so it is idempotent.
|
|
153
154
|
|
|
@@ -165,7 +166,15 @@ def apply_legacy_input_renames(
|
|
|
165
166
|
continue
|
|
166
167
|
context = f"Cannot map stored {legacy!r} onto {live!r} for {year}"
|
|
167
168
|
_check_order(simulation, table, entity, context)
|
|
168
|
-
|
|
169
|
+
stored = table[legacy]
|
|
170
|
+
if (
|
|
171
|
+
legacy == "would_claim_wic"
|
|
172
|
+
and live == "takes_up_wic_if_eligible"
|
|
173
|
+
and entity == "person"
|
|
174
|
+
and variable.value_type is bool
|
|
175
|
+
):
|
|
176
|
+
stored = _temporary_acs_wic_values(table, context)
|
|
177
|
+
values = _live_values(stored, variable, context)
|
|
169
178
|
periods = _periods_of_year(int(year), variable.definition_period, context)
|
|
170
179
|
planned.append((legacy, live, periods, values))
|
|
171
180
|
|
|
@@ -347,6 +356,34 @@ def _check_order(simulation, table: pd.DataFrame, entity: str, context: str) ->
|
|
|
347
356
|
)
|
|
348
357
|
|
|
349
358
|
|
|
359
|
+
def _temporary_acs_wic_values(table: pd.DataFrame, context: str) -> pd.Series:
|
|
360
|
+
"""Preserve stored decisions; assume claiming only for missing ACS cells."""
|
|
361
|
+
stored = table["would_claim_wic"]
|
|
362
|
+
missing = stored.isna()
|
|
363
|
+
if not missing.any():
|
|
364
|
+
return stored
|
|
365
|
+
channel = "person_support_channel"
|
|
366
|
+
if channel not in table or not (
|
|
367
|
+
table.loc[missing, channel].eq("acs_2024_1yr").fillna(False).all()
|
|
368
|
+
):
|
|
369
|
+
raise ValueError(
|
|
370
|
+
f"{context}: the stored column has missing values outside "
|
|
371
|
+
"explicitly identified ACS people."
|
|
372
|
+
)
|
|
373
|
+
# TEMPORARY ACS WIC COMPATIBILITY — REMOVE AS SOON AS POSSIBLE.
|
|
374
|
+
# Replacement dataset: https://github.com/PolicyEngine/microcosm/issues/1154
|
|
375
|
+
# Prepared removal: https://github.com/PolicyEngine/policyengine.py/pull/563
|
|
376
|
+
# The currently certified ACS-local dataset did not generate WIC
|
|
377
|
+
# participation decisions for ACS people. For missing ACS decisions only,
|
|
378
|
+
# assume that every eligible person claims WIC.
|
|
379
|
+
# This is an explicit modelling assumption, not observed participation.
|
|
380
|
+
# Replace the dataset with a corrected Microcosm release and DELETE
|
|
381
|
+
# this exception immediately after that replacement is certified.
|
|
382
|
+
# Nullable numeric columns reject boolean replacement values. Preserve the
|
|
383
|
+
# original decisions as objects; _live_values still validates before casting.
|
|
384
|
+
return stored.astype(object).mask(missing, True)
|
|
385
|
+
|
|
386
|
+
|
|
350
387
|
def _live_values(stored: pd.Series, variable: Any, context: str) -> np.ndarray:
|
|
351
388
|
if stored.isna().any():
|
|
352
389
|
raise ValueError(f"{context}: the stored column has missing values.")
|
|
@@ -356,6 +393,15 @@ def _live_values(stored: pd.Series, variable: Any, context: str) -> np.ndarray:
|
|
|
356
393
|
return np.asarray(stored.to_numpy(dtype=bool))
|
|
357
394
|
if pd.api.types.is_numeric_dtype(stored.dtype) and stored.isin((0, 1)).all():
|
|
358
395
|
return np.asarray(stored.to_numpy(), dtype=bool)
|
|
396
|
+
# Nullable legacy H5 columns may contain genuine booleans and numeric 0/1
|
|
397
|
+
# as objects. Validate each value before casting: bool("False") is True.
|
|
398
|
+
if stored.map(
|
|
399
|
+
lambda value: (
|
|
400
|
+
isinstance(value, bool | np.bool_ | int | np.integer | float | np.floating)
|
|
401
|
+
and value in (0, 1)
|
|
402
|
+
)
|
|
403
|
+
).all():
|
|
404
|
+
return np.asarray(stored.to_numpy(), dtype=bool)
|
|
359
405
|
raise ValueError(f"{context}: the stored values are not boolean.")
|
|
360
406
|
|
|
361
407
|
|