policyengine-us 1.354.0__py3-none-any.whl → 1.355.0__py3-none-any.whl

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-us might be problematic. Click here for more details.

Files changed (29) hide show
  1. policyengine_us/parameters/gov/aca/ineligible_immigration_statuses.yaml +11 -0
  2. policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/age_range.yaml +25 -0
  3. policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/applies.yaml +13 -0
  4. policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/dependent_age_limit.yaml +12 -0
  5. policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/monthly_hours_threshold.yaml +12 -0
  6. policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml +4 -2
  7. policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml +4 -1
  8. policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/in_effect.yaml +13 -0
  9. policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/sunset_provisions_apply.yaml +13 -0
  10. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml +1 -1
  11. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml +1 -1
  12. policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml +1 -1
  13. policyengine_us/reforms/reconciliation/__init__.py +0 -9
  14. policyengine_us/reforms/reforms.py +0 -18
  15. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml +88 -0
  16. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml +105 -0
  17. policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py +9 -0
  18. policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py +57 -0
  19. policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py +37 -7
  20. {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/METADATA +1 -1
  21. {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/RECORD +24 -21
  22. policyengine_us/parameters/gov/contrib/reconciliation/aca_ptc_immigration_status/in_effect.yaml +0 -13
  23. policyengine_us/reforms/reconciliation/aca_ptc_immigration_status.py +0 -55
  24. policyengine_us/reforms/reconciliation/reconciled_medicaid_work_requirement.py +0 -157
  25. policyengine_us/reforms/reconciliation/reconciled_snap_abawd_work_requirement.py +0 -125
  26. policyengine_us/tests/policy/contrib/reconciliation/reconciled_snap_abawd_work_requirement.yaml +0 -118
  27. {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/WHEEL +0 -0
  28. {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/entry_points.txt +0 -0
  29. {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/licenses/LICENSE +0 -0
@@ -5,6 +5,15 @@ values:
5
5
  - UNDOCUMENTED
6
6
  - TPS
7
7
 
8
+ 2027-01-01:
9
+ - DACA_TPS #daca is eligible for PTC
10
+ - UNDOCUMENTED
11
+ - TPS
12
+ - ASYLEE
13
+ - DEPORTATION_WITHHELD
14
+ - PAROLED_ONE_YEAR
15
+
16
+
8
17
  metadata:
9
18
  label: Reconciliation Premium Tax Credit immigration status adjustment in effect
10
19
  period: year
@@ -12,3 +21,5 @@ metadata:
12
21
  reference:
13
22
  - title: 26 CFR § 1.36B-1 - Premium tax credit definitions.
14
23
  href: https://www.law.cornell.edu/cfr/text/26/1.36B-1#(g)
24
+ - title: H.R.1 - One Big Beautiful Bill Act
25
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -0,0 +1,25 @@
1
+ description: The Department of Health and Human Services requires individuals within these age brackets to meet Medicaid work requirements.
2
+ metadata:
3
+ threshold_unit: year
4
+ amount_unit: bool
5
+ period: year
6
+ type: single_amount
7
+ label: Medicaid work requirements age threshold
8
+ reference:
9
+ - title: H.R.1 - One Big Beautiful Bill Act
10
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
11
+
12
+
13
+ brackets:
14
+ - threshold:
15
+ 2027-01-01: 0
16
+ amount:
17
+ 2027-01-01: false
18
+ - threshold:
19
+ 2027-01-01: 19
20
+ amount:
21
+ 2027-01-01: true
22
+ - threshold:
23
+ 2027-01-01: 65
24
+ amount:
25
+ 2027-01-01: false
@@ -0,0 +1,13 @@
1
+ description: The Department of Health and Human Services limits Medicaid to filers who meet work requirements, if this is true.
2
+
3
+ values:
4
+ 0000-01-01: false
5
+ 2027-01-01: true
6
+
7
+ metadata:
8
+ unit: bool
9
+ period: year
10
+ label: Medicaid work requirements apply
11
+ reference:
12
+ - title: H.R.1 - One Big Beautiful Bill Act
13
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -0,0 +1,12 @@
1
+ description: The Department of Health and Human Services exempts Medicaid work requirement to individuals with a dependent child at this age or younger.
2
+
3
+ values:
4
+ 2027-01-01: 13
5
+
6
+ metadata:
7
+ unit: year
8
+ label: Medicaid work requirement dependent child age limit
9
+ period: year
10
+ reference:
11
+ - title: H.R.1 - One Big Beautiful Bill Act
12
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -0,0 +1,12 @@
1
+ description: The Department of Health and Human Services limits Medicaid to individuals working more than this number of monthly hours.
2
+
3
+ values:
4
+ 2027-01-01: 80
5
+
6
+ metadata:
7
+ unit: hours
8
+ label: Medicaid work requirement monthly hours threshold
9
+ period: month
10
+ reference:
11
+ - title: H.R.1 - One Big Beautiful Bill Act
12
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -1,6 +1,7 @@
1
- description: The United States Department of Agriculture considers individuals who do not have any dependents under this age to be Able-Bodied Adult Without Dependents (ABAWD) under the Supplemental Nutrition Assistance Program.
1
+ description: TThe Department of Agriculture considers individuals who do not have any dependents under this age to be Able-Bodied Adult Without Dependents (ABAWD) under the Supplemental Nutrition Assistance Program.
2
2
  values:
3
3
  2019-01-01: 18
4
+ 2027-01-01: 14
4
5
 
5
6
  metadata:
6
7
  unit: year
@@ -11,4 +12,5 @@ metadata:
11
12
  href: https://www.law.cornell.edu/cfr/text/7/273.1#b_iii
12
13
  - title: SNAP Work Requirements
13
14
  href: https://www.fns.usda.gov/snap/work-requirements
14
-
15
+ - title: H.R.1 - One Big Beautiful Bill Act
16
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -1,4 +1,4 @@
1
- description: The United States Department of Agriculture exempts applicants who are within these age brackets from the Able-Bodied Adult Without Dependents (ABAWD) work requirements under the Supplemental Nutrition Assistance Program.
1
+ description: TThe Department of Agriculture exempts applicants who are within these age brackets from the Able-Bodied Adult Without Dependents (ABAWD) work requirements under the Supplemental Nutrition Assistance Program.
2
2
  metadata:
3
3
  threshold_unit: year
4
4
  amount_unit: bool
@@ -10,6 +10,8 @@ metadata:
10
10
  href: https://www.law.cornell.edu/cfr/text/7/273.24#c_1
11
11
  - title: SNAP Work Requirements
12
12
  href: https://www.fns.usda.gov/snap/work-requirements
13
+ - title: H.R.1 - One Big Beautiful Bill Act
14
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
13
15
  brackets:
14
16
  - threshold:
15
17
  2019-01-01: 0
@@ -21,5 +23,6 @@ brackets:
21
23
  2019-01-01: false
22
24
  - threshold:
23
25
  2019-01-01: 55
26
+ 2027-01-01: 65
24
27
  amount:
25
28
  2019-01-01: true
@@ -0,0 +1,13 @@
1
+ description: TThe Department of Agriculture applies the amended structure to the Able-Bodied Adult Without Dependents (ABAWD) work requirements for the Supplemental Nutrition Assistance Program, if this is true.
2
+
3
+ values:
4
+ 0000-01-01: false
5
+ 2027-01-01: true
6
+
7
+ metadata:
8
+ unit: bool
9
+ period: year
10
+ label: SNAP ABAWD work requirements amended structure in effect
11
+ reference:
12
+ - title: H.R.1 - One Big Beautiful Bill Act
13
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -0,0 +1,13 @@
1
+ description: TThe Department of Agriculture applies the sunset provisions to the Able-Bodied Adult Without Dependents (ABAWD) work requirements for the Supplemental Nutrition Assistance Program, if this is true.
2
+
3
+ values:
4
+ 0000-01-01: false
5
+ 2030-10-01: true
6
+
7
+ metadata:
8
+ unit: bool
9
+ period: year
10
+ label: SNAP ABAWD work requirements sunset provisions apply
11
+ reference:
12
+ - title: H.R.1 - One Big Beautiful Bill Act
13
+ href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
@@ -1,4 +1,4 @@
1
- description: The United States Department of Agriculture exempts individuals caring for a dependent child under this age from the general work requirements under the Supplemental Nutrition Assistance Program.
1
+ description: TThe Department of Agriculture exempts individuals caring for a dependent child under this age from the general work requirements under the Supplemental Nutrition Assistance Program.
2
2
  values:
3
3
  2019-01-01: 6
4
4
 
@@ -1,4 +1,4 @@
1
- description: The United States Department of Agriculture exempts individuals within these age brackets from the general work requirements under the Supplemental Nutrition Assistance Program.
1
+ description: TThe Department of Agriculture exempts individuals within these age brackets from the general work requirements under the Supplemental Nutrition Assistance Program.
2
2
  metadata:
3
3
  threshold_unit: year
4
4
  amount_unit: bool
@@ -1,4 +1,4 @@
1
- description: The United States Department of Agriculture limits the Supplemental Nutrition Assistance Program to individuals working more than this number of weekly hours from the general work requirements.
1
+ description: TThe Department of Agriculture limits the Supplemental Nutrition Assistance Program to individuals working more than this number of weekly hours from the general work requirements.
2
2
 
3
3
  values:
4
4
  2019-01-01: 30
@@ -1,12 +1,3 @@
1
1
  from .reconciled_ssn_for_llc_and_aoc import (
2
2
  create_reconciled_ssn_for_llc_and_aoc_reform,
3
3
  )
4
- from .aca_ptc_immigration_status import (
5
- create_aca_ptc_immigration_status_reform,
6
- )
7
- from .reconciled_medicaid_work_requirement import (
8
- create_reconciled_medicaid_work_requirement_reform,
9
- )
10
- from .reconciled_snap_abawd_work_requirement import (
11
- create_reconciled_snap_abawd_work_requirement_reform,
12
- )
@@ -91,9 +91,6 @@ from .congress.afa import (
91
91
 
92
92
  from .reconciliation import (
93
93
  create_reconciled_ssn_for_llc_and_aoc_reform,
94
- create_aca_ptc_immigration_status_reform,
95
- create_reconciled_medicaid_work_requirement_reform,
96
- create_reconciled_snap_abawd_work_requirement_reform,
97
94
  )
98
95
  from .additional_tax_bracket import (
99
96
  create_additional_tax_bracket_reform,
@@ -211,9 +208,6 @@ def create_structural_reforms_from_parameters(parameters, period):
211
208
  reconciled_ssn_for_llc_and_aoc = (
212
209
  create_reconciled_ssn_for_llc_and_aoc_reform(parameters, period)
213
210
  )
214
- aca_ptc_immigration_status = create_aca_ptc_immigration_status_reform(
215
- parameters, period
216
- )
217
211
  ctc_additional_bracket = create_ctc_additional_bracket_reform(
218
212
  parameters, period
219
213
  )
@@ -221,15 +215,6 @@ def create_structural_reforms_from_parameters(parameters, period):
221
215
  additional_tax_bracket = create_additional_tax_bracket_reform(
222
216
  parameters, period
223
217
  )
224
- reconciled_medicaid_work_requirement = (
225
- create_reconciled_medicaid_work_requirement_reform(parameters, period)
226
- )
227
-
228
- reconciled_snap_abawd_work_requirement = (
229
- create_reconciled_snap_abawd_work_requirement_reform(
230
- parameters, period
231
- )
232
- )
233
218
 
234
219
  reforms = [
235
220
  afa_reform,
@@ -271,11 +256,8 @@ def create_structural_reforms_from_parameters(parameters, period):
271
256
  tax_employer_payroll_tax,
272
257
  afa_other_dependent_credit,
273
258
  reconciled_ssn_for_llc_and_aoc,
274
- aca_ptc_immigration_status,
275
259
  ctc_additional_bracket,
276
260
  additional_tax_bracket,
277
- reconciled_medicaid_work_requirement,
278
- reconciled_snap_abawd_work_requirement,
279
261
  ]
280
262
  reforms = tuple(filter(lambda x: x is not None, reforms))
281
263
 
@@ -0,0 +1,88 @@
1
+ - name: Case 1, age 18, work exempted age.
2
+ period: 2026
3
+ input:
4
+ age: 18
5
+ output:
6
+ medicaid_work_requirement_eligible: true
7
+
8
+ - name: Case 2, age 65, work exempted age.
9
+ period: 2026
10
+ input:
11
+ age: 65
12
+ output:
13
+ medicaid_work_requirement_eligible: true
14
+
15
+ - name: Case 3, age 19, need working.
16
+ period: 2026
17
+ input:
18
+ age: 19
19
+ output:
20
+ medicaid_work_requirement_eligible: false
21
+
22
+ - name: Case 4, age 30, working 79 hours per month.
23
+ period: 2026
24
+ input:
25
+ age: 30
26
+ monthly_hours_worked: 79
27
+ output:
28
+ medicaid_work_requirement_eligible: false
29
+
30
+ - name: Case 5, age 30, working 80 hours per month.
31
+ period: 2026
32
+ input:
33
+ age: 30
34
+ monthly_hours_worked: 80
35
+ output:
36
+ medicaid_work_requirement_eligible: true
37
+
38
+ - name: Case 6, age 30, is disabled.
39
+ period: 2026
40
+ input:
41
+ age: 19
42
+ monthly_hours_worked: 5
43
+ is_disabled: true
44
+ output:
45
+ medicaid_work_requirement_eligible: true
46
+
47
+ - name: Case 7, integration.
48
+ period: 2026
49
+ input:
50
+ people:
51
+ person1:
52
+ age: 30
53
+ is_tax_unit_head_or_spouse: true
54
+ monthly_hours_worked: 80
55
+ person2:
56
+ age: 30
57
+ is_tax_unit_head_or_spouse: true
58
+ monthly_hours_worked: 79
59
+ output:
60
+ medicaid_work_requirement_eligible: [true, false]
61
+
62
+ - name: Case 8, not working, but has child at age 13.
63
+ period: 2026
64
+ input:
65
+ people:
66
+ person1:
67
+ age: 30
68
+ is_tax_unit_head_or_spouse: true
69
+ monthly_hours_worked: 0
70
+ person2:
71
+ age: 13
72
+ is_tax_unit_dependent: true
73
+ output:
74
+ medicaid_work_requirement_eligible: [true, true]
75
+
76
+ - name: Case 9, not working, has child at age 14, ineligible under Senate Version.
77
+ period: 2026
78
+ input:
79
+ people:
80
+ person1:
81
+ age: 30
82
+ is_tax_unit_head_or_spouse: true
83
+ monthly_hours_worked: 0
84
+ person2:
85
+ age: 14
86
+ is_tax_unit_dependent: true
87
+ output:
88
+ medicaid_work_requirement_eligible: [false, true]
@@ -84,3 +84,108 @@
84
84
  members: [person1, person2]
85
85
  output:
86
86
  meets_snap_abawd_work_requirements: [false, true]
87
+
88
+ - name: Case 1, baseline, age 55 exempted from general work requirement.
89
+ period: 2026
90
+ absolute_error_margin: 0.9
91
+ input:
92
+ age: 55
93
+ weekly_hours_worked: 1
94
+ is_disabled: false
95
+ output:
96
+ meets_snap_abawd_work_requirements: true
97
+
98
+ - name: Case 2, reform, age 55 is not exempted from general work requirement.
99
+ period: 2027
100
+ absolute_error_margin: 0.9
101
+ input:
102
+ age: 55
103
+ weekly_hours_worked: 1
104
+ is_disabled: false
105
+ output:
106
+ meets_snap_abawd_work_requirements: false
107
+
108
+ - name: Case 3, baseline, have a child at age 15.
109
+ period: 2026-01
110
+ absolute_error_margin: 0.9
111
+ input:
112
+ people:
113
+ person1:
114
+ age: 55
115
+ weekly_hours_worked: 1
116
+ is_disabled: false
117
+ is_parent: true
118
+ person2:
119
+ age: 15
120
+ is_disabled: false
121
+ is_tax_unit_dependent: true
122
+ output:
123
+ meets_snap_abawd_work_requirements: [true, true]
124
+
125
+ - name: Case 4, reform, have a child at age 15.
126
+ period: 2027
127
+ absolute_error_margin: 0.9
128
+ input:
129
+ people:
130
+ person1:
131
+ age: 55
132
+ weekly_hours_worked: 1
133
+ is_disabled: false
134
+ is_parent: true
135
+ person2:
136
+ age: 15
137
+ is_disabled: false
138
+ is_tax_unit_dependent: true
139
+ output:
140
+ meets_snap_abawd_work_requirements: [false, true]
141
+
142
+ - name: Case 5, reform, have a child at age 6.
143
+ period: 2027
144
+ absolute_error_margin: 0.9
145
+ input:
146
+ people:
147
+ person1:
148
+ age: 55
149
+ weekly_hours_worked: 1
150
+ is_disabled: false
151
+ is_parent: true
152
+ person2:
153
+ age: 6
154
+ is_disabled: false
155
+ is_tax_unit_dependent: true
156
+ output:
157
+ meets_snap_abawd_work_requirements: [true, true]
158
+
159
+ - name: Case 6, reform, is veteran with a child 15 in 2027.
160
+ period: 2027
161
+ absolute_error_margin: 0.9
162
+ input:
163
+ people:
164
+ person1:
165
+ age: 55
166
+ weekly_hours_worked: 1
167
+ is_disabled: false
168
+ is_veteran: true
169
+ person2:
170
+ age: 15
171
+ is_disabled: false
172
+ is_tax_unit_dependent: true
173
+ output:
174
+ meets_snap_abawd_work_requirements: [true, true]
175
+
176
+ - name: Case 7, reform, is veteran with a child 15 in 2031, sunset provision in effect.
177
+ period: 2031
178
+ absolute_error_margin: 0.9
179
+ input:
180
+ people:
181
+ person1:
182
+ age: 55
183
+ weekly_hours_worked: 1
184
+ is_disabled: false
185
+ is_veteran: true
186
+ person2:
187
+ age: 15
188
+ is_disabled: false
189
+ is_tax_unit_dependent: true
190
+ output:
191
+ meets_snap_abawd_work_requirements: [false, true]
@@ -25,6 +25,15 @@ class is_medicaid_eligible(Variable):
25
25
  ~undocumented | undocumented & state_covers_undocumented
26
26
  )
27
27
  ca_ffyp_eligible = person("ca_ffyp_eligible", period)
28
+ if p.work_requirements.applies:
29
+ work_requirement_eligible = person(
30
+ "medicaid_work_requirement_eligible", period
31
+ )
32
+ return (
33
+ categorically_eligible
34
+ & immigration_status_eligible
35
+ & work_requirement_eligible
36
+ ) | ca_ffyp_eligible
28
37
  return (
29
38
  categorically_eligible & immigration_status_eligible
30
39
  ) | ca_ffyp_eligible
@@ -0,0 +1,57 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicaid_work_requirement_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Eligible person for Medicaid via work requirement"
8
+ definition_period = YEAR
9
+ reference = (
10
+ "https://www.congress.gov/bill/119th-congress/house-bill/1/text"
11
+ )
12
+
13
+ def formula(person, period, parameters):
14
+ p = parameters(period).gov.hhs.medicaid.eligibility.work_requirements
15
+ # Works no less than 80 hours p.680 (2)(A)
16
+ monthly_hours_worked = person("monthly_hours_worked", period)
17
+ meets_monthly_work_hours = (
18
+ monthly_hours_worked >= p.monthly_hours_threshold
19
+ )
20
+ # The individual is enrolled in an educational program at least half-time. p.680 (2)(D)
21
+ is_full_time_student = person("is_full_time_student", period)
22
+ # pregnant or postpartum medical assistance p.681 (3)(A)(i)(II)(bb)
23
+ is_pregnant = person("is_pregnant", period)
24
+ # Has attained age of 19 and is under 65 is require to work p.693 (bb)
25
+ age = person("age", period)
26
+ work_required_age = p.age_range.calc(age)
27
+ # parent, guardian, caretaker of a disabled person
28
+ is_dependent = person("is_tax_unit_dependent", period)
29
+ is_disabled = person("is_disabled", period)
30
+ has_disabled = person.tax_unit.any(is_dependent & is_disabled)
31
+ # veteran and is_permanently_and_totally_disabled p.694 (IV)
32
+ is_veteran = person("is_veteran", period)
33
+ is_permanently_and_totally_disabled = person(
34
+ "is_permanently_and_totally_disabled", period
35
+ )
36
+ eligible_veteran = is_veteran & is_permanently_and_totally_disabled
37
+ # blind or disabled or is_incapable_of_self_care p.694 (V)
38
+ is_blind = person("is_blind", period)
39
+ is_incapable_of_self_care = person("is_incapable_of_self_care", period)
40
+ eligible_disabled = is_blind | is_disabled | is_incapable_of_self_care
41
+ # parent, guardian, caretaker of a dependent child 13 years of age or under p.694 (III)
42
+ child_age_eligible = age <= p.dependent_age_limit
43
+ has_eligible_dependent_child = person.tax_unit.any(
44
+ is_dependent & child_age_eligible
45
+ )
46
+ exempted_from_work = (
47
+ is_full_time_student
48
+ | is_pregnant
49
+ | has_disabled
50
+ | eligible_veteran
51
+ | eligible_disabled
52
+ )
53
+ meets_base_requirement = meets_monthly_work_hours | exempted_from_work
54
+ meets_conditions = (
55
+ meets_base_requirement | has_eligible_dependent_child
56
+ )
57
+ return where(work_required_age, meets_conditions, True)
@@ -14,16 +14,16 @@ class meets_snap_abawd_work_requirements(Variable):
14
14
  weekly_hours_worked = person("weekly_hours_worked", period.this_year)
15
15
  # Work at least 20 hours a week
16
16
  is_working = weekly_hours_worked >= p.weekly_hours_threshold
17
- # Under 18 or 55 years of age or older are exempted
18
- worked_exempted_age = p.age_threshold.exempted.calc(age)
17
+ # Adults within an age range are exempt
18
+ working_age_exempt = p.age_threshold.exempted.calc(age)
19
19
  # Unable to work due to a physical or mental limitation
20
20
  is_disabled = person("is_disabled", period)
21
21
  # Parent of a household member under 18
22
22
  is_dependent = person("is_tax_unit_dependent", period)
23
- is_child = age < p.age_threshold.dependent
23
+ is_qualifying_child = age < p.age_threshold.dependent
24
24
  is_parent = person("is_parent", period)
25
- has_child = person.spm_unit.any(is_dependent & is_child)
26
- exempted_parent = is_parent & has_child
25
+ has_child = person.spm_unit.any(is_dependent & is_qualifying_child)
26
+ exempt_parent = is_parent & has_child
27
27
  # Exempted from the general work requirements
28
28
  meets_snap_general_work_requirements = person(
29
29
  "meets_snap_general_work_requirements", period
@@ -34,11 +34,41 @@ class meets_snap_abawd_work_requirements(Variable):
34
34
  is_homeless = person.household("is_homeless", period)
35
35
  # A veteran
36
36
  is_veteran = person("is_veteran", period)
37
+ if p.amended_structure.in_effect:
38
+ is_child = person("is_child", period)
39
+ older_child_dependent = (
40
+ is_dependent & is_child & ~is_qualifying_child
41
+ )
42
+ is_married = person.family("is_married", period)
43
+ has_older_child_dependent = person.spm_unit.any(
44
+ older_child_dependent
45
+ )
46
+ is_head_or_spouse = person("is_tax_unit_head_or_spouse", period)
47
+ has_head_or_spouse_working = person.spm_unit.any(
48
+ is_head_or_spouse & is_working
49
+ )
50
+ exempt_married_person = where(
51
+ is_married & has_older_child_dependent,
52
+ has_head_or_spouse_working,
53
+ 0,
54
+ )
55
+ base_conditions = (
56
+ is_working
57
+ | working_age_exempt
58
+ | is_disabled
59
+ | exempt_parent
60
+ | meets_snap_general_work_requirements
61
+ | is_pregnant
62
+ | exempt_married_person
63
+ )
64
+ if p.amended_structure.sunset_provisions_apply:
65
+ return base_conditions
66
+ return base_conditions | is_homeless | is_veteran
37
67
  return (
38
68
  is_working
39
- | worked_exempted_age
69
+ | working_age_exempt
40
70
  | is_disabled
41
- | exempted_parent
71
+ | exempt_parent
42
72
  | meets_snap_general_work_requirements
43
73
  | is_pregnant
44
74
  | is_homeless
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.354.0
3
+ Version: 1.355.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -76,7 +76,7 @@ policyengine_us/parameters/calibration/gov/usda/snap/participation.yaml,sha256=y
76
76
  policyengine_us/parameters/gov/README.md,sha256=bHUep1_2pLHD3Or8SwjStOWXDIbW9OuYxOd4ml8IXcM,13
77
77
  policyengine_us/parameters/gov/aca/README.md,sha256=AZ2Pw6LWyA33d5mRfG_xbq7M2DKP0HN_roZNpHat8Rw,22
78
78
  policyengine_us/parameters/gov/aca/family_tier_states.yaml,sha256=S240QR72F7-0SgrQWc9WQx23V8tMa6xwnHqAFY86J-A,1620
79
- policyengine_us/parameters/gov/aca/ineligible_immigration_statuses.yaml,sha256=r7KJvNsnpBZoasjWiigTgAI1iFULtFNZKC9nrTjeeiM,425
79
+ policyengine_us/parameters/gov/aca/ineligible_immigration_statuses.yaml,sha256=fePZJGibWwso5uh0fFUhuPfkIECNJQt8G28EmOjU_w0,698
80
80
  policyengine_us/parameters/gov/aca/la_county_rating_area.yaml,sha256=DeMrNznf1drSArrtJyVPRDxEl6jekCMHMENCxO8rvtQ,847
81
81
  policyengine_us/parameters/gov/aca/max_child_count.yaml,sha256=jCAERTNElBGb925Jl86PeNchXYiuZDZFbMaIpTnOnbM,1290
82
82
  policyengine_us/parameters/gov/aca/ptc_income_eligibility.yaml,sha256=h_oDrZjlSqpzW1hA4pEC8-KkCjZItub9II0ePrMo3zs,975
@@ -216,7 +216,6 @@ policyengine_us/parameters/gov/contrib/local/nyc/stc/phase_out/rate/other.yaml,s
216
216
  policyengine_us/parameters/gov/contrib/maryland_child_alliance/README.md,sha256=OowtTBL1gpC5wgrR-7bcDvzttW56J4mo3aTr8P7fIa8,26
217
217
  policyengine_us/parameters/gov/contrib/maryland_child_alliance/abolish_non_refundable_child_eitc.yaml,sha256=U0ZiyJi7cbTAluYhwlkawb_CFZigFvuhxw5BxqGslLU,201
218
218
  policyengine_us/parameters/gov/contrib/maryland_child_alliance/abolish_refundable_child_eitc.yaml,sha256=0I22iW2EvSL29cs0Wq-foKNhqnaRwL45KjrJ1mB8Ch4,193
219
- policyengine_us/parameters/gov/contrib/reconciliation/aca_ptc_immigration_status/in_effect.yaml,sha256=U_tHn5YmEEWhfRx5thnR893x9k2IMLPM9Ybl53dgRmE,601
220
219
  policyengine_us/parameters/gov/contrib/reconciliation/medicaid_work_requirement/age_range.yaml,sha256=6kH-0YN683SmDNwo_FFHb-1TtX3GHKPA8bf_OqOz3fI,693
221
220
  policyengine_us/parameters/gov/contrib/reconciliation/medicaid_work_requirement/monthly_hours_threshold.yaml,sha256=anwcDr2G9CG3xPjKegMhO5pgNggBzVFUkcj_WS3tWMQ,433
222
221
  policyengine_us/parameters/gov/contrib/reconciliation/medicaid_work_requirement/house/in_effect.yaml,sha256=Zbs1YRarrtBPKtyX5x68bIhgRfQDgv0YwDWq8bTdj7M,491
@@ -401,6 +400,10 @@ policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/young_adult/a
401
400
  policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/young_adult/income_limit.yaml,sha256=UE4LruQjqg07hBely2OHXaA75zBEMLG0bQXqvBpWOWc,2051
402
401
  policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/young_child/age_range.yaml,sha256=_QG0llqIj0PGTOFqBEUPODQUuqqyuJTT_pj7qwoTeSQ,397
403
402
  policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/young_child/income_limit.yaml,sha256=SnhvOvm0A9Zt2saYrA9AN0WfLxLG7v5aUV0wVGIG6KY,2320
403
+ policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/age_range.yaml,sha256=3UPPEt5RC7q8Lmaj9JgUtAad9sNtZpA-_8_1COKozS4,647
404
+ policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/applies.yaml,sha256=Plcz4k9uG9Aqcgzb4QdguxzVY1Q8PBtND79WsNuxDCM,394
405
+ policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/dependent_age_limit.yaml,sha256=l1jKx92B319W17pX6NcRlhNNqBBNqAUMALzZEj11d4E,415
406
+ policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/monthly_hours_threshold.yaml,sha256=Nf3v4JmyywkwyH5oyzGNQv9LRh0exwGdB0jqftJZT64,398
404
407
  policyengine_us/parameters/gov/hhs/medicaid/geography/__init__.py,sha256=yM45su1Oif1DWdaJeNy9Oq5iQbo4fENhSJPiJ5tpuMM,314
405
408
  policyengine_us/parameters/gov/hhs/medicaid/geography/aca_rating_areas.csv,sha256=qVMoQBOgUZVuGVHybjElL83yJ1AQlT0J_RZUbLPfUI4,68571
406
409
  policyengine_us/parameters/gov/hhs/medicaid/geography/medicaid_rating_areas.csv,sha256=mL1JeY5WAmJiAC-4Jpm3lA1r-yZYmTSQloLzVe5OCG4,59225
@@ -2981,11 +2984,13 @@ policyengine_us/parameters/gov/usda/snap/student/age_threshold.yaml,sha256=Mp4i1
2981
2984
  policyengine_us/parameters/gov/usda/snap/student/working_hours_threshold.yaml,sha256=Ty0ilklakH3kIZa8diRl6AjePrc9Iht00vZleOSA1vo,407
2982
2985
  policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/README.md,sha256=rWFb8jS69xD4Ldr_IYtLf6Pz8EsmA-0uuXZg2YKhOnM,39
2983
2986
  policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/weekly_hours_threshold.yaml,sha256=jkKg71wRPooV3-qsjDw6Bgwv2NFNyNqI4qoHvW7LOzI,460
2984
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml,sha256=FoG2uBUqVwztvYlngtY6rPdzzPA1wOJFyi1nivrd-tc,576
2985
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml,sha256=OO9i_PhzXriSeE9HQlDQLetTQdZiPsTtpVaJ_t7Wi8w,868
2986
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml,sha256=hu_q0yxl-QP4E2I1-f4Rt7XOizwfoWJPHGVLV_qXhyA,478
2987
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml,sha256=iYprsNLVm7nNTjfLR-5qlPDRNWt4xpqnj0nTekJATBk,491
2988
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml,sha256=Wm9CUD27ETl6rgHLnTmRFvOhg_8baWGW_Z9G3GzUleo,811
2987
+ policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml,sha256=DcVWx0OZKrBB7fiIeZp8zJhDI7EPjN9UCZKuhLmFcjY,702
2988
+ policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml,sha256=X2QMtGQZfwEv9dguoiz9_jHWpKhUtqEiewzPxhvzkRs,999
2989
+ policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/in_effect.yaml,sha256=DOBTkbX0ta7k2ZOzvG_IqOToDsQoVt2fBSwE5xwlEYA,501
2990
+ policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/sunset_provisions_apply.yaml,sha256=c2ovTA_xfSPPhXQk4w0WjHPzzxZ3OB8EI_AV5DRf634,497
2991
+ policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml,sha256=b3mRs1eugZS8SsdCf8RjpVgjah9u8JUFnqrvJDvRxiE,465
2992
+ policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml,sha256=Ujj2AsCLERBrc2ArgGGPIn4GS6cFnovljejtGQLhTw8,478
2993
+ policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml,sha256=TuArqwUfm9v2-qNsdtWN6S5X4TEl4SFGH4MnHqJGXIg,798
2989
2994
  policyengine_us/parameters/gov/usda/wic/README.md,sha256=amyzmtq90wFRF5TJ_CWC8YSWJRyFIIY0FPS2J4ZQzL0,80
2990
2995
  policyengine_us/parameters/gov/usda/wic/abolish_wic.yaml,sha256=kCIi7DP8Kqa23tUvOanqCO6Q-nn_yMPu6b_aCSrLbRM,107
2991
2996
  policyengine_us/parameters/gov/usda/wic/nutritional_risk.yaml,sha256=soQQIdXwDgLG2eP2SGWN0cUr_Zkj9W3yPOzPyT5rUHc,584
@@ -3005,7 +3010,7 @@ policyengine_us/params_on_demand/gov/hhs/medicaid/geography/medicaid_rating_area
3005
3010
  policyengine_us/reforms/__init__.py,sha256=FPV8k2633kzUhbKUK8jC6yJONbnZ5n9zLAq2UL57KH4,113
3006
3011
  policyengine_us/reforms/dc_kccatc.py,sha256=LyGMfEKe-0TgQ-2vCYGOD8W-EGEW8_DgIqCQP89qDyg,4283
3007
3012
  policyengine_us/reforms/dc_tax_threshold_joint_ratio.py,sha256=G-5E1EJFGZ3VeUl_fuyj82nMIttHRNRdlT-x98koJrk,1633
3008
- policyengine_us/reforms/reforms.py,sha256=6Yuz-EP_LtDZptDPea27wuhxN0ZFz6bA0rm9QFjTKcs,9817
3013
+ policyengine_us/reforms/reforms.py,sha256=Zbe8J7l4rH7lmMtxmetQzJQGuzIe4f0nKRYP1b112J8,9132
3009
3014
  policyengine_us/reforms/taxsim.py,sha256=bXNFWfjBX5USld1C7fziT6BBmRy-avz00QtL8WmCHy0,5276
3010
3015
  policyengine_us/reforms/winship.py,sha256=_q74Af1nkmoh0-M6PZJ2FcJAn6v5zf5sAEgvxjwHwyA,3069
3011
3016
  policyengine_us/reforms/additional_tax_bracket/__init__.py,sha256=087GDzojnzkbARUgGTQDMNVWJzjtNZvBGr46jfu1kXc,89
@@ -3058,10 +3063,7 @@ policyengine_us/reforms/local/nyc/stc/adjust_income_limit_by_filing_status_and_e
3058
3063
  policyengine_us/reforms/local/nyc/stc/phase_out/README.md,sha256=MU4Oy0wnRuo-NCEQsmt1jO0gfpt67I4NIFL92DPAv2U,429
3059
3064
  policyengine_us/reforms/local/nyc/stc/phase_out/__init__.py,sha256=jFduppr6cvdSzRSPDvgo_wF5E2x8Bl2Apefb7_wTnrM,110
3060
3065
  policyengine_us/reforms/local/nyc/stc/phase_out/nyc_school_tax_credit_with_phase_out.py,sha256=PSglXbtSomwCNpeU4G1PfTyMpySWsWdP7OGfmRQcHI4,2760
3061
- policyengine_us/reforms/reconciliation/__init__.py,sha256=z8HIV9Yd85IizNxBKH21JZv_8NX_A9bYm7AR8Hrq7Bg,412
3062
- policyengine_us/reforms/reconciliation/aca_ptc_immigration_status.py,sha256=0mkRkyS68ehyCcyNxnVK4KC01IOupPgBOKzQL2BTLyY,1488
3063
- policyengine_us/reforms/reconciliation/reconciled_medicaid_work_requirement.py,sha256=eG64rbGoKnZa-IoGMzyJrkrE0txXWD230AYPVR-W6ko,6536
3064
- policyengine_us/reforms/reconciliation/reconciled_snap_abawd_work_requirement.py,sha256=3IEuoHBi12SQslSnHdrLphWb-XLJH1LNi20BBzrDKi4,5014
3066
+ policyengine_us/reforms/reconciliation/__init__.py,sha256=zs_bYRFWuLJHEvyROJoRsS2Ty2gFy3Xa9yGzLSLG6po,98
3065
3067
  policyengine_us/reforms/reconciliation/reconciled_ssn_for_llc_and_aoc.py,sha256=UPVJ7iZ-MishlGxuvXWnXS6vD3QuLdQ5ffOUiITpMa0,5483
3066
3068
  policyengine_us/reforms/snap/__init__.py,sha256=p98y33zLWFe0CMvINQzRAa6av-yHuejyBFYbciOEC4c,178
3067
3069
  policyengine_us/reforms/snap/abolish_snap_deductions.py,sha256=Ad4J4_qiCXa-ORIxWRCD372ITJiCRzdvqRedHOXX5dw,1032
@@ -3181,6 +3183,7 @@ policyengine_us/tests/policy/baseline/gov/hhs/head_start/is_head_start_income_el
3181
3183
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/takes_up_medicaid_if_eligible.yaml,sha256=oms_o-8TUcO7wWy6gBcJTF8lDpaXHuG0dhUVIcyyQ-M,272
3182
3184
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/costs/medicaid_cost_if_enrolled.yaml,sha256=yfCH1fA8EFAkitMA7lZvN84DRpxV6931-i7c-jlzcLs,1964
3183
3185
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/is_medicaid_eligible.yaml,sha256=qOwotHvU-Np4omY-_ZnQO9r9-RbbwKpnwWlB0P1VBRo,4016
3186
+ policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml,sha256=5b4TJ1XFDRSw1L0mhy9DkOKZrIwenqYFm5sWz3SHVns,1955
3184
3187
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_adult_for_medicaid.yaml,sha256=JgVnd5zaAAva6gVkB0W8xiujGfF4SzFnH7mWFGLhNqc,694
3185
3188
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_infant_for_medicaid.yaml,sha256=g3lXGGDmiGITUOXgdRsnUzFP8wywGveIbM9y2HcMNXI,1347
3186
3189
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_older_child_for_medicaid.yaml,sha256=DgDVaZ0zhPQmGtwPdcXMKQT_Fu4TGkBcUkWSr2kezGw,472
@@ -4889,7 +4892,7 @@ policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/meets_snap_categ
4889
4892
  policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/meets_snap_gross_income_test.yaml,sha256=M2z-8DQU0QRey-NSrUSbaPvJYr_cLemSRmpbjJjW1-0,605
4890
4893
  policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/meets_snap_net_income_test.yaml,sha256=SYs0EnZgyiFUzPJf7j8sM_bIb_bPKvbPZ-uUtVyUj88,381
4891
4894
  policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml,sha256=IPLZFS7Y8DDdsJ25YIR-w1BhQXOIi_x8cUG4qdWD3k8,480
4892
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml,sha256=n5f-M0Qj6nifSsvqK8KOMdGpuh1a-kznyjgpCR6ygp8,1893
4895
+ policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml,sha256=gW2zRWpVvS75V_wIomvNjWIy68bhVdwHaP4Wjm3Dlak,4370
4893
4896
  policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_general_work_requirements.yaml,sha256=_XHqMZQeOADvG09gW1aaayals9whGUBDoP6mmpQesxc,1907
4894
4897
  policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_work_requirements.yaml,sha256=wLLpqUlDcwnKSC9CYxe7Uts_UWnl_-wl_L3tdTRgeus,1157
4895
4898
  policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_fpg.yaml,sha256=kO_teYeT10oJigzqNcSnM-Z6Yx6vjmrwlyTUQwXDoyM,501
@@ -5027,7 +5030,6 @@ policyengine_us/tests/policy/contrib/harris/rent_relief_act/rent_relief_tax_cred
5027
5030
  policyengine_us/tests/policy/contrib/local/nyc/stc/nyc_school_tax_credit_with_phase_out.yaml,sha256=CSTdYl3fCrK5JeMOfHjHXC44s2f-gN__Qe0AwXglCDI,1859
5028
5031
  policyengine_us/tests/policy/contrib/reconciliation/aca_ptc_immigration_status.yaml,sha256=qY5kDBEND4RsfcLFD2XxzDSx-VpioSdFEnm8-cXgvt8,1999
5029
5032
  policyengine_us/tests/policy/contrib/reconciliation/reconciled_medicaid_work_requirement.yaml,sha256=vmrVELQvgix-zQ7wUoi3zTBjQochF8IYpqH4MliGRdo,4340
5030
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_snap_abawd_work_requirement.yaml,sha256=M2gorUvsQJeiradgcdgA3wk69QCxr5cOKNjQ0avG9TU,3899
5031
5033
  policyengine_us/tests/policy/contrib/reconciliation/reconciled_ssn_for_llc_and_aoc.yaml,sha256=C_qZkr9JCIwEo3SiW4Xui8UOTsbeQSNsI64Pa350zdo,2755
5032
5034
  policyengine_us/tests/policy/contrib/snap/abolish_snap_deductions.yaml,sha256=5pgcUuafSNIF2dWsBHMebB7YSrRq9svD0SkzJcvy6po,467
5033
5035
  policyengine_us/tests/policy/contrib/snap/abolish_snap_net_income_test.yaml,sha256=8zy1seb0mfTruajlBK01Vl1vajlABDQak0P-lWmwG98,427
@@ -5227,7 +5229,8 @@ policyengine_us/variables/gov/hhs/medicaid/medicaid_take_up_seed.py,sha256=8oVAz
5227
5229
  policyengine_us/variables/gov/hhs/medicaid/takes_up_medicaid_if_eligible.py,sha256=ZIXU-6i9eq8U9mR657d50Fg5RllZgWt5DSGxhKvunxg,445
5228
5230
  policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_cost_if_enrolled.py,sha256=AFmI71eu1nCxGNZKajTZgHAZHmp4cv3dJKLjQHIUMew,2968
5229
5231
  policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_group.py,sha256=NlZTkPMjmirCvygyzpRH3nGULGD-a-ExnAvgnCL7dqY,2335
5230
- policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py,sha256=Eu5YnE_ERdNX7MKnFbXvs7U3ispQ5KMyOcHvwwNfjOo,1207
5232
+ policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py,sha256=iD7Ke3XTT3FMI3kYvvOILYnY1wBfNrSXDqYX65Hst9Y,1553
5233
+ policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py,sha256=CDjNUXNcgulFtZiXyNcdkE1Qh7qEhUw3YpyZ5re6PWg,2682
5231
5234
  policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py,sha256=0N6_36jCoXn-MHNpS_SdaLmucYUv3mqJnuaQ35o5LoU,1060
5232
5235
  policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py,sha256=BJ9KSJ_hOudfqL1RfEp_TIAwdkkclwqOgaIKPP35H5M,881
5233
5236
  policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.py,sha256=-WOXmRcKwB-9N4N16lvED94i9tQoJJDRLbRixqlFRW8,2071
@@ -7590,7 +7593,7 @@ policyengine_us/variables/gov/usda/snap/eligibility/meets_snap_gross_income_test
7590
7593
  policyengine_us/variables/gov/usda/snap/eligibility/meets_snap_net_income_test.py,sha256=W7E5A2PSaOiKWfvgZcO0FmEWLLlgQFTzcYsMXdNpGxc,695
7591
7594
  policyengine_us/variables/gov/usda/snap/eligibility/snap_assets.py,sha256=7Ja3dvJIHzctgye8Gltvrv6poYElOzdler0rTSZUBQI,240
7592
7595
  policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py,sha256=JEfF2PXbl6rIXcn5lU6wVzr2wscQFc4WdetFZhF9qCM,1193
7593
- policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py,sha256=KRO2B_hAads6TBllp-SIY7d7EyKDi1Y8xfTjbK9f4y8,1926
7596
+ policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py,sha256=OWgHQxb5ogKSYbUFS6kH_CFO3WfcQPk_8KAnX3laPvk,3145
7594
7597
  policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_general_work_requirements.py,sha256=EBS5zHXyoEjsyqirNsQaGg04eecJoLmHXwzDJvjmXAc,1475
7595
7598
  policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_work_requirements.py,sha256=gtkZDYyTzQcsSISn15Os-AxA4fbihUOUerBkMyM786Q,1289
7596
7599
  policyengine_us/variables/gov/usda/snap/income/snap_earned_income.py,sha256=PsA6Fj5c5Cxdday55YXyTK_FPPg725Yh-dglGGITw4c,418
@@ -8114,8 +8117,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8114
8117
  policyengine_us/variables/input/geography.py,sha256=XmBlgXhzBoLRKk6R8taVZHqUw1eU8MbNeGS9iJ7_l44,4506
8115
8118
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8116
8119
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8117
- policyengine_us-1.354.0.dist-info/METADATA,sha256=oMgJJdDi1DAKVlYWJulJui0fI_9DqNxmsbjvADCj4JA,1693
8118
- policyengine_us-1.354.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8119
- policyengine_us-1.354.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8120
- policyengine_us-1.354.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8121
- policyengine_us-1.354.0.dist-info/RECORD,,
8120
+ policyengine_us-1.355.0.dist-info/METADATA,sha256=0mF-mNPrUt-mJGB6a0e774stmrtHdMdfWFidhIuX7cE,1693
8121
+ policyengine_us-1.355.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8122
+ policyengine_us-1.355.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8123
+ policyengine_us-1.355.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8124
+ policyengine_us-1.355.0.dist-info/RECORD,,
@@ -1,13 +0,0 @@
1
- description: The Committee on Ways and Means proposed to limit the Premium Tax Credit to filers of certain immigration statuses , which comes in effect if this is true.
2
-
3
- values:
4
- 0000-01-01: false
5
-
6
- metadata:
7
- unit: bool
8
- period: year
9
- label: Disallowed Premium Tax Credit due to immigration status in effect
10
- reference:
11
- - title: AMENDMENT IN THE NATURE OF A SUBSTITUTE TO COMMITTEE PRINT PROVIDING FOR RECONCILIATION OFFERED BY MR. SMITH OF MISSOURI
12
- # SEC. 112102. CERTAIN ALIENS TREATED AS INELIGIBLE FOR PREMIUM TAX CREDIT page 322
13
- href: https://punchbowl.news/smitmo_017_xml/
@@ -1,55 +0,0 @@
1
- from policyengine_us.model_api import *
2
- from policyengine_core.periods import period as period_
3
- from policyengine_core.periods import instant
4
-
5
-
6
- def create_aca_ptc_immigration_status() -> Reform:
7
-
8
- def modify_parameters(parameters):
9
- parameters.gov.aca.ineligible_immigration_statuses.update(
10
- start=instant("2027-01-01"),
11
- stop=instant("2035-12-31"),
12
- value=[
13
- "ASYLEE",
14
- "DACA_TPS", # daca is eligible
15
- "DEPORTATION_WITHHELD",
16
- "PAROLED_ONE_YEAR",
17
- "UNDOCUMENTED",
18
- "TPS", # tps is NOT eligible
19
- ],
20
- )
21
- return parameters
22
-
23
- class reform(Reform):
24
- def apply(self):
25
- self.modify_parameters(modify_parameters)
26
-
27
- return reform
28
-
29
-
30
- def create_aca_ptc_immigration_status_reform(
31
- parameters, period, bypass: bool = False
32
- ):
33
- if bypass:
34
- return create_aca_ptc_immigration_status()
35
-
36
- p = parameters.gov.contrib.reconciliation.aca_ptc_immigration_status
37
-
38
- reform_active = False
39
- current_period = period_(period)
40
-
41
- for i in range(5):
42
- if p(current_period).in_effect:
43
- reform_active = True
44
- break
45
- current_period = current_period.offset(1, "year")
46
-
47
- if reform_active:
48
- return create_aca_ptc_immigration_status()
49
- else:
50
- return None
51
-
52
-
53
- aca_ptc_immigration_status = create_aca_ptc_immigration_status_reform(
54
- None, None, bypass=True
55
- )
@@ -1,157 +0,0 @@
1
- from policyengine_us.model_api import *
2
- from policyengine_core.periods import period as period_
3
- from policyengine_core.periods import instant
4
- import numpy as np
5
-
6
-
7
- def create_reconciled_medicaid_work_requirement() -> Reform:
8
- class medicaid_work_requirement_eligible(Variable):
9
- value_type = bool
10
- entity = Person
11
- label = "Eligible person for Medicaid via work requirement"
12
- definition_period = YEAR
13
- reference = (
14
- "https://www.budget.senate.gov/imo/media/doc/the_one_big_beautiful_bill_act.pdf=678",
15
- "https://budget.house.gov/imo/media/doc/one_big_beautiful_bill_act_-_full_bill_text.pdf#page=364",
16
- )
17
-
18
- def formula(person, period, parameters):
19
- p = parameters(
20
- period
21
- ).gov.contrib.reconciliation.medicaid_work_requirement
22
- # Works no less than 80 hours p.680 (2)(A)
23
- monthly_hours_worked = person("monthly_hours_worked", period)
24
- meets_monthly_work_hours = (
25
- monthly_hours_worked >= p.monthly_hours_threshold
26
- )
27
- # The individual is enrolled in an educational program at least half-time. p.680 (2)(D)
28
- is_full_time_student = person("is_full_time_student", period)
29
- # pregnant or postpartum medical assistance p.681 (3)(A)(i)(II)(bb)
30
- is_pregnant = person("is_pregnant", period)
31
- # Has attained age of 19 and is under 65 is require to work p.693 (bb)
32
- age = person("age", period)
33
- work_required_age = p.age_range.calc(age)
34
- # parent, guardian, caretaker of a disabled person
35
- is_dependent = person("is_tax_unit_dependent", period)
36
- is_disabled = person("is_disabled", period)
37
- has_disabled = person.tax_unit.any(is_dependent & is_disabled)
38
- # veteran and is_permanently_and_totally_disabled p.694 (IV)
39
- is_veteran = person("is_veteran", period)
40
- is_permanently_and_totally_disabled = person(
41
- "is_permanently_and_totally_disabled", period
42
- )
43
- eligible_veteran = is_veteran & is_permanently_and_totally_disabled
44
- # blind or disabled or is_incapable_of_self_care p.694 (V)
45
- is_blind = person("is_blind", period)
46
- is_incapable_of_self_care = person(
47
- "is_incapable_of_self_care", period
48
- )
49
- eligible_disabled = (
50
- is_blind | is_disabled | is_incapable_of_self_care
51
- )
52
- # House Version
53
- # parent, guardian, caretaker of a dependent child p.377 (III)
54
- # https://budget.house.gov/imo/media/doc/one_big_beautiful_bill_act_-_full_bill_text.pdf#page=377
55
- is_child = person("is_child", period)
56
- has_dependent_child_house = person.tax_unit.any(
57
- is_dependent & is_child
58
- )
59
- # Senate Version
60
- # parent, guardian, caretaker of a dependent child 13 years of age or under p.694 (III)
61
- child_age_eligible = age <= p.senate.dependent_age_limit
62
- has_dependent_child_senate = person.tax_unit.any(
63
- is_dependent & child_age_eligible
64
- )
65
- exempted_from_work = (
66
- is_full_time_student
67
- | is_pregnant
68
- | has_disabled
69
- | eligible_veteran
70
- | eligible_disabled
71
- )
72
- meets_base_requirement = (
73
- meets_monthly_work_hours | exempted_from_work
74
- )
75
- meets_senate_condition = (
76
- meets_base_requirement | has_dependent_child_senate
77
- )
78
- meets_house_condition = (
79
- meets_base_requirement | has_dependent_child_house
80
- )
81
- if p.senate.in_effect:
82
- return where(work_required_age, meets_senate_condition, True)
83
- elif p.house.in_effect:
84
- return where(work_required_age, meets_house_condition, True)
85
- else:
86
- return True
87
-
88
- class is_medicaid_eligible(Variable):
89
- value_type = bool
90
- entity = Person
91
- label = "Eligible for Medicaid"
92
- definition_period = YEAR
93
- reference = (
94
- "https://www.law.cornell.edu/uscode/text/42/1396a#a_10"
95
- "https://www.kff.org/racial-equity-and-health-policy/fact-sheet/key-facts-on-health-coverage-of-immigrants"
96
- )
97
-
98
- def formula(person, period, parameters):
99
- category = person("medicaid_category", period)
100
- categorically_eligible = category != category.possible_values.NONE
101
- istatus = person("immigration_status", period)
102
- undocumented = istatus == istatus.possible_values.UNDOCUMENTED
103
- state = person.household("state_code_str", period)
104
- p = parameters(period).gov.hhs.medicaid.eligibility
105
- state_covers_undocumented = p.undocumented_immigrant[state].astype(
106
- bool
107
- )
108
- immigration_status_eligible = (
109
- ~undocumented | undocumented & state_covers_undocumented
110
- )
111
- work_requirement_eligible = person(
112
- "medicaid_work_requirement_eligible", period
113
- )
114
- ca_ffyp_eligible = person("ca_ffyp_eligible", period)
115
- return (
116
- categorically_eligible
117
- & immigration_status_eligible
118
- & work_requirement_eligible
119
- ) | ca_ffyp_eligible
120
-
121
- class reform(Reform):
122
- def apply(self):
123
- self.update_variable(medicaid_work_requirement_eligible)
124
- self.update_variable(is_medicaid_eligible)
125
-
126
- return reform
127
-
128
-
129
- def create_reconciled_medicaid_work_requirement_reform(
130
- parameters, period, bypass: bool = False
131
- ):
132
- if bypass:
133
- return create_reconciled_medicaid_work_requirement()
134
-
135
- p = parameters.gov.contrib.reconciliation.medicaid_work_requirement
136
-
137
- reform_active = False
138
- current_period = period_(period)
139
-
140
- for i in range(5):
141
- if (
142
- p(current_period).house.in_effect
143
- or p(current_period).senate.in_effect
144
- ):
145
- reform_active = True
146
- break
147
- current_period = current_period.offset(1, "year")
148
-
149
- if reform_active:
150
- return create_reconciled_medicaid_work_requirement()
151
- else:
152
- return None
153
-
154
-
155
- reconciled_medicaid_work_requirement = (
156
- create_reconciled_medicaid_work_requirement_reform(None, None, bypass=True)
157
- )
@@ -1,125 +0,0 @@
1
- from policyengine_us.model_api import *
2
- from policyengine_core.periods import period as period_
3
- from policyengine_core.periods import instant
4
-
5
-
6
- def create_reconciled_snap_abawd_work_requirement() -> Reform:
7
- class meets_snap_abawd_work_requirements(Variable):
8
- value_type = bool
9
- entity = Person
10
- label = "Person is eligible for SNAP benefits via Able-Bodied Adult Without Dependents (ABAWD) work requirements"
11
- definition_period = MONTH
12
- reference = "https://agriculture.house.gov/uploadedfiles/ag-recon-combo_03_xml.pdf#page=4"
13
-
14
- def formula(person, period, parameters):
15
- p = parameters(period).gov.usda.snap.work_requirements.abawd
16
- age = person("monthly_age", period)
17
- weekly_hours_worked = person(
18
- "weekly_hours_worked", period.this_year
19
- )
20
- # Work at least 20 hours a week
21
- is_working = weekly_hours_worked >= p.weekly_hours_threshold
22
- # Under 18 or 65 years of age or older are exempted (baseline is 18 or 65) (A)
23
- worked_exempted_age = p.age_threshold.exempted.calc(age)
24
- # Unable to work due to a physical or mental limitation (B)
25
- is_disabled = person("is_disabled", period)
26
- # Parent of a household member under 7 (baseline is 18) (C)
27
- is_dependent = person("is_tax_unit_dependent", period)
28
- is_qualifying_child = age < p.age_threshold.dependent
29
- is_parent = person("is_parent", period)
30
- has_child = person.spm_unit.any(is_dependent & is_qualifying_child)
31
- exempted_parent = is_parent & has_child
32
- # Exempted from the general work requirements (D)
33
- meets_snap_general_work_requirements = person(
34
- "meets_snap_general_work_requirements", period
35
- )
36
- # Pregnant (E)
37
- is_pregnant = person("is_pregnant", period)
38
- # Homeless (remove in 2030) (F)
39
- is_homeless = person.household("is_homeless", period)
40
- # A veteran (remove in 2030) (G)
41
- is_veteran = person("is_veteran", period)
42
- # Responsible for a child 7 or older, and is married to individual who is working (I)
43
- is_child = person("is_child", period)
44
- older_child_dependent = (
45
- is_dependent & is_child & ~is_qualifying_child
46
- )
47
- is_married = person.family("is_married", period)
48
- has_older_child_dependent = person.spm_unit.any(
49
- older_child_dependent
50
- )
51
- is_head_or_spouse = person("is_tax_unit_head_or_spouse", period)
52
- has_head_or_spouse_working = person.spm_unit.any(
53
- is_head_or_spouse & is_working
54
- )
55
- exempted_married_person = where(
56
- is_married & has_older_child_dependent,
57
- has_head_or_spouse_working,
58
- 0,
59
- )
60
- # Sunset provision effects on 2030-10-01
61
- p_reform = parameters(
62
- period
63
- ).gov.contrib.reconciliation.snap_abawd_work_requirement
64
- base_conditions = (
65
- is_working
66
- | worked_exempted_age
67
- | is_disabled
68
- | exempted_parent
69
- | meets_snap_general_work_requirements
70
- | is_pregnant
71
- | exempted_married_person
72
- )
73
- if p_reform.sunset_provision_in_effect:
74
- return base_conditions
75
- return base_conditions | is_homeless | is_veteran
76
-
77
- def modify_parameters(parameters):
78
- parameters.gov.usda.snap.work_requirements.abawd.age_threshold.dependent.update(
79
- start=instant("2027-01-01"), stop=instant("2035-12-31"), value=7
80
- )
81
- parameters.gov.usda.snap.work_requirements.abawd.age_threshold.exempted[
82
- 2
83
- ].threshold.update(
84
- start=instant("2027-01-01"),
85
- stop=instant("2035-12-31"),
86
- value=65,
87
- )
88
- return parameters
89
-
90
- class reform(Reform):
91
- def apply(self):
92
- self.update_variable(meets_snap_abawd_work_requirements)
93
- self.modify_parameters(modify_parameters)
94
-
95
- return reform
96
-
97
-
98
- def create_reconciled_snap_abawd_work_requirement_reform(
99
- parameters, period, bypass: bool = False
100
- ):
101
- if bypass:
102
- return create_reconciled_snap_abawd_work_requirement()
103
-
104
- p = parameters.gov.contrib.reconciliation.snap_abawd_work_requirement
105
-
106
- reform_active = False
107
- current_period = period_(period)
108
-
109
- for i in range(5):
110
- if p(current_period).in_effect:
111
- reform_active = True
112
- break
113
- current_period = current_period.offset(1, "year")
114
-
115
- if reform_active:
116
- return create_reconciled_snap_abawd_work_requirement()
117
- else:
118
- return None
119
-
120
-
121
- reconciled_snap_abawd_work_requirement = (
122
- create_reconciled_snap_abawd_work_requirement_reform(
123
- None, None, bypass=True
124
- )
125
- )
@@ -1,118 +0,0 @@
1
- - name: Case 1, baseline, age 55 exempted from general work requirement.
2
- period: 2026
3
- absolute_error_margin: 0.9
4
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
5
- input:
6
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: false
7
- age: 55
8
- weekly_hours_worked: 1
9
- is_disabled: false
10
- output:
11
- meets_snap_abawd_work_requirements: true
12
-
13
- - name: Case 2, reform, age 55 is not exempted from general work requirement.
14
- period: 2027
15
- absolute_error_margin: 0.9
16
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
17
- input:
18
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: true
19
- age: 55
20
- weekly_hours_worked: 1
21
- is_disabled: false
22
- output:
23
- meets_snap_abawd_work_requirements: false
24
-
25
- - name: Case 3, baseline, have a child at age 15.
26
- period: 2026-01
27
- absolute_error_margin: 0.9
28
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
29
- input:
30
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: false
31
- people:
32
- person1:
33
- age: 55
34
- weekly_hours_worked: 1
35
- is_disabled: false
36
- is_parent: true
37
- person2:
38
- age: 15
39
- is_disabled: false
40
- is_tax_unit_dependent: true
41
- output:
42
- meets_snap_abawd_work_requirements: [true, true]
43
-
44
- - name: Case 4, reform, have a child at age 15.
45
- period: 2027
46
- absolute_error_margin: 0.9
47
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
48
- input:
49
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: true
50
- people:
51
- person1:
52
- age: 55
53
- weekly_hours_worked: 1
54
- is_disabled: false
55
- is_parent: true
56
- person2:
57
- age: 15
58
- is_disabled: false
59
- is_tax_unit_dependent: true
60
- output:
61
- meets_snap_abawd_work_requirements: [false, true]
62
-
63
- - name: Case 5, reform, have a child at age 6.
64
- period: 2027
65
- absolute_error_margin: 0.9
66
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
67
- input:
68
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: true
69
- people:
70
- person1:
71
- age: 55
72
- weekly_hours_worked: 1
73
- is_disabled: false
74
- is_parent: true
75
- person2:
76
- age: 6
77
- is_disabled: false
78
- is_tax_unit_dependent: true
79
- output:
80
- meets_snap_abawd_work_requirements: [true, true]
81
-
82
- - name: Case 6, reform, is veteran with a child 15 in 2027.
83
- period: 2027
84
- absolute_error_margin: 0.9
85
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
86
- input:
87
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: true
88
- people:
89
- person1:
90
- age: 55
91
- weekly_hours_worked: 1
92
- is_disabled: false
93
- is_veteran: true
94
- person2:
95
- age: 15
96
- is_disabled: false
97
- is_tax_unit_dependent: true
98
- output:
99
- meets_snap_abawd_work_requirements: [true, true]
100
-
101
- - name: Case 7, reform, is veteran with a child 15 in 2031, sunset provision in effect.
102
- period: 2031
103
- absolute_error_margin: 0.9
104
- reforms: policyengine_us.reforms.reconciliation.reconciled_snap_abawd_work_requirement.reconciled_snap_abawd_work_requirement
105
- input:
106
- gov.contrib.reconciliation.snap_abawd_work_requirement.in_effect: true
107
- people:
108
- person1:
109
- age: 55
110
- weekly_hours_worked: 1
111
- is_disabled: false
112
- is_veteran: true
113
- person2:
114
- age: 15
115
- is_disabled: false
116
- is_tax_unit_dependent: true
117
- output:
118
- meets_snap_abawd_work_requirements: [false, true]