Upgrade breakdown enum mismatch from WARNING to ERROR#445
Open
MaxGhenis wants to merge 1 commit intoPolicyEngine:masterfrom
Open
Upgrade breakdown enum mismatch from WARNING to ERROR#445MaxGhenis wants to merge 1 commit intoPolicyEngine:masterfrom
MaxGhenis wants to merge 1 commit intoPolicyEngine:masterfrom
Conversation
Parameters with keys not in the breakdown variable's possible values now raise ValueError instead of silently logging a warning. This prevents data loss when parameter YAML files use keys that don't match the breakdown enum (e.g., using snap_utility_region keys with a state_code breakdown). Partial coverage (enum values missing from YAML) remains allowed. Closes PolicyEngine#444 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Parameters with keys not in the breakdown variable's possible values now raise
ValueErrorinstead of silently logging a warning. This prevents data loss when parameter YAML files use keys that don't match the breakdown enum.For example, SNAP utility allowance parameters with
breakdown: [state_code]but usingsnap_utility_regionkeys (AK_C,NY_NYC, etc.) were silently dropped — only a WARNING was logged. This caused real data loss in PolicyEngine/policyengine-us#7726.Changes
homogenize_parameters.py: Collect all extra children (keys not in breakdown enum) and raiseValueErrorwith a clear message listing the offending keystest_nesting.py: Add tests for both the error case (extra keys → ValueError) and the allowed case (partial coverage → no error)Design
yaml_keys - enum_valuesnon-empty → ERROR (unknown keys that would be silently dropped)enum_values - yaml_keysnon-empty → OK (partial coverage is intentional, e.g.state_codebreakdown omitting armed forces codes)Closes #444
Test plan
test_parameter_homogenizationstill passes (valid breakdown)test_breakdown_mismatch_raises_errorpasses (extra key raises ValueError)test_breakdown_partial_coverage_is_okpasses (missing enum values allowed)🤖 Generated with Claude Code