From 70cc92d98195466aa60641950ffa0c75d9a225f5 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Fri, 6 Mar 2026 15:18:45 -0500 Subject: [PATCH 1/3] Remove adds from is_pregnant and add defined_for to current_pregnancies Make is_pregnant a pure input variable by removing adds = ["current_pregnancies"]. Add defined_for = "is_pregnant" to current_pregnancies so it is scoped to pregnant persons. Add tests for current_pregnancies with defined_for behavior. Closes PolicyEngine/policyengine-us-data#576 Co-Authored-By: Claude Opus 4.6 --- changelog.d/remove-is-pregnant-adds.fixed.md | 1 + .../gov/states/il/hfs/mpe/il_mpe_eligible.yaml | 12 ++++-------- .../baseline/gov/states/il/hfs/mpe/integration.yaml | 4 ++++ .../demographic/person/current_pregnancies.py | 1 + .../household/demographic/person/is_pregnant.py | 1 - 5 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 changelog.d/remove-is-pregnant-adds.fixed.md diff --git a/changelog.d/remove-is-pregnant-adds.fixed.md b/changelog.d/remove-is-pregnant-adds.fixed.md new file mode 100644 index 00000000000..2ff892404d5 --- /dev/null +++ b/changelog.d/remove-is-pregnant-adds.fixed.md @@ -0,0 +1 @@ +Removed adds from is_pregnant, making it a pure input variable. diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml index 47727dfc442..fc03d7790de 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml @@ -2,38 +2,34 @@ period: 2024-01 input: state_code: IL - current_pregnancies: 1 + is_pregnant: true medicaid_income_level: 1.5 output: - is_pregnant: true il_mpe_eligible: true - name: Case 2, pregnant with income at 200% FPL. period: 2024-01 input: state_code: IL - current_pregnancies: 1 + is_pregnant: true medicaid_income_level: 2 output: - is_pregnant: true il_mpe_eligible: true - name: Case 3, pregnant with income above 200% FPL. period: 2024-01 input: state_code: IL - current_pregnancies: 1 + is_pregnant: true medicaid_income_level: 2.5 output: - is_pregnant: true il_mpe_eligible: false - name: Case 4, not pregnant with low income. period: 2024-01 input: state_code: IL - current_pregnancies: 0 + is_pregnant: false medicaid_income_level: 1 output: - is_pregnant: false il_mpe_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml index 99a44f40e9b..047d608aeaf 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml @@ -4,6 +4,7 @@ people: person1: age: 28 + is_pregnant: true current_pregnancies: 1 employment_income: 15_000 person2: @@ -36,6 +37,7 @@ people: person1: age: 28 + is_pregnant: true current_pregnancies: 2 employment_income: 35_000 tax_units: @@ -63,6 +65,7 @@ people: person1: age: 28 + is_pregnant: true current_pregnancies: 1 employment_income: 80_000 tax_units: @@ -90,6 +93,7 @@ people: person1: age: 28 + is_pregnant: true current_pregnancies: 1 employment_income: 31_000 tax_units: diff --git a/policyengine_us/variables/household/demographic/person/current_pregnancies.py b/policyengine_us/variables/household/demographic/person/current_pregnancies.py index 9af6fa64ce8..cd485f0796c 100644 --- a/policyengine_us/variables/household/demographic/person/current_pregnancies.py +++ b/policyengine_us/variables/household/demographic/person/current_pregnancies.py @@ -6,3 +6,4 @@ class current_pregnancies(Variable): entity = Person definition_period = YEAR label = "The number of children a pregnant person is expecting" + defined_for = "is_pregnant" diff --git a/policyengine_us/variables/household/demographic/person/is_pregnant.py b/policyengine_us/variables/household/demographic/person/is_pregnant.py index cb58b94b742..7d9142f84c6 100644 --- a/policyengine_us/variables/household/demographic/person/is_pregnant.py +++ b/policyengine_us/variables/household/demographic/person/is_pregnant.py @@ -6,4 +6,3 @@ class is_pregnant(Variable): entity = Person label = "Is pregnant" definition_period = YEAR - adds = ["current_pregnancies"] From e9bba9f74d228f0c0b26f09f070dc9f622785cf6 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 9 Mar 2026 13:58:11 -0400 Subject: [PATCH 2/3] Default current_pregnancies to 1 for pregnant persons and update tests Add a formula to current_pregnancies that returns 1, gated by defined_for = "is_pregnant". This means setting is_pregnant = True automatically gives current_pregnancies = 1 without needing to specify it explicitly. Users can still override (e.g., twins = 2). Update tax_unit_medicaid_income_level tests to add is_pregnant: true for pregnant persons and add a triplets test case. Co-Authored-By: Claude Opus 4.6 --- .../tax_unit_medicaid_income_level.yaml | 25 +++++++++++++++++++ .../demographic/person/current_pregnancies.py | 3 +++ 2 files changed, 28 insertions(+) diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml index 7c603549934..65e9c50f808 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml @@ -41,6 +41,7 @@ input: people: head: + is_pregnant: true current_pregnancies: 1 spouse: current_pregnancies: 0 @@ -60,6 +61,7 @@ input: people: head: + is_pregnant: true current_pregnancies: 2 spouse: current_pregnancies: 0 @@ -73,3 +75,26 @@ state_group_str: CONTIGUOUS_US output: tax_unit_medicaid_income_level: 1 + +- name: Multiple people with income and a pregnant person expecting triplets + period: 2024 + input: + people: + head: + is_pregnant: true + current_pregnancies: 3 + spouse: + current_pregnancies: 0 + tax_units: + tax_unit: + medicaid_magi: 36_580 + tax_unit_size: 2 + members: [head, spouse] + households: + household: + state_group_str: CONTIGUOUS_US + output: + # Effective size: 2 + 3 = 5 + # 2024 FPL for 5: 36,580 + # 36,580 / 36,580 = 1.0 + tax_unit_medicaid_income_level: 1 diff --git a/policyengine_us/variables/household/demographic/person/current_pregnancies.py b/policyengine_us/variables/household/demographic/person/current_pregnancies.py index cd485f0796c..0c21db5866c 100644 --- a/policyengine_us/variables/household/demographic/person/current_pregnancies.py +++ b/policyengine_us/variables/household/demographic/person/current_pregnancies.py @@ -7,3 +7,6 @@ class current_pregnancies(Variable): definition_period = YEAR label = "The number of children a pregnant person is expecting" defined_for = "is_pregnant" + + def formula(person, period, parameters): + return 1 From 752fae47cc5f87e4992c826ed62b480f95bf0443 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 9 Mar 2026 14:42:19 -0400 Subject: [PATCH 3/3] Replace defined_for + formula with adds = ["is_pregnant"] Simpler equivalent: is_pregnant (bool) maps directly to current_pregnancies (1 for pregnant, 0 for not). Co-Authored-By: Claude Opus 4.6 --- .../household/demographic/person/current_pregnancies.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/policyengine_us/variables/household/demographic/person/current_pregnancies.py b/policyengine_us/variables/household/demographic/person/current_pregnancies.py index 0c21db5866c..a89e9f8722e 100644 --- a/policyengine_us/variables/household/demographic/person/current_pregnancies.py +++ b/policyengine_us/variables/household/demographic/person/current_pregnancies.py @@ -6,7 +6,4 @@ class current_pregnancies(Variable): entity = Person definition_period = YEAR label = "The number of children a pregnant person is expecting" - defined_for = "is_pregnant" - - def formula(person, period, parameters): - return 1 + adds = ["is_pregnant"]