policyengine 6.7.4__tar.gz → 6.7.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.7.4 → policyengine-6.7.6}/.github/workflows/certify-uk-release.yaml +8 -1
- {policyengine-6.7.4 → policyengine-6.7.6}/CHANGELOG.md +14 -0
- {policyengine-6.7.4/src/policyengine.egg-info → policyengine-6.7.6}/PKG-INFO +1 -1
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/bundles.md +1 -3
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/build-m-us-populace-certification.md +3 -17
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/us-legacy-spm-sources.md +18 -3
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/data-certification.md +2 -27
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/regions.md +4 -9
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/release-bundles.md +1 -2
- {policyengine-6.7.4 → policyengine-6.7.6}/pyproject.toml +1 -1
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/manifest.json +16 -16
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/uk.trace.tro.jsonld +5 -5
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/bundle/us.trace.tro.jsonld +5 -5
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/__init__.py +4 -2
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/registry.py +37 -6
- {policyengine-6.7.4 → policyengine-6.7.6/src/policyengine.egg-info}/PKG-INFO +1 -1
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_manifests.py +7 -23
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm.py +72 -3
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm_integration.py +115 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_regions.py +8 -11
- {policyengine-6.7.4 → policyengine-6.7.6}/uv.lock +1 -1
- {policyengine-6.7.4 → policyengine-6.7.6}/.claude/policyengine-guide.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.claude/quick-reference.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/CONTRIBUTING.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/bump_version.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/capture-version.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/changelog_template.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/check-changelog.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/copilot-instructions.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/dispatch-policyengine-release.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/fetch_version.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/get-changelog-diff.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/has-functional-changes.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/is-version-number-acceptable.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/publish-git-tag.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/qualification-ledger.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/wait-for-pypi.sh +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/draft-pdf.yml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/pr_code_changes.yaml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/pr_docs_changes.yaml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.github/workflows/push.yaml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.gitignore +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/.python-version +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/AGENTS.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/CITATION.cff +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/CLAUDE.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/CODE_OF_CONDUCT.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/CONTRIBUTING.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/LICENSE +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/Makefile +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/architecture.png +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/architecture.svg +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/changelog.d/.gitkeep +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/.gitignore +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/_generator/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/_generator/build_reference.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/_quarto.yml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/countries.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/data-publishing-design.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/decile-impact-spec.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/dev.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/disclosure.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/acs-local-wic-replacement.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/canonical-spm-development.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/uk-qualification.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/github-prs.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/skills/repository-guidance.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/examples.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/getting-started.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/households.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/impact-analysis.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/index.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/index.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/model-architecture.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/methodology/us-health-costs.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/microsim.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/outputs.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/programs/index.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/programs/us-chip.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/receipts.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/reference/index.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/reforms.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/run-records.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/trace-case-study.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/docs/visualisation.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/belgium_axiom_pilot.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/employment_income_variation_uk.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/employment_income_variation_us.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/household_impact_example.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/income_bands_uk.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/income_distribution_us.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/paper_repro_uk.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/policy_change_uk.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/speedtest_us_simulation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/uk_geography_disclosure.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/examples/us_budgetary_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/paper-preview.html +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/paper.bib +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/paper.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/bundle.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/certify_data_release.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_data_staleness.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_native_spm_loading.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_release_credentials.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/check_uk_candidate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/export_bundle_release_assets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_bundle_artifacts.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_receipt_schemas.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/generate_trace_tros.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/prepare_package_bundle_update.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/release_consumers.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/release_lock.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/scripts/spm_bundle.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/setup.cfg +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/bundle.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/cli.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/cache.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/dataset.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/dynamic.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/output.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter_node.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/parameter_value.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/policy.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/region.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/run_record.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/scoping_strategy.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/simulation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/spm.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/tax_benefit_model.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/tax_benefit_model_version.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/core/variable.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/uk/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/uk/regions.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/districts.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/places.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/data/states.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/countries/us/regions.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/replay_policy.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_budget_critical_inputs.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_replay_exceptions.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/qualification/uk_review_bounds.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/execution_receipt.v1.schema.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/trace_tro.schema.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/qualification_request.v1.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_receipt.v1.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/schemas/vendor/policyengine-scorecard/replay_status.v1.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/data/uk_geography_assets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/narrate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/derivations/trace.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/__main__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/areas.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/estimate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/noise.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/release.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/schema.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/support.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/disclosure/validate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/extractor.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/graph/graph.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/aggregate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/change_aggregate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/cliff_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/congressional_district_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/constituency_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_analysis.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_grouping.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/decile_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/extra_variables.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/inequality.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/intra_decile_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/labor_supply_response.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/local_authority_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/poverty.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/program_statistics.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_assets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_disclosure.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/outputs/uk_geography_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/bundle_validation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/bytecode.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/canonical.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/certification.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/dataset_materialization.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/loaded.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/manifest.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/pyproject_pins.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/qualification.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/qualification_ledger.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/receipt.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/replay_probe.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/spm_configuration.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/trace.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/uk_candidate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/uk_qualification.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/verify.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/wheels.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/provenance/zenodo.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/schema.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/trace_tro.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/results/tracking.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/datasets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/be/model.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/axes.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/extra_variables.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/household.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/model_version.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/reform.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/common/result.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/analysis.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/budget_reform_contract.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/budget_reform_population.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/capital_gains_responses.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/datasets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/household.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/uk/model.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/analysis.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/datasets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/household.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_inputs.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/declarations.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/independence.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/model_adapter.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/record.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/runs.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/legacy_spm/universe.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/model.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/tax_benefit_models/us/spm.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/dates.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/design.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/entity_utils.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/errors.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/hashing.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/household_validation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/parameter_labels.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/parametric_reforms.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine/utils/plotting.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/SOURCES.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/dependency_links.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/entry_points.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/requires.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/src/policyengine.egg-info/top_level.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/conftest.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/filtering_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_couple_two_kids.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_model_surface.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_employment_income.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_adult_no_income.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/uk_single_parent_one_child.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_married_two_kids_high_income.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_model_surface.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_employment_income.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_adult_no_income.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/household_calculator_snapshots/us_single_parent_one_child.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/parameter_labels_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/parametric_reforms_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/poverty_by_demographics_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/region_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/country-models.lock.toml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/manifest.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/us-release_manifest.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/release_tros/us.trace.tro.jsonld +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/main_policy_metadata.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/main_replay_policy.py.txt +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/replay_receipt_uk2.134.7_failed.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_budget_inputs.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_budget_inputs.result.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/replay_exceptions/uk2.134.7_qualification_receipt.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/spm_development.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/evaluate_case_rows.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/full_released_uk_2.135.0.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/pinned_uk_2.125.1_defects.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_contract/population_pass_max_examples_0.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/budget_metrics_report.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_metrics/standard_reforms.yaml +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/DIGESTS.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/README.md +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/qualification_request_golden.jcs +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/qualification_request_golden.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REPLAY_RECEIPT.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.4.1_attempt1/REQUEST.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/REPLAY_RECEIPT.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/REQUEST.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/receipt_6.5.0/STATUS.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/replay_receipt_golden.jcs +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/uk_replay/replay_receipt_golden.json +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/us_reform_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/fixtures/variable_label_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/qualification_fixtures.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/receipt_modifiers.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/receipt_unbindable_modifiers.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_aggregate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_be_axiom_pilot.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_budgetary_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bump_version.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bundle.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_bundle_metadata.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cache.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_canonical_json.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_certify_data_release.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_change_aggregate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cliff_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_cliff_impact_analysis.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_congressional_district_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_constituency_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_materialization.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_persistence.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_runtime.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dataset_source.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_decile_grouping.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_derivations.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_dict_reforms_on_simulation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_areas.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_estimate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_noise.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_release.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_schema.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_support.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_disclosure_validate.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_mapping.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_utils.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_entity_utils_characterization.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_errors.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_execution_receipt.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_extra_variables.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_filtering.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_generate_trace_tros.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/__init__.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/conftest.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_graph/test_extractor.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_household_calculator_snapshot.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_household_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_inequality.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_intra_decile_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_labor_supply_response.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_local_authority_impact.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_manifest_version_mismatch.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_models.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_pandas3_compatibility.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_labels.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_nodes.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parameter_values.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_parametric_reforms.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty_by_demographics.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_poverty_run.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_preservation_mirror.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_program_statistics.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_pyproject_pins.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_contracts.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_ledger_concurrency.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualification_ledger_script.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_qualified_pair_certification.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_region.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_region_group_strategy.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_credentials.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_lock.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_release_tro_generation.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_coherence_round3.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_finalize_review.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_hardening_round3.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_lineage.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_lineage_round3.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_policy_review.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_probe.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exception_probe_round3.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_replay_exceptions.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_results.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_run_record.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_scoping_strategy.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_small_follow_ups.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_bundle_bootstrap.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_bundle_tooling.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_decile.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_development_authentication.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_household.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_model.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_selection.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_spm_selection_schema.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_trace_tro.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_trace_tro_verify.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_analysis.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_budget_reform_contract.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_candidate_gates.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_candidate_metric_baselines.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_cgt_response_records.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_cgt_responses.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_dated_reforms.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_geography_assets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_geography_disclosure.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_program_statistics.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_pipeline.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_replay_inputs.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_qualification_workflow.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_regions.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_uk_year_file_data_year.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_inputs.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_inputs_integration.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_legacy_spm_model_contract.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_long_term_datasets.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_microsim_structural_reforms.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_native_alignment.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_native_hdf_weights.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_program_statistics.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_reform_application.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_us_year_file_stamp.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_variable_labels.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_variable_metadata.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_wheels.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/test_zenodo_mirror.py +0 -0
- {policyengine-6.7.4 → policyengine-6.7.6}/tests/uk_contract_row_scenarios.py +0 -0
|
@@ -294,7 +294,14 @@ jobs:
|
|
|
294
294
|
needs: [resolve, prepare]
|
|
295
295
|
if: needs.prepare.outputs.duplicate == 'false'
|
|
296
296
|
runs-on: ubuntu-latest
|
|
297
|
-
|
|
297
|
+
# The local gates took 80-89 minutes while every wrapper.household
|
|
298
|
+
# contract row errored at once. Since #651 those rows run the household
|
|
299
|
+
# calculator, which takes the gates past two hours, so a 120-minute limit
|
|
300
|
+
# cancelled every attempt and re-staged it. 330 stays under the 360-minute
|
|
301
|
+
# ceiling for GitHub-hosted jobs. Note that stage_attempt's four-hour lease
|
|
302
|
+
# still lets a catch-up re-stage a live attempt whose gates pass about four
|
|
303
|
+
# hours (#662), so in practice runs should stay under that.
|
|
304
|
+
timeout-minutes: 330
|
|
298
305
|
concurrency:
|
|
299
306
|
group: uk-candidate-${{ needs.resolve.outputs.pair_id }}
|
|
300
307
|
cancel-in-progress: false
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [6.7.6] - 2026-10-19
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- The UK qualification job may now run for up to 330 minutes, so candidates whose gates take over two hours, now that the household contract route runs, finish instead of being cancelled and re-staged.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## [6.7.5] - 2026-10-18
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- US state and congressional-district regions use the ACS-local Populace dataset again: the rebuilt release `populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z` (PolicyEngine/microcosm#1263), in which every SPM unit has a classified adult. This ends the temporary national-file filter of #604. The rebuild is registered as a legacy SPM source with the ACS household-population scope rule, so its group-quarters units stay outside SPM measurement, as for the previous release.
|
|
13
|
+
|
|
14
|
+
|
|
1
15
|
## [6.7.4] - 2026-10-18
|
|
2
16
|
|
|
3
17
|
### Changed
|
|
@@ -147,9 +147,7 @@ python scripts/bundle.py certify-data \
|
|
|
147
147
|
--model-version <policyengine-us-version>
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
When they use it, US state and congressional-district regions scope one certified ACS-local
|
|
150
|
+
US state and congressional-district regions scope one certified ACS-local
|
|
153
151
|
Populace dataset with row filters. Pass its non-default local-area release
|
|
154
152
|
manifest through `--regional-manifest-uri`; certification adds the pinned H5
|
|
155
153
|
artifact to `data_releases.us.datasets` and writes both regional path templates
|
|
@@ -63,19 +63,6 @@ This one command:
|
|
|
63
63
|
- writes the changelog fragment
|
|
64
64
|
`changelog.d/certify-us-$NATIONAL_RELEASE_ID.changed.md`.
|
|
65
65
|
|
|
66
|
-
**Interim exception (from policyengine 6.3.4; PolicyEngine/policyengine.py#604).**
|
|
67
|
-
State and congressional-district regions filter the national dataset until an
|
|
68
|
-
ACS-local release has no SPM unit without a classified adult
|
|
69
|
-
(PolicyEngine/microcosm#1263). Run the command above unchanged, with
|
|
70
|
-
`--regional-manifest-uri`: without it, certification drops the ACS-local
|
|
71
|
-
dataset and leaves no state or district template. Then, before Step 3, set
|
|
72
|
-
`region_datasets.state` and `region_datasets.congressional_district` in
|
|
73
|
-
`data_releases.us` to `{"path_template": "populace_us_2024.h5"}` by hand. In
|
|
74
|
-
Step 5, expect those two templates to select the national artifact, not the
|
|
75
|
-
local-area one. The data-certification skill
|
|
76
|
-
(`docs/engineering/skills/data-certification.md`) says what must hold before
|
|
77
|
-
the exception ends.
|
|
78
|
-
|
|
79
66
|
## Step 3 — regenerate TRACE sidecars
|
|
80
67
|
|
|
81
68
|
The certify step does not touch TRACE sidecars. Regenerate them so they record
|
|
@@ -103,16 +90,15 @@ PE_UPDATE_SNAPSHOTS=1 pytest tests/test_household_calculator_snapshot.py
|
|
|
103
90
|
|
|
104
91
|
## Step 5 — certify and verify the local-area release
|
|
105
92
|
|
|
106
|
-
The certification command passes the immutable ACS-local
|
|
107
|
-
|
|
93
|
+
The certification command passes the immutable ACS-local release manifest with
|
|
94
|
+
`--regional-manifest-uri`. Confirm all of the following:
|
|
108
95
|
|
|
109
96
|
- `default_dataset` remains the national Populace dataset;
|
|
110
97
|
- the local-area artifact appears in `data_releases.us.datasets` with its
|
|
111
98
|
repository type, immutable revision, and SHA-256;
|
|
112
99
|
- `region_datasets.national` selects the national artifact;
|
|
113
100
|
- `region_datasets.state` and `region_datasets.congressional_district` select
|
|
114
|
-
the shared local-area artifact
|
|
115
|
-
exception in Step 2 holds);
|
|
101
|
+
the shared local-area artifact;
|
|
116
102
|
- no derived `states/*.h5` or `districts/*.h5` artifacts are runtime inputs.
|
|
117
103
|
|
|
118
104
|
```bash
|
{policyengine-6.7.4 → policyengine-6.7.6}/docs/engineering/runbooks/us-legacy-spm-sources.md
RENAMED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
# Legacy US SPM sources (backward compatibility)
|
|
2
2
|
|
|
3
3
|
> **Backward compatibility, not a data contract.** This layer exists so that
|
|
4
|
-
> certified US sources
|
|
5
|
-
>
|
|
6
|
-
>
|
|
4
|
+
> certified US sources that cannot carry an SPM declaration can still be
|
|
5
|
+
> measured: sources published *before* the declarations existed, and sources
|
|
6
|
+
> that cannot store a declaration because the pinned policyengine-us does not
|
|
7
|
+
> define its variable (today `spm_unit_spm_universe_status`, before
|
|
8
|
+
> PolicyEngine/policyengine-us#9462). Register only the declarations a source
|
|
9
|
+
> lacks. Every other certified source must carry the declarations itself; do
|
|
10
|
+
> not register it here.
|
|
7
11
|
|
|
8
12
|
policyengine-us measures SPM poverty only when a source declares two things:
|
|
9
13
|
|
|
@@ -29,6 +33,7 @@ Sources are keyed by certified SHA-256 in `legacy_spm/registry.py`.
|
|
|
29
33
|
| Source | Scope rule | Independence list |
|
|
30
34
|
| --- | --- | --- |
|
|
31
35
|
| `populace_us_2024_acs_local` Build O (`769756c3…a7ec`) | `acs_household_population` | national release `source_spm_person_independence.csv` (`22b5968d…3ce5`) |
|
|
36
|
+
| `populace_us_2024_acs_local` rebuilt for microcosm#1263 (`3ce781c4…8d6c`, the bundle's certified ACS-local file) | `acs_household_population` | none: the source stores `is_spm_independent_minor_role` |
|
|
32
37
|
|
|
33
38
|
### Scope rule `acs_household_population` (#597)
|
|
34
39
|
|
|
@@ -43,6 +48,10 @@ Age is never used. Unknown channels, missing or inconsistent evidence, and SPM
|
|
|
43
48
|
units that mix group quarters with household people all raise.
|
|
44
49
|
|
|
45
50
|
On the full Build O source, 183,206 SPM units are outside the measurement.
|
|
51
|
+
On the microcosm#1263 rebuild, 181,260 are: Build O's group-quarters
|
|
52
|
+
units less the 1,946 one-person group-quarters records of children under 15,
|
|
53
|
+
which the rebuild leaves out of the population until the model reads scope
|
|
54
|
+
natively (PolicyEngine/microcosm#1263).
|
|
46
55
|
|
|
47
56
|
### Independence list (#598)
|
|
48
57
|
|
|
@@ -111,6 +120,12 @@ existing files must be made again.
|
|
|
111
120
|
- **A rebuilt source declares scope and role itself.** Point the bundle at it.
|
|
112
121
|
Keep the Build O registry entry only while anything still reads Build O,
|
|
113
122
|
then delete it.
|
|
123
|
+
- **A rebuilt source can store the role but not the scope.** The pinned
|
|
124
|
+
policyengine-us does not define `spm_unit_spm_universe_status`, so the
|
|
125
|
+
source cannot store it (Microcosm's stored-inputs gate refuses a variable
|
|
126
|
+
the model does not define). Register it with its scope rule and no
|
|
127
|
+
independence list, as for the microcosm#1263 rebuild. Remove the entry once
|
|
128
|
+
a release of the source carries the scope natively.
|
|
114
129
|
|
|
115
130
|
## Related
|
|
116
131
|
|
|
@@ -35,33 +35,8 @@ python scripts/bundle.py certify-data --country us --data-producer populace \
|
|
|
35
35
|
--model-version "<policyengine-us-version>"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
national dataset, not the ACS-local one. The certified ACS-local release has
|
|
41
|
-
no source-backed SPM independence, so canonical SPM refuses its SPM units that
|
|
42
|
-
have no classified adult, and with them every state-region run
|
|
43
|
-
(PolicyEngine/microcosm#1263, PolicyEngine/policyengine-sim-api#747). The 6.3.4
|
|
44
|
-
manifest was certified with `--regional-manifest-uri`, as below, and then
|
|
45
|
-
edited by hand. Until the exception ends, do the same:
|
|
46
|
-
|
|
47
|
-
- still pass `--regional-manifest-uri`. Without it, certification rewrites
|
|
48
|
-
`data_releases.us` from the national manifest alone, which drops the
|
|
49
|
-
ACS-local dataset and leaves no state or district template at all;
|
|
50
|
-
- then set `region_datasets.state` and `region_datasets.congressional_district`
|
|
51
|
-
to `{"path_template": "populace_us_2024.h5"}` by hand, before regenerating
|
|
52
|
-
the TRACE sidecars. `tests/test_release_manifests.py` fails if they name
|
|
53
|
-
the ACS-local file, and also if the ACS-local dataset is no longer
|
|
54
|
-
certified.
|
|
55
|
-
|
|
56
|
-
Restore the ACS-local regions only with an ACS-local release in which every
|
|
57
|
-
SPM unit has at least one classified adult under the pinned spm-calculator's
|
|
58
|
-
rule (zero unclassified units), and after a state-region run through the
|
|
59
|
-
public wrapper succeeds on it. Then remove this exception, the temporary test
|
|
60
|
-
and the matching notes in `docs/regions.md` and `docs/bundles.md`.
|
|
61
|
-
|
|
62
|
-
Outside that exception, US state and congressional-district regions are row
|
|
63
|
-
filters over one shared, certified ACS-local Populace dataset. Its release
|
|
64
|
-
manifest must declare
|
|
38
|
+
US state and congressional-district regions are row filters over one shared,
|
|
39
|
+
certified ACS-local Populace dataset. Its release manifest must declare
|
|
65
40
|
`dataset_role: non_default_local_area`, `is_default: false`, no default
|
|
66
41
|
datasets, and exactly one pinned H5 microdata artifact. Certification writes:
|
|
67
42
|
|
|
@@ -23,13 +23,9 @@ ca_snap = Aggregate(
|
|
|
23
23
|
ca_snap.run()
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Each state is a region in the US registry. State regions load the
|
|
27
|
-
dataset declared by `region.dataset_path`, then scope its rows by
|
|
28
|
-
They do not require separate state H5 files
|
|
29
|
-
|
|
30
|
-
**Temporarily**, state and congressional-district regions filter the certified national dataset (`populace_us_2024`), as in policyengine 6.2.1. The certified ACS-local release has no source-backed SPM independence, so canonical SPM refuses thousands of its SPM units (PolicyEngine/microcosm#1263, PolicyEngine/policyengine-sim-api#747). They move back to the ACS-local dataset with a release whose SPM units all have a classified adult.
|
|
31
|
-
|
|
32
|
-
For example:
|
|
26
|
+
Each state is a region in the US registry. State regions load the ACS-local
|
|
27
|
+
Populace dataset declared by `region.dataset_path`, then scope its rows by
|
|
28
|
+
`state_fips`. They do not require separate state H5 files:
|
|
33
29
|
|
|
34
30
|
```python
|
|
35
31
|
states = pe.us.model.region_registry.get_by_type("state")
|
|
@@ -56,8 +52,7 @@ for row in impacts.district_results:
|
|
|
56
52
|
|
|
57
53
|
`district_geoid` is the SSDD integer (state FIPS × 100 + district number;
|
|
58
54
|
at-large districts use `00`). Congressional district regions load the same
|
|
59
|
-
file
|
|
60
|
-
`congressional_district_geoid`.
|
|
55
|
+
ACS-local file and scope its rows by `congressional_district_geoid`.
|
|
61
56
|
|
|
62
57
|
## UK countries
|
|
63
58
|
|
|
@@ -207,8 +207,7 @@ python scripts/bundle.py certify-data --country us --data-producer populace \
|
|
|
207
207
|
|
|
208
208
|
That produces one US bundle manifest entry containing the Populace national
|
|
209
209
|
default dataset and the certified ACS-local regional dataset. State and
|
|
210
|
-
congressional-district simulations use
|
|
211
|
-
national dataset; see [Regions](regions.md)), so
|
|
210
|
+
congressional-district simulations use the latter with runtime row filters, so
|
|
212
211
|
derived `states/*.h5` or `districts/*.h5` files are not vendored into
|
|
213
212
|
`data_releases.us.datasets`.
|
|
214
213
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bundle_version": "6.7.
|
|
2
|
+
"bundle_version": "6.7.6",
|
|
3
3
|
"citation": {
|
|
4
4
|
"publisher": "PolicyEngine",
|
|
5
|
-
"title": "PolicyEngine bundle 6.7.
|
|
5
|
+
"title": "PolicyEngine bundle 6.7.6",
|
|
6
6
|
"type": "software-bundle",
|
|
7
|
-
"version": "6.7.
|
|
7
|
+
"version": "6.7.6"
|
|
8
8
|
},
|
|
9
9
|
"countries": {
|
|
10
10
|
"uk": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"data_releases": {
|
|
18
18
|
"uk": {
|
|
19
19
|
"build_id": "policyengine-uk-data-1.58.1",
|
|
20
|
-
"bundle_id": "uk-6.7.
|
|
20
|
+
"bundle_id": "uk-6.7.6",
|
|
21
21
|
"certification": {
|
|
22
22
|
"built_with_model_git_sha": "daad71cd26c107f1b784ff600d1464ba59c70e4a",
|
|
23
23
|
"built_with_model_version": "2.122.2",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"version": "2.130.1",
|
|
100
100
|
"wheel_url": "https://files.pythonhosted.org/packages/1a/21/88e8addba0eabd9a7d3a29fa5293e141feb405baf0432209387f9a1f467a/policyengine_uk-2.130.1-py3-none-any.whl"
|
|
101
101
|
},
|
|
102
|
-
"policyengine_version": "6.7.
|
|
102
|
+
"policyengine_version": "6.7.6",
|
|
103
103
|
"region_datasets": {
|
|
104
104
|
"national": {
|
|
105
105
|
"path_template": "enhanced_frs_2024_25.h5"
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
},
|
|
113
113
|
"us": {
|
|
114
114
|
"build_id": "populace-us-2024-spm-20260915",
|
|
115
|
-
"bundle_id": "us-6.7.
|
|
115
|
+
"bundle_id": "us-6.7.6",
|
|
116
116
|
"certification": {
|
|
117
117
|
"built_with_model_version": "2.2.1",
|
|
118
118
|
"certified_by": "policyengine.py bundle certification",
|
|
@@ -175,8 +175,8 @@
|
|
|
175
175
|
"path": "populace_us_2024_acs_local.h5",
|
|
176
176
|
"repo_id": "policyengine/populace-us",
|
|
177
177
|
"repo_type": "dataset",
|
|
178
|
-
"revision": "populace-us-2024-buildo-acs-local-
|
|
179
|
-
"sha256": "
|
|
178
|
+
"revision": "populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z",
|
|
179
|
+
"sha256": "3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c"
|
|
180
180
|
},
|
|
181
181
|
"source_enrichment": {
|
|
182
182
|
"path": "releases/populace-us-2024-spm-20260915/source_enrichment.json",
|
|
@@ -217,20 +217,20 @@
|
|
|
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.7.
|
|
220
|
+
"policyengine_version": "6.7.6",
|
|
221
221
|
"region_datasets": {
|
|
222
222
|
"congressional_district": {
|
|
223
|
-
"path_template": "
|
|
223
|
+
"path_template": "populace_us_2024_acs_local.h5"
|
|
224
224
|
},
|
|
225
225
|
"national": {
|
|
226
226
|
"path_template": "populace_us_2024.h5"
|
|
227
227
|
},
|
|
228
228
|
"state": {
|
|
229
|
-
"path_template": "
|
|
229
|
+
"path_template": "populace_us_2024_acs_local.h5"
|
|
230
230
|
}
|
|
231
231
|
},
|
|
232
|
-
"regional_release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-buildo-acs-local-
|
|
233
|
-
"regional_source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-buildo-acs-local-
|
|
232
|
+
"regional_release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/releases/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/release_manifest.json",
|
|
233
|
+
"regional_source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/releases/populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z/release_manifest.json",
|
|
234
234
|
"release_manifest_uri": "https://huggingface.co/datasets/policyengine/populace-us/resolve/populace-us-2024-spm-20260915/releases/populace-us-2024-spm-20260915/release_manifest.json",
|
|
235
235
|
"schema_version": 1,
|
|
236
236
|
"source_manifest_uri": "hf://dataset/policyengine/populace-us@populace-us-2024-spm-20260915/releases/populace-us-2024-spm-20260915/release_manifest.json",
|
|
@@ -295,10 +295,10 @@
|
|
|
295
295
|
"packages": {
|
|
296
296
|
"policyengine": {
|
|
297
297
|
"import_name": "policyengine",
|
|
298
|
-
"install_requirement": "policyengine==6.7.
|
|
298
|
+
"install_requirement": "policyengine==6.7.6",
|
|
299
299
|
"name": "policyengine",
|
|
300
300
|
"role": "bundle_carrier",
|
|
301
|
-
"version": "6.7.
|
|
301
|
+
"version": "6.7.6"
|
|
302
302
|
},
|
|
303
303
|
"policyengine-core": {
|
|
304
304
|
"import_name": "policyengine_core",
|
|
@@ -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.7.
|
|
337
|
+
"policyengine_version": "6.7.6",
|
|
338
338
|
"schema_version": 2
|
|
339
339
|
}
|
|
@@ -18,18 +18,18 @@
|
|
|
18
18
|
"schema:url": "https://policyengine.org"
|
|
19
19
|
},
|
|
20
20
|
"schema:dateCreated": "2026-10-14T07:43:49.920588Z",
|
|
21
|
-
"schema:description": "TRACE TRO for certified runtime bundle uk-6.7.
|
|
21
|
+
"schema:description": "TRACE TRO for certified runtime bundle uk-6.7.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.7.
|
|
26
|
+
"schema:softwareVersion": "6.7.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.7.
|
|
32
|
+
"rdfs:comment": "Certified arrangement for bundle uk-6.7.6.",
|
|
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 uk",
|
|
77
77
|
"trov:mimeType": "application/json",
|
|
78
|
-
"trov:sha256": "
|
|
78
|
+
"trov:sha256": "5e248b55d0fdb81ee8f7911f01d27584d8f46e6fa2cdd3b15a6fdfd5b9bed47c"
|
|
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": "ad3cbb4f1ee3ed4cde4c485e5f43be494e5be063b87325c498525a9f49cc6b1a"
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
"trov:hasPerformance": {
|
|
@@ -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.7.
|
|
20
|
+
"schema:description": "TRACE TRO for certified runtime bundle us-6.7.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.7.
|
|
25
|
+
"schema:softwareVersion": "6.7.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.7.
|
|
31
|
+
"rdfs:comment": "Certified arrangement for bundle us-6.7.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": "5e248b55d0fdb81ee8f7911f01d27584d8f46e6fa2cdd3b15a6fdfd5b9bed47c"
|
|
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": "daf551601e171f7cc896db5e5a28d564b14ef1acefc6f19ffebc66c3d0c943ea"
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
"trov:hasPerformance": {
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
# #
|
|
12
12
|
# This package DERIVES the declarations from evidence those sources do #
|
|
13
13
|
# carry, for the sources registered in ``registry.LEGACY_SPM_SOURCES`` and #
|
|
14
|
-
# for nothing else.
|
|
15
|
-
#
|
|
14
|
+
# for nothing else. A new certified source is registered only for a #
|
|
15
|
+
# declaration the pinned policyengine-us cannot read (today the scope, #
|
|
16
|
+
# before PolicyEngine/policyengine-us#9462); see ``registry``. Otherwise new #
|
|
17
|
+
# certified sources must carry the declarations themselves. #
|
|
16
18
|
# #
|
|
17
19
|
# ``model_adapter`` is the part that must eventually go: it overrides SPM #
|
|
18
20
|
# variables only while the installed policyengine-us cannot read the scope #
|
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
"""Certified US sources that
|
|
2
|
-
|
|
3
|
-
BACKWARD COMPATIBILITY (#597, #598)
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"""Certified US sources that cannot carry their SPM declarations.
|
|
2
|
+
|
|
3
|
+
BACKWARD COMPATIBILITY (#597, #598). Register a certified source here only
|
|
4
|
+
when it cannot carry a declaration itself:
|
|
5
|
+
|
|
6
|
+
- it was certified before SPM measurement-scope and independence-role
|
|
7
|
+
declarations existed (Build O); or
|
|
8
|
+
- the pinned policyengine-us does not define that declaration's variable, so
|
|
9
|
+
the source cannot store it. Today that is ``spm_unit_spm_universe_status``,
|
|
10
|
+
which policyengine-us defines only from PolicyEngine/policyengine-us#9462;
|
|
11
|
+
Microcosm's stored-inputs gate refuses a variable the model does not define.
|
|
12
|
+
|
|
13
|
+
Register only the declarations the source lacks: a source that stores
|
|
14
|
+
``is_spm_independent_minor_role`` takes no independence list. Delete an entry
|
|
15
|
+
once nothing reads that source, or once a release of it carries the
|
|
16
|
+
declaration natively. Every other certified source must carry the
|
|
17
|
+
declarations itself.
|
|
6
18
|
"""
|
|
7
19
|
|
|
8
20
|
from __future__ import annotations
|
|
@@ -63,7 +75,26 @@ POPULACE_US_2024_ACS_LOCAL_BUILD_O = LegacySPMSource(
|
|
|
63
75
|
),
|
|
64
76
|
)
|
|
65
77
|
|
|
66
|
-
|
|
78
|
+
#: ``populace_us_2024_acs_local`` rebuilt for PolicyEngine/microcosm#1263. It
|
|
79
|
+
#: stores the SPM independence role for every person, so it takes no list. It
|
|
80
|
+
#: cannot store the measurement scope: policyengine-us 2.2.1 does not define
|
|
81
|
+
#: ``spm_unit_spm_universe_status``. Its ACS group-quarters units are outside
|
|
82
|
+
#: the measurement under Census's ACS household-population rule, as Build O's
|
|
83
|
+
#: are. Remove the entry once a release carries the scope natively
|
|
84
|
+
#: (PolicyEngine/policyengine-us#9462).
|
|
85
|
+
POPULACE_US_2024_ACS_LOCAL_MICROCOSM_1263 = LegacySPMSource(
|
|
86
|
+
name=(
|
|
87
|
+
"populace_us_2024_acs_local@"
|
|
88
|
+
"populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z"
|
|
89
|
+
),
|
|
90
|
+
source_sha256="3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c",
|
|
91
|
+
spm_universe_rule="acs_household_population",
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
LEGACY_SPM_SOURCES: tuple[LegacySPMSource, ...] = (
|
|
95
|
+
POPULACE_US_2024_ACS_LOCAL_BUILD_O,
|
|
96
|
+
POPULACE_US_2024_ACS_LOCAL_MICROCOSM_1263,
|
|
97
|
+
)
|
|
67
98
|
|
|
68
99
|
|
|
69
100
|
def legacy_spm_source(source_sha256: Optional[str]) -> Optional[LegacySPMSource]:
|
|
@@ -65,11 +65,9 @@ US_RELEASE_MANIFEST_DATASET_URI = (
|
|
|
65
65
|
# immutable release. It remains non-default nationally and is selected for
|
|
66
66
|
# states and congressional districts.
|
|
67
67
|
US_LOCAL_AREA_DATASET = "populace_us_2024_acs_local"
|
|
68
|
-
US_LOCAL_AREA_RELEASE_ID =
|
|
69
|
-
"populace-us-2024-buildo-acs-local-767312d60-20260923T074941Z"
|
|
70
|
-
)
|
|
68
|
+
US_LOCAL_AREA_RELEASE_ID = "populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z"
|
|
71
69
|
US_LOCAL_AREA_SHA256 = (
|
|
72
|
-
"
|
|
70
|
+
"3ce781c440a7f933b1d952ff4e9d9f65f4698c64b94d2fad165af0c662838d6c"
|
|
73
71
|
)
|
|
74
72
|
US_LOCAL_AREA_DATASET_URI = (
|
|
75
73
|
"hf://policyengine/populace-us/populace_us_2024_acs_local.h5"
|
|
@@ -330,15 +328,12 @@ class TestReleaseManifests:
|
|
|
330
328
|
assert manifest.region_datasets["national"].path_template == (
|
|
331
329
|
"populace_us_2024.h5"
|
|
332
330
|
)
|
|
333
|
-
# Temporary (microcosm#1263): state and district regions filter the
|
|
334
|
-
# national file until the ACS-local release supplies source-backed SPM
|
|
335
|
-
# independence; see the test below.
|
|
336
331
|
assert manifest.region_datasets["state"].path_template == (
|
|
337
|
-
"
|
|
332
|
+
"populace_us_2024_acs_local.h5"
|
|
338
333
|
)
|
|
339
334
|
assert (
|
|
340
335
|
manifest.region_datasets["congressional_district"].path_template
|
|
341
|
-
== "
|
|
336
|
+
== "populace_us_2024_acs_local.h5"
|
|
342
337
|
)
|
|
343
338
|
|
|
344
339
|
def test__given_local_area_name__then_resolves_to_its_immutable_tag(self):
|
|
@@ -365,21 +360,10 @@ class TestReleaseManifests:
|
|
|
365
360
|
assert US_LOCAL_AREA_DATASET in resolve_default_datasets("us")
|
|
366
361
|
assert US_LOCAL_AREA_DATASET != manifest.default_dataset
|
|
367
362
|
|
|
368
|
-
def
|
|
369
|
-
"""Temporary revert, until microcosm#1263 lands.
|
|
370
|
-
|
|
371
|
-
The ACS-local release (``populace-us-2024-buildo-acs-local-767312d60-…``)
|
|
372
|
-
has no ``is_spm_independent_minor_role``, so 5,274 SPM units have no
|
|
373
|
-
classified adult and canonical SPM refuses every state-region run
|
|
374
|
-
(SPM_COMPOSITION_REQUIRED; policyengine-sim-api#747). State and district
|
|
375
|
-
regions filter the national file again, as in policyengine 6.2.1, which
|
|
376
|
-
carries the role. Point them back at the ACS-local dataset only with a
|
|
377
|
-
release whose SPM units all have a classified adult.
|
|
378
|
-
"""
|
|
379
|
-
|
|
363
|
+
def test__given_us_manifest__then_local_regions_resolve_to_acs_local(self):
|
|
380
364
|
assert (
|
|
381
365
|
resolve_region_dataset_path("us", "state", state_code="CA")
|
|
382
|
-
==
|
|
366
|
+
== US_LOCAL_AREA_DATASET_URI
|
|
383
367
|
)
|
|
384
368
|
assert (
|
|
385
369
|
resolve_region_dataset_path(
|
|
@@ -387,7 +371,7 @@ class TestReleaseManifests:
|
|
|
387
371
|
"congressional_district",
|
|
388
372
|
district_code="CA-01",
|
|
389
373
|
)
|
|
390
|
-
==
|
|
374
|
+
== US_LOCAL_AREA_DATASET_URI
|
|
391
375
|
)
|
|
392
376
|
assert not any(
|
|
393
377
|
key.startswith(("states/", "districts/"))
|