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.
- policyengine_us/parameters/gov/aca/ineligible_immigration_statuses.yaml +11 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/age_range.yaml +25 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/applies.yaml +13 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/dependent_age_limit.yaml +12 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/monthly_hours_threshold.yaml +12 -0
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml +4 -2
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml +4 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/in_effect.yaml +13 -0
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/sunset_provisions_apply.yaml +13 -0
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml +1 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml +1 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml +1 -1
- policyengine_us/reforms/reconciliation/__init__.py +0 -9
- policyengine_us/reforms/reforms.py +0 -18
- policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml +88 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml +105 -0
- policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py +9 -0
- policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py +57 -0
- policyengine_us/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py +37 -7
- {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/RECORD +24 -21
- policyengine_us/parameters/gov/contrib/reconciliation/aca_ptc_immigration_status/in_effect.yaml +0 -13
- policyengine_us/reforms/reconciliation/aca_ptc_immigration_status.py +0 -55
- policyengine_us/reforms/reconciliation/reconciled_medicaid_work_requirement.py +0 -157
- policyengine_us/reforms/reconciliation/reconciled_snap_abawd_work_requirement.py +0 -125
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_snap_abawd_work_requirement.yaml +0 -118
- {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.354.0.dist-info → policyengine_us-1.355.0.dist-info}/entry_points.txt +0 -0
- {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
|
policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/dependent_age_limit.yaml
ADDED
|
@@ -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
|
policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
description:
|
|
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
|
policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
description:
|
|
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
|
policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/in_effect.yaml
ADDED
|
@@ -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:
|
|
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
|
|
policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
description:
|
|
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
|
policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
description:
|
|
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
|
-
#
|
|
18
|
-
|
|
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
|
-
|
|
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 &
|
|
26
|
-
|
|
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
|
-
|
|
|
69
|
+
| working_age_exempt
|
|
40
70
|
| is_disabled
|
|
41
|
-
|
|
|
71
|
+
| exempt_parent
|
|
42
72
|
| meets_snap_general_work_requirements
|
|
43
73
|
| is_pregnant
|
|
44
74
|
| is_homeless
|
|
@@ -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=
|
|
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=
|
|
2985
|
-
policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml,sha256=
|
|
2986
|
-
policyengine_us/parameters/gov/usda/snap/work_requirements/
|
|
2987
|
-
policyengine_us/parameters/gov/usda/snap/work_requirements/
|
|
2988
|
-
policyengine_us/parameters/gov/usda/snap/work_requirements/general/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
8118
|
-
policyengine_us-1.
|
|
8119
|
-
policyengine_us-1.
|
|
8120
|
-
policyengine_us-1.
|
|
8121
|
-
policyengine_us-1.
|
|
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,,
|
policyengine_us/parameters/gov/contrib/reconciliation/aca_ptc_immigration_status/in_effect.yaml
DELETED
|
@@ -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
|
-
)
|
policyengine_us/tests/policy/contrib/reconciliation/reconciled_snap_abawd_work_requirement.yaml
DELETED
|
@@ -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]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|