policyengine 5.0.2__tar.gz → 5.0.4__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.
Potentially problematic release.
This version of policyengine might be problematic. Click here for more details.
- {policyengine-5.0.2 → policyengine-5.0.4}/CHANGELOG.md +21 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/PKG-INFO +8 -8
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/countries.md +1 -1
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/engineering/skills/data-certification.md +1 -1
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/reference/index.md +8 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/release-bundles.md +1 -1
- {policyengine-5.0.2 → policyengine-5.0.4}/pyproject.toml +8 -8
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/parameter.py +27 -12
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/bundle/manifest.json +96 -62
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/bundle/uk.trace.tro.jsonld +22 -20
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/bundle/us.trace.tro.jsonld +5 -5
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/certification.py +4 -1
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/PKG-INFO +8 -8
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/SOURCES.txt +1 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/requires.txt +7 -7
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/uk_model_surface.json +2 -2
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_bundle.py +12 -6
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_bundle_metadata.py +6 -6
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_certify_data_release.py +1 -1
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_models.py +33 -5
- policyengine-5.0.4/tests/test_parameter_values.py +138 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_parametric_reforms.py +25 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_release_manifests.py +35 -19
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_uk_regions.py +2 -2
- {policyengine-5.0.2 → policyengine-5.0.4}/uv.lock +14 -14
- {policyengine-5.0.2 → policyengine-5.0.4}/.claude/policyengine-guide.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.claude/quick-reference.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/CONTRIBUTING.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/bump_version.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/capture-version.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/changelog_template.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/check-changelog.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/copilot-instructions.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/dispatch-policyengine-release.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/fetch_version.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/get-changelog-diff.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/has-functional-changes.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/is-version-number-acceptable.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/publish-git-tag.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/wait-for-pypi.sh +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/workflows/draft-pdf.yml +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/workflows/pr_code_changes.yaml +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/workflows/pr_docs_changes.yaml +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.github/workflows/push.yaml +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.gitignore +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/.python-version +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/AGENTS.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/CITATION.cff +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/CLAUDE.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/CODE_OF_CONDUCT.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/CONTRIBUTING.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/LICENSE +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/Makefile +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/README.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/architecture.png +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/architecture.svg +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/changelog.d/.gitkeep +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/.gitignore +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/_generator/README.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/_generator/build_reference.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/_quarto.yml +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/bundles.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/data-publishing-design.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/decile-impact-spec.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/dev.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/engineering/runbooks/build-m-us-populace-certification.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/engineering/skills/README.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/engineering/skills/github-prs.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/engineering/skills/repository-guidance.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/examples.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/getting-started.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/households.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/impact-analysis.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/index.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/methodology/index.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/methodology/model-architecture.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/methodology/us-health-costs.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/microsim.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/outputs.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/programs/index.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/programs/us-chip.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/reforms.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/regions.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/run-records.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/trace-case-study.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/docs/visualisation.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/employment_income_variation_uk.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/employment_income_variation_us.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/household_impact_example.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/income_bands_uk.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/income_distribution_us.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/paper_repro_uk.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/policy_change_uk.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/speedtest_us_simulation.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/examples/us_budgetary_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/paper-preview.html +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/paper.bib +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/paper.md +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/bundle.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/certify_data_release.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/check_data_staleness.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/export_bundle_release_assets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/generate_bundle_artifacts.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/generate_trace_tros.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/scripts/prepare_package_bundle_update.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/setup.cfg +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/bundle.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/cli.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/cache.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/dataset.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/dynamic.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/output.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/parameter_node.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/parameter_value.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/policy.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/region.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/run_record.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/scoping_strategy.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/simulation.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/tax_benefit_model.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/tax_benefit_model_version.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/core/variable.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/uk/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/uk/regions.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/data/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/data/districts.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/data/places.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/data/states.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/countries/us/regions.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/schemas/trace_tro.schema.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/data/uk_geography_assets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/derivations/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/derivations/narrate.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/derivations/trace.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/graph/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/graph/extractor.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/graph/graph.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/aggregate.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/change_aggregate.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/cliff_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/congressional_district_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/constituency_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/decile_analysis.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/decile_grouping.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/decile_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/extra_variables.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/inequality.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/intra_decile_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/labor_supply_response.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/local_authority_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/poverty.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/program_statistics.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/uk_geography_assets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/outputs/uk_geography_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/dataset_sources.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/manifest.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/pyproject_pins.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/trace.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/verify.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/provenance/zenodo.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/results/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/results/schema.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/results/trace_tro.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/results/tracking.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/axes.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/extra_variables.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/household.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/model_version.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/reform.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/common/result.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/uk/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/uk/analysis.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/uk/datasets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/uk/household.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/uk/model.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/us/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/us/analysis.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/us/datasets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/us/household.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/tax_benefit_models/us/model.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/data/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/data/caching_google_storage_client.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/data/version_aware_storage_client.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/dates.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/design.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/entity_utils.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/errors.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/google_cloud_bucket.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/household_validation.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/parameter_labels.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/parametric_reforms.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine/utils/plotting.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/dependency_links.txt +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/entry_points.txt +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/src/policyengine.egg-info/top_level.txt +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/conftest.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/filtering_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/uk_couple_two_kids.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/uk_single_adult_employment_income.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/uk_single_adult_no_income.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/uk_single_parent_one_child.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/us_married_two_kids_high_income.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/us_model_surface.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/us_single_adult_employment_income.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/us_single_adult_no_income.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/household_calculator_snapshots/us_single_parent_one_child.json +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/parameter_labels_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/parametric_reforms_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/poverty_by_demographics_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/region_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/us_reform_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/fixtures/variable_label_fixtures.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_aggregate.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_budgetary_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_bump_version.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_cache.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_change_aggregate.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_cliff_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_cliff_impact_analysis.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_congressional_district_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_constituency_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_dataset_persistence.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_dataset_sources.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_decile_grouping.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_derivations.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_dict_reforms_on_simulation.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_entity_mapping.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_entity_utils.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_entity_utils_characterization.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_errors.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_extra_variables.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_filtering.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_graph/__init__.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_graph/conftest.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_graph/test_extractor.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_household_calculator_snapshot.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_household_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_inequality.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_intra_decile_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_labor_supply_response.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_local_authority_impact.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_manifest_version_mismatch.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_pandas3_compatibility.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_parameter_labels.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_poverty.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_poverty_by_demographics.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_poverty_run.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_preservation_mirror.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_program_statistics.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_pyproject_pins.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_region.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_region_group_strategy.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_results.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_run_record.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_scoping_strategy.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_small_follow_ups.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_trace_tro.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_trace_tro_verify.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_uk_analysis.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_uk_geography_assets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_uk_program_statistics.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_us_long_term_datasets.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_us_microsim_structural_reforms.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_us_program_statistics.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_us_reform_application.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_us_regions.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_variable_labels.py +0 -0
- {policyengine-5.0.2 → policyengine-5.0.4}/tests/test_zenodo_mirror.py +0 -0
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [5.0.4] - 2026-08-27
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- Fixed `Parameter.parameter_values` to return oldest-first, non-overlapping
|
|
6
|
+
histories with inclusive end dates instead of reversed intervals derived from
|
|
7
|
+
PolicyEngine Core's newest-first storage.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [5.0.3] - 2026-08-21
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Certify the UK populace data release `policyengine-uk-data-1.56.16` (enhanced_frs_2024_25, policyengine-uk 2.90.2) into the PolicyEngine bundle manifest.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Update the certified bundle to policyengine-uk 2.90.2 (Universal Credit deductions: Fair Repayment Rate cap, protected floor and abolition reform levers) and policyengine-core 3.30.1.
|
|
19
|
+
- Update the certified PolicyEngine bundle pins.
|
|
20
|
+
|
|
21
|
+
|
|
1
22
|
## [5.0.2] - 2026-08-14
|
|
2
23
|
|
|
3
24
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: policyengine
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.4
|
|
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
|
|
@@ -689,14 +689,14 @@ Requires-Dist: plotly>=5.0.0; extra == "plotting"
|
|
|
689
689
|
Provides-Extra: graph
|
|
690
690
|
Requires-Dist: networkx>=3.0; extra == "graph"
|
|
691
691
|
Provides-Extra: models
|
|
692
|
-
Requires-Dist: policyengine-core==3.30.
|
|
692
|
+
Requires-Dist: policyengine-core==3.30.1; extra == "models"
|
|
693
693
|
Requires-Dist: policyengine-us==1.764.6; extra == "models"
|
|
694
|
-
Requires-Dist: policyengine-uk==2.
|
|
694
|
+
Requires-Dist: policyengine-uk==2.90.2; extra == "models"
|
|
695
695
|
Provides-Extra: uk
|
|
696
|
-
Requires-Dist: policyengine-core==3.30.
|
|
697
|
-
Requires-Dist: policyengine-uk==2.
|
|
696
|
+
Requires-Dist: policyengine-core==3.30.1; extra == "uk"
|
|
697
|
+
Requires-Dist: policyengine-uk==2.90.2; extra == "uk"
|
|
698
698
|
Provides-Extra: us
|
|
699
|
-
Requires-Dist: policyengine-core==3.30.
|
|
699
|
+
Requires-Dist: policyengine-core==3.30.1; extra == "us"
|
|
700
700
|
Requires-Dist: policyengine-us==1.764.6; extra == "us"
|
|
701
701
|
Provides-Extra: dev
|
|
702
702
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -712,9 +712,9 @@ Requires-Dist: ruff>=0.9.0; extra == "dev"
|
|
|
712
712
|
Requires-Dist: towncrier>=24.8.0; extra == "dev"
|
|
713
713
|
Requires-Dist: mypy>=1.11.0; extra == "dev"
|
|
714
714
|
Requires-Dist: pytest-cov>=5.0.0; extra == "dev"
|
|
715
|
-
Requires-Dist: policyengine-core==3.30.
|
|
715
|
+
Requires-Dist: policyengine-core==3.30.1; extra == "dev"
|
|
716
716
|
Requires-Dist: policyengine-us==1.764.6; extra == "dev"
|
|
717
|
-
Requires-Dist: policyengine-uk==2.
|
|
717
|
+
Requires-Dist: policyengine-uk==2.90.2; extra == "dev"
|
|
718
718
|
Dynamic: license-file
|
|
719
719
|
|
|
720
720
|
# PolicyEngine.py
|
|
@@ -33,7 +33,7 @@ Override in any output with `income_variable=`.
|
|
|
33
33
|
| | Dataset |
|
|
34
34
|
|---|---|
|
|
35
35
|
| US | Populace US 2024 (`populace_us_2024.h5`) |
|
|
36
|
-
| UK |
|
|
36
|
+
| UK | Enhanced FRS 2024-25 (`enhanced_frs_2024_25.h5`, policyengine-uk-data) |
|
|
37
37
|
|
|
38
38
|
## State / regional breakdown
|
|
39
39
|
|
|
@@ -80,7 +80,7 @@ state overlay artifacts when `--regional-manifest-uri` is used, unknown country.
|
|
|
80
80
|
Certification gate: the model version must either exactly match the
|
|
81
81
|
build-time model (`compatibility_basis: built_with_model_package`) or be
|
|
82
82
|
covered by the publisher's `compatible_model_packages` claim
|
|
83
|
-
(`compatibility_basis:
|
|
83
|
+
(`compatibility_basis: legacy_compatible_model_package`, recorded with a
|
|
84
84
|
warning — the publisher's claim is made good only by this repo's test
|
|
85
85
|
suite passing on the pinned pair). Neither basis means certification is
|
|
86
86
|
refused: a new data build or a published compatibility claim is required.
|
|
@@ -4,6 +4,14 @@ title: "Reference"
|
|
|
4
4
|
|
|
5
5
|
Reference pages are generated from the installed country-model packages. Authored methodology pages explain why the model is structured the way it is; generated reference pages expose the exact release contents.
|
|
6
6
|
|
|
7
|
+
## Parameter history contract
|
|
8
|
+
|
|
9
|
+
`model.get_parameter(name).parameter_values` exposes effective values from
|
|
10
|
+
oldest to newest. Each bounded value has an inclusive `end_date` equal to the
|
|
11
|
+
day before the next value starts, while the newest value has `end_date=None`.
|
|
12
|
+
If the underlying Core history contains duplicate effective starts, the public
|
|
13
|
+
history contains the first value Core would select for that date.
|
|
14
|
+
|
|
7
15
|
## What generated reference should include
|
|
8
16
|
|
|
9
17
|
The variable reference generator already reads the installed country model and can emit:
|
|
@@ -544,7 +544,7 @@ Things that should usually not affect the fingerprint:
|
|
|
544
544
|
1. the model version exactly matches the `built_with_model_package.version`
|
|
545
545
|
(`compatibility_basis: built_with_model_package`)
|
|
546
546
|
2. the data publisher's `compatible_model_packages` covers the model version
|
|
547
|
-
(`compatibility_basis:
|
|
547
|
+
(`compatibility_basis: legacy_compatible_model_package` — the publisher's claim,
|
|
548
548
|
recorded with a warning and made good by the test suite passing on the
|
|
549
549
|
pinned pair)
|
|
550
550
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "policyengine"
|
|
7
|
-
version = "5.0.
|
|
7
|
+
version = "5.0.4"
|
|
8
8
|
description = "A package to conduct policy analysis using PolicyEngine tax-benefit models."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -44,16 +44,16 @@ graph = [
|
|
|
44
44
|
"networkx>=3.0",
|
|
45
45
|
]
|
|
46
46
|
models = [
|
|
47
|
-
"policyengine-core==3.30.
|
|
47
|
+
"policyengine-core==3.30.1",
|
|
48
48
|
"policyengine-us==1.764.6",
|
|
49
|
-
"policyengine-uk==2.
|
|
49
|
+
"policyengine-uk==2.90.2",
|
|
50
50
|
]
|
|
51
51
|
uk = [
|
|
52
|
-
"policyengine-core==3.30.
|
|
53
|
-
"policyengine-uk==2.
|
|
52
|
+
"policyengine-core==3.30.1",
|
|
53
|
+
"policyengine-uk==2.90.2",
|
|
54
54
|
]
|
|
55
55
|
us = [
|
|
56
|
-
"policyengine-core==3.30.
|
|
56
|
+
"policyengine-core==3.30.1",
|
|
57
57
|
"policyengine-us==1.764.6",
|
|
58
58
|
]
|
|
59
59
|
dev = [
|
|
@@ -70,9 +70,9 @@ dev = [
|
|
|
70
70
|
"towncrier>=24.8.0",
|
|
71
71
|
"mypy>=1.11.0",
|
|
72
72
|
"pytest-cov>=5.0.0",
|
|
73
|
-
"policyengine-core==3.30.
|
|
73
|
+
"policyengine-core==3.30.1",
|
|
74
74
|
"policyengine-us==1.764.6",
|
|
75
|
-
"policyengine-uk==2.
|
|
75
|
+
"policyengine-uk==2.90.2",
|
|
76
76
|
]
|
|
77
77
|
|
|
78
78
|
[tool.setuptools]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from datetime import datetime, timedelta
|
|
1
2
|
from typing import TYPE_CHECKING, Any, Optional
|
|
2
3
|
from uuid import uuid4
|
|
3
4
|
|
|
@@ -32,25 +33,39 @@ class Parameter(BaseModel):
|
|
|
32
33
|
|
|
33
34
|
@property
|
|
34
35
|
def parameter_values(self) -> list["ParameterValue"]:
|
|
35
|
-
"""Lazily build parameter
|
|
36
|
+
"""Lazily build the effective parameter history on first access.
|
|
37
|
+
|
|
38
|
+
Values are ordered from oldest to newest. ``end_date`` is inclusive,
|
|
39
|
+
so each bounded value ends one day before the next value starts and the
|
|
40
|
+
newest value remains open-ended. When Core exposes duplicate effective
|
|
41
|
+
starts, retain the first entry because Core's lookup uses the first
|
|
42
|
+
matching entry as the effective value.
|
|
43
|
+
"""
|
|
36
44
|
if self._parameter_values is None:
|
|
37
45
|
self._parameter_values = []
|
|
38
46
|
if self._core_param is not None:
|
|
39
47
|
from policyengine.utils import parse_safe_date
|
|
40
48
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
effective_values: dict[datetime, Any] = {}
|
|
50
|
+
for value_at_instant in self._core_param.values_list:
|
|
51
|
+
start_date = parse_safe_date(value_at_instant.instant_str)
|
|
52
|
+
effective_values.setdefault(start_date, value_at_instant)
|
|
53
|
+
|
|
54
|
+
chronological_values = sorted(effective_values.items())
|
|
55
|
+
for index, (start_date, value_at_instant) in enumerate(
|
|
56
|
+
chronological_values
|
|
57
|
+
):
|
|
58
|
+
next_index = index + 1
|
|
59
|
+
end_date = (
|
|
60
|
+
chronological_values[next_index][0] - timedelta(days=1)
|
|
61
|
+
if next_index < len(chronological_values)
|
|
62
|
+
else None
|
|
63
|
+
)
|
|
47
64
|
pv = ParameterValue(
|
|
48
65
|
parameter=self,
|
|
49
|
-
start_date=
|
|
50
|
-
end_date=
|
|
51
|
-
|
|
52
|
-
else None,
|
|
53
|
-
value=param_at_instant.value,
|
|
66
|
+
start_date=start_date,
|
|
67
|
+
end_date=end_date,
|
|
68
|
+
value=value_at_instant.value,
|
|
54
69
|
)
|
|
55
70
|
self._parameter_values.append(pv)
|
|
56
71
|
return self._parameter_values
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bundle_version": "5.0.
|
|
2
|
+
"bundle_version": "5.0.4",
|
|
3
3
|
"citation": {
|
|
4
4
|
"publisher": "PolicyEngine",
|
|
5
|
-
"title": "PolicyEngine bundle 5.0.
|
|
5
|
+
"title": "PolicyEngine bundle 5.0.4",
|
|
6
6
|
"type": "software-bundle",
|
|
7
|
-
"version": "5.0.
|
|
7
|
+
"version": "5.0.4"
|
|
8
8
|
},
|
|
9
9
|
"countries": {
|
|
10
10
|
"uk": {
|
|
@@ -16,89 +16,103 @@
|
|
|
16
16
|
},
|
|
17
17
|
"data_releases": {
|
|
18
18
|
"uk": {
|
|
19
|
-
"build_id": "
|
|
20
|
-
"bundle_id": "uk-5.0.
|
|
19
|
+
"build_id": "policyengine-uk-data-1.56.16",
|
|
20
|
+
"bundle_id": "uk-5.0.4",
|
|
21
21
|
"certification": {
|
|
22
|
+
"built_with_model_git_sha": "12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3",
|
|
22
23
|
"built_with_model_version": "2.89.2",
|
|
23
24
|
"certified_by": "policyengine.py bundle certification",
|
|
24
|
-
"certified_for_model_version": "2.
|
|
25
|
-
"compatibility_basis": "
|
|
26
|
-
"
|
|
25
|
+
"certified_for_model_version": "2.90.2",
|
|
26
|
+
"compatibility_basis": "legacy_compatible_model_package",
|
|
27
|
+
"data_build_fingerprint": "sha256:6bfff835b504094c05342d2b4d770d2d94c8c1adcb15c4468931f53b21a89ea9",
|
|
28
|
+
"data_build_id": "policyengine-uk-data-1.56.16"
|
|
27
29
|
},
|
|
28
30
|
"certified_data_artifact": {
|
|
29
|
-
"build_id": "
|
|
31
|
+
"build_id": "policyengine-uk-data-1.56.16",
|
|
30
32
|
"data_package": {
|
|
31
|
-
"name": "
|
|
32
|
-
"version": "
|
|
33
|
+
"name": "policyengine-uk-data",
|
|
34
|
+
"version": "1.56.16"
|
|
33
35
|
},
|
|
34
|
-
"dataset": "
|
|
35
|
-
"sha256": "
|
|
36
|
-
"uri": "hf://policyengine/
|
|
36
|
+
"dataset": "enhanced_frs_2024_25",
|
|
37
|
+
"sha256": "e433e532b17bd8ce76030156285816e33d44e93edabd2204adbef71d19a68712",
|
|
38
|
+
"uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.56.16"
|
|
37
39
|
},
|
|
38
40
|
"country_id": "uk",
|
|
39
41
|
"data_package": {
|
|
40
|
-
"name": "
|
|
41
|
-
"release_manifest_path": "releases/
|
|
42
|
-
"release_manifest_revision": "
|
|
43
|
-
"repo_id": "policyengine/
|
|
44
|
-
"repo_type": "
|
|
45
|
-
"version": "
|
|
42
|
+
"name": "policyengine-uk-data",
|
|
43
|
+
"release_manifest_path": "releases/1.56.16/release_manifest.json",
|
|
44
|
+
"release_manifest_revision": "2966541fca275ab5ccb6cfb659b010b1db37ad49",
|
|
45
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
46
|
+
"repo_type": "model",
|
|
47
|
+
"version": "1.56.16"
|
|
46
48
|
},
|
|
47
49
|
"data_producer": "populace",
|
|
48
50
|
"datasets": {
|
|
49
|
-
"
|
|
50
|
-
"path": "
|
|
51
|
-
"repo_id": "policyengine/
|
|
52
|
-
"revision": "
|
|
53
|
-
"sha256": "
|
|
51
|
+
"enhanced_frs_2024_25": {
|
|
52
|
+
"path": "enhanced_frs_2024_25.h5",
|
|
53
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
54
|
+
"revision": "1.56.16",
|
|
55
|
+
"sha256": "e433e532b17bd8ce76030156285816e33d44e93edabd2204adbef71d19a68712"
|
|
54
56
|
},
|
|
55
|
-
"
|
|
56
|
-
"path": "
|
|
57
|
+
"enhanced_frs_2024_25_tiny": {
|
|
58
|
+
"path": "enhanced_frs_2024_25_tiny.h5",
|
|
57
59
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
58
|
-
"revision": "
|
|
59
|
-
"sha256": "
|
|
60
|
+
"revision": "1.56.16",
|
|
61
|
+
"sha256": "6cbbda7eef1b0b16d62e24a3099dc7959906287d659868d31aa7fc82af598871"
|
|
60
62
|
},
|
|
61
|
-
"
|
|
62
|
-
"path": "
|
|
63
|
+
"frs_2024_25": {
|
|
64
|
+
"path": "frs_2024_25.h5",
|
|
63
65
|
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
64
|
-
"revision": "
|
|
65
|
-
"sha256": "
|
|
66
|
+
"revision": "1.56.16",
|
|
67
|
+
"sha256": "d4d29901d7ea0c1f636060d4177a411a39c1977fa9fd23a61af3bb0f030769bd"
|
|
66
68
|
},
|
|
67
|
-
"
|
|
68
|
-
"path": "
|
|
69
|
-
"repo_id": "policyengine/
|
|
70
|
-
"revision": "
|
|
71
|
-
"sha256": "
|
|
69
|
+
"frs_2024_25_tiny": {
|
|
70
|
+
"path": "frs_2024_25_tiny.h5",
|
|
71
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
72
|
+
"revision": "1.56.16",
|
|
73
|
+
"sha256": "74ca086be959b2942ecbf7755034d94dc6a817f4d9d54f2585a1c6df849d9588"
|
|
72
74
|
},
|
|
73
|
-
"
|
|
74
|
-
"path": "
|
|
75
|
-
"repo_id": "policyengine/
|
|
76
|
-
"revision": "
|
|
77
|
-
"sha256": "
|
|
75
|
+
"local_authority_weights": {
|
|
76
|
+
"path": "local_authority_weights.h5",
|
|
77
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
78
|
+
"revision": "1.56.16",
|
|
79
|
+
"sha256": "6d634d69fb472b80cc17ffe696e028c54d7b739166bb7d9a57860f9d73537aa5"
|
|
80
|
+
},
|
|
81
|
+
"local_geography_weights": {
|
|
82
|
+
"path": "local_geography_weights.csv.gz",
|
|
83
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
84
|
+
"revision": "1.56.16",
|
|
85
|
+
"sha256": "6f623e277089d06c2c50ec3d8ab766635f695c8579d360410e3dcb4214ea9709"
|
|
86
|
+
},
|
|
87
|
+
"parliamentary_constituency_weights": {
|
|
88
|
+
"path": "parliamentary_constituency_weights.h5",
|
|
89
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
90
|
+
"revision": "1.56.16",
|
|
91
|
+
"sha256": "6870c36072a0c34d2e6ce3ebf58664b7932ca46a9e3808d387988773e63b66d5"
|
|
78
92
|
}
|
|
79
93
|
},
|
|
80
|
-
"default_dataset": "
|
|
81
|
-
"default_dataset_uri": "hf://policyengine/
|
|
94
|
+
"default_dataset": "enhanced_frs_2024_25",
|
|
95
|
+
"default_dataset_uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@1.56.16",
|
|
82
96
|
"model_package": {
|
|
83
97
|
"name": "policyengine-uk",
|
|
84
|
-
"sha256": "
|
|
85
|
-
"version": "2.
|
|
86
|
-
"wheel_url": "https://files.pythonhosted.org/packages/
|
|
98
|
+
"sha256": "f100ef97e20b29b84138078f1dbc5b83f8857e6bc74b745fc6abef7ea1eeadf2",
|
|
99
|
+
"version": "2.90.2",
|
|
100
|
+
"wheel_url": "https://files.pythonhosted.org/packages/ec/da/658bff2df6094bd7bf2b0f561ff60fd41508adbd0a3af29b4553c83bc678/policyengine_uk-2.90.2-py3-none-any.whl"
|
|
87
101
|
},
|
|
88
|
-
"policyengine_version": "5.0.
|
|
102
|
+
"policyengine_version": "5.0.4",
|
|
89
103
|
"region_datasets": {
|
|
90
104
|
"national": {
|
|
91
|
-
"path_template": "
|
|
105
|
+
"path_template": "enhanced_frs_2024_25.h5"
|
|
92
106
|
}
|
|
93
107
|
},
|
|
94
|
-
"release_manifest_uri": "https://huggingface.co/
|
|
108
|
+
"release_manifest_uri": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/2966541fca275ab5ccb6cfb659b010b1db37ad49/releases/1.56.16/release_manifest.json",
|
|
95
109
|
"schema_version": 1,
|
|
96
|
-
"source_manifest_uri": "hf://
|
|
97
|
-
"version": "
|
|
110
|
+
"source_manifest_uri": "hf://model/policyengine/policyengine-uk-data-private@2966541fca275ab5ccb6cfb659b010b1db37ad49/releases/1.56.16/release_manifest.json",
|
|
111
|
+
"version": "policyengine-uk-data-1.56.16"
|
|
98
112
|
},
|
|
99
113
|
"us": {
|
|
100
114
|
"build_id": "populace-us-2024-buildp-sparse-rmloss100-cae8640-20260728T011454Z",
|
|
101
|
-
"bundle_id": "us-5.0.
|
|
115
|
+
"bundle_id": "us-5.0.4",
|
|
102
116
|
"certification": {
|
|
103
117
|
"built_with_model_version": "1.764.6",
|
|
104
118
|
"certified_by": "policyengine.py bundle certification",
|
|
@@ -172,7 +186,7 @@
|
|
|
172
186
|
"version": "1.764.6",
|
|
173
187
|
"wheel_url": "https://files.pythonhosted.org/packages/e2/5a/0566666f30ad06e416f0cf25b24bdee73acd71897fb2de3c0ac43b59e3e3/policyengine_us-1.764.6-py3-none-any.whl"
|
|
174
188
|
},
|
|
175
|
-
"policyengine_version": "5.0.
|
|
189
|
+
"policyengine_version": "5.0.4",
|
|
176
190
|
"region_datasets": {
|
|
177
191
|
"national": {
|
|
178
192
|
"path_template": "populace_us_2024.h5"
|
|
@@ -185,6 +199,26 @@
|
|
|
185
199
|
}
|
|
186
200
|
},
|
|
187
201
|
"dataset_overlays": {
|
|
202
|
+
"uk": {
|
|
203
|
+
"enhanced_frs_2023_24": {
|
|
204
|
+
"path": "enhanced_frs_2023_24.h5",
|
|
205
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
206
|
+
"revision": "655dd07e4bb9c777b00dac044949611f1feb824f",
|
|
207
|
+
"sha256": "584ae33d80ca0431254610a3f8254d132da73477d31966d6446282861ecae50d"
|
|
208
|
+
},
|
|
209
|
+
"frs_2023_24": {
|
|
210
|
+
"path": "frs_2023_24.h5",
|
|
211
|
+
"repo_id": "policyengine/policyengine-uk-data-private",
|
|
212
|
+
"revision": "655dd07e4bb9c777b00dac044949611f1feb824f",
|
|
213
|
+
"sha256": "df26d4d7af9d164aa2d064181b39290292d2f62bb26fee6126fc095fc06da292"
|
|
214
|
+
},
|
|
215
|
+
"populace_uk_2023": {
|
|
216
|
+
"path": "populace_uk_2023.h5",
|
|
217
|
+
"repo_id": "policyengine/populace-uk-private",
|
|
218
|
+
"revision": "populace-uk-2023-dd68c73-4aa4b14-20260619T023711Z",
|
|
219
|
+
"sha256": "f17306ccb2aad7ff0130be3589b560afb2e2a12a943570911cd0c77f07934833"
|
|
220
|
+
}
|
|
221
|
+
},
|
|
188
222
|
"us": {
|
|
189
223
|
"populace_us_2024_acs_local": {
|
|
190
224
|
"path": "populace_us_2024_acs_local.h5",
|
|
@@ -212,25 +246,25 @@
|
|
|
212
246
|
"packages": {
|
|
213
247
|
"policyengine": {
|
|
214
248
|
"import_name": "policyengine",
|
|
215
|
-
"install_requirement": "policyengine==5.0.
|
|
249
|
+
"install_requirement": "policyengine==5.0.4",
|
|
216
250
|
"name": "policyengine",
|
|
217
251
|
"role": "bundle_carrier",
|
|
218
|
-
"version": "5.0.
|
|
252
|
+
"version": "5.0.4"
|
|
219
253
|
},
|
|
220
254
|
"policyengine-core": {
|
|
221
255
|
"import_name": "policyengine_core",
|
|
222
|
-
"install_requirement": "policyengine-core==3.30.
|
|
256
|
+
"install_requirement": "policyengine-core==3.30.1",
|
|
223
257
|
"name": "policyengine-core",
|
|
224
258
|
"role": "runtime_dependency",
|
|
225
|
-
"version": "3.30.
|
|
259
|
+
"version": "3.30.1"
|
|
226
260
|
},
|
|
227
261
|
"policyengine-uk": {
|
|
228
262
|
"country": "uk",
|
|
229
263
|
"import_name": "policyengine_uk",
|
|
230
|
-
"install_requirement": "policyengine-uk==2.
|
|
264
|
+
"install_requirement": "policyengine-uk==2.90.2",
|
|
231
265
|
"name": "policyengine-uk",
|
|
232
266
|
"role": "country_model",
|
|
233
|
-
"version": "2.
|
|
267
|
+
"version": "2.90.2"
|
|
234
268
|
},
|
|
235
269
|
"policyengine-us": {
|
|
236
270
|
"country": "us",
|
|
@@ -241,6 +275,6 @@
|
|
|
241
275
|
"version": "1.764.6"
|
|
242
276
|
}
|
|
243
277
|
},
|
|
244
|
-
"policyengine_version": "5.0.
|
|
278
|
+
"policyengine_version": "5.0.4",
|
|
245
279
|
"schema_version": 2
|
|
246
280
|
}
|
|
@@ -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-5.0.
|
|
20
|
+
"schema:dateCreated": "2026-08-18T14:20:32.100961Z",
|
|
21
|
+
"schema:description": "TRACE TRO for certified runtime bundle uk-5.0.4 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": "5.0.
|
|
26
|
+
"schema:softwareVersion": "5.0.4"
|
|
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-5.0.
|
|
32
|
+
"rdfs:comment": "Certified arrangement for bundle uk-5.0.4.",
|
|
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/
|
|
48
|
+
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/2966541fca275ab5ccb6cfb659b010b1db37ad49/releases/1.56.16/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/
|
|
56
|
+
"trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/1.56.16/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/da/658bff2df6094bd7bf2b0f561ff60fd41508adbd0a3af29b4553c83bc678/policyengine_uk-2.90.2-py3-none-any.whl"
|
|
65
65
|
}
|
|
66
66
|
]
|
|
67
67
|
}
|
|
@@ -75,50 +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": "7906f50dcef3adb586ef4a6e3011caf0d3b4096c53c8843c41551e96f929537a"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"@id": "composition/1/artifact/data_release_manifest",
|
|
82
82
|
"@type": "trov:ResearchArtifact",
|
|
83
|
-
"schema:name": "
|
|
83
|
+
"schema:name": "policyengine-uk-data release manifest 1.56.16",
|
|
84
84
|
"trov:mimeType": "application/json",
|
|
85
|
-
"trov:sha256": "
|
|
85
|
+
"trov:sha256": "9bfccac472d74b044596205ee153b0c81fcd8d93e84f5820c7081e30f2cab0c5"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"@id": "composition/1/artifact/dataset",
|
|
89
89
|
"@type": "trov:ResearchArtifact",
|
|
90
|
-
"schema:name": "
|
|
90
|
+
"schema:name": "enhanced_frs_2024_25",
|
|
91
91
|
"trov:mimeType": "application/x-hdf5",
|
|
92
|
-
"trov:sha256": "
|
|
92
|
+
"trov:sha256": "e433e532b17bd8ce76030156285816e33d44e93edabd2204adbef71d19a68712"
|
|
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.90.2 wheel",
|
|
98
98
|
"trov:mimeType": "application/zip",
|
|
99
|
-
"trov:sha256": "
|
|
99
|
+
"trov:sha256": "f100ef97e20b29b84138078f1dbc5b83f8857e6bc74b745fc6abef7ea1eeadf2"
|
|
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": "a7da1e779a5933e4be99c8b1f6a1b72972faa6f904d11059f64ef343807b2c38"
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
"trov:hasPerformance": {
|
|
109
109
|
"@id": "trp/1",
|
|
110
110
|
"@type": "trov:TransparentResearchPerformance",
|
|
111
|
+
"pe:builtWithModelGitSha": "12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3",
|
|
111
112
|
"pe:builtWithModelVersion": "2.89.2",
|
|
112
113
|
"pe:certifiedBy": "policyengine.py bundle certification",
|
|
113
|
-
"pe:certifiedForModelVersion": "2.
|
|
114
|
-
"pe:compatibilityBasis": "
|
|
115
|
-
"pe:
|
|
114
|
+
"pe:certifiedForModelVersion": "2.90.2",
|
|
115
|
+
"pe:compatibilityBasis": "legacy_compatible_model_package",
|
|
116
|
+
"pe:dataBuildFingerprint": "sha256:6bfff835b504094c05342d2b4d770d2d94c8c1adcb15c4468931f53b21a89ea9",
|
|
117
|
+
"pe:dataBuildId": "policyengine-uk-data-1.56.16",
|
|
116
118
|
"pe:emittedIn": "repository-bundle",
|
|
117
|
-
"rdfs:comment": "Certification of build
|
|
119
|
+
"rdfs:comment": "Certification of build policyengine-uk-data-1.56.16 for policyengine-uk 2.90.2.",
|
|
118
120
|
"trov:accessedArrangement": {
|
|
119
121
|
"@id": "arrangement/1"
|
|
120
122
|
},
|
|
121
|
-
"trov:startedAtTime": "2026-
|
|
123
|
+
"trov:startedAtTime": "2026-08-18T14:20:32.100961Z",
|
|
122
124
|
"trov:wasConductedBy": {
|
|
123
125
|
"@id": "trs"
|
|
124
126
|
}
|
|
@@ -18,18 +18,18 @@
|
|
|
18
18
|
"schema:url": "https://policyengine.org"
|
|
19
19
|
},
|
|
20
20
|
"schema:dateCreated": "2026-07-28T03:56:03.415544+00:00",
|
|
21
|
-
"schema:description": "TRACE TRO for certified runtime bundle us-5.0.
|
|
21
|
+
"schema:description": "TRACE TRO for certified runtime bundle us-5.0.4 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 us certified bundle TRO",
|
|
23
23
|
"trov:createdWith": {
|
|
24
24
|
"@type": "schema:SoftwareApplication",
|
|
25
25
|
"schema:name": "policyengine",
|
|
26
|
-
"schema:softwareVersion": "5.0.
|
|
26
|
+
"schema:softwareVersion": "5.0.4"
|
|
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 us-5.0.
|
|
32
|
+
"rdfs:comment": "Certified arrangement for bundle us-5.0.4.",
|
|
33
33
|
"trov:hasArtifactLocation": [
|
|
34
34
|
{
|
|
35
35
|
"@id": "arrangement/1/location/bundle_manifest",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@type": "trov:ResearchArtifact",
|
|
76
76
|
"schema:name": "policyengine.py bundle manifest for us",
|
|
77
77
|
"trov:mimeType": "application/json",
|
|
78
|
-
"trov:sha256": "
|
|
78
|
+
"trov:sha256": "7906f50dcef3adb586ef4a6e3011caf0d3b4096c53c8843c41551e96f929537a"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"@id": "composition/1/artifact/data_release_manifest",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"trov:hasFingerprint": {
|
|
103
103
|
"@id": "composition/1/fingerprint",
|
|
104
104
|
"@type": "trov:CompositionFingerprint",
|
|
105
|
-
"trov:sha256": "
|
|
105
|
+
"trov:sha256": "1cdd1b5d66894fdbafbbc270cc2056859ad02c944673c6476318087bf0be61dc"
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
"trov:hasPerformance": {
|
|
@@ -65,7 +65,10 @@ COUNTRY_MODEL_PACKAGES = {
|
|
|
65
65
|
|
|
66
66
|
CERTIFIED_BY = "policyengine.py bundle certification"
|
|
67
67
|
BASIS_BUILT_WITH = "built_with_model_package"
|
|
68
|
-
|
|
68
|
+
# Must match the runtime claims basis in provenance/manifest.py: the offline
|
|
69
|
+
# fallback there exempts exactly this string from the fingerprint identity
|
|
70
|
+
# check, so a claims-certified bundle stays importable without network access.
|
|
71
|
+
BASIS_PUBLISHER_CLAIM = "legacy_compatible_model_package"
|
|
69
72
|
POPULACE_US_SOURCE_COVERAGE_FILE = "us_source_coverage.json"
|
|
70
73
|
US_STATE_CODES = (
|
|
71
74
|
"AL",
|