policyengine-us 1.418.0__py3-none-any.whl → 1.419.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/dhs/immigration/qualified_noncitizen_status.yaml +18 -0
- policyengine_us/parameters/gov/states/tx/tanf/age_threshold/minor_child.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/age_threshold/student_dependent.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/deductions/child_support.yaml +14 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/deductions/dependent_care.yaml +23 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/deductions/work_expense.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/disregards/applicant_fraction.yaml +12 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_cap.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_months.yaml +14 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_rate.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/sources/earned.yaml +15 -0
- policyengine_us/parameters/gov/states/tx/tanf/income/sources/unearned.yaml +28 -0
- policyengine_us/parameters/gov/states/tx/tanf/minimum_grant.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/additional_person.yaml +17 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/caretaker_with_second_parent.yaml +81 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/caretaker_without_second_parent.yaml +85 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/non_caretaker.yaml +85 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/recognizable_needs/additional_person.yaml +17 -0
- policyengine_us/parameters/gov/states/tx/tanf/needs_standard/recognizable_needs/rate.yaml +17 -0
- policyengine_us/parameters/gov/states/tx/tanf/ottanf/payment_amount.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/payment_standard/additional_person.yaml +19 -0
- policyengine_us/parameters/gov/states/tx/tanf/payment_standard/caretaker_with_second_parent.yaml +105 -0
- policyengine_us/parameters/gov/states/tx/tanf/payment_standard/caretaker_without_second_parent.yaml +112 -0
- policyengine_us/parameters/gov/states/tx/tanf/payment_standard/non_caretaker.yaml +111 -0
- policyengine_us/parameters/gov/states/tx/tanf/resources/resource_limit.yaml +13 -0
- policyengine_us/parameters/gov/states/tx/tanf/resources/vehicle_exemption.yaml +11 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_age_eligible_child.yaml +34 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_assistance_unit_size.yaml +62 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +49 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_child.yaml +34 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_parent.yaml +38 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs_test.yaml +30 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_caretaker_type.yaml +116 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_eligible.yaml +123 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_income_eligible.yaml +69 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_recognizable_needs_test.yaml +54 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_resources_eligible.yaml +44 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/deductions/tx_tanf_child_support_deduction.yaml +55 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.yaml +54 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/earned/tx_tanf_countable_earned_income.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/earned/tx_tanf_earned_income_after_disregard_person.yaml +36 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/tx_tanf_income_for_budgetary_needs_test.yaml +102 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/unearned/tx_tanf_countable_unearned_income.yaml +49 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/integration.yaml +291 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf_crisis_criteria.yaml +17 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf_eligible.yaml +158 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/resources/tx_tanf_countable_resources.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_regular_tanf.yaml +74 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf.yaml +89 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf_payment_standard.yaml +61 -0
- policyengine_us/tests/policy/baseline/household/demographic/person/is_citizen_or_legal_immigrant.yaml +55 -0
- policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_age_eligible_child.py +27 -0
- policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_assistance_unit_size.py +18 -0
- policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.py +19 -0
- policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_child.py +24 -0
- policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_parent.py +24 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs.py +57 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs_test.py +21 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_caretaker_type.py +50 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_eligible.py +29 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_income_eligible.py +40 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_recognizable_needs_test.py +23 -0
- policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_resources_eligible.py +19 -0
- policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_child_support_deduction.py +21 -0
- policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py +39 -0
- policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_countable_earned_income.py +28 -0
- policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_earned_income_after_disregard_person.py +52 -0
- policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_gross_earned_income.py +16 -0
- policyengine_us/variables/gov/states/tx/tanf/income/tx_tanf_countable_income.py +19 -0
- policyengine_us/variables/gov/states/tx/tanf/income/tx_tanf_income_for_budgetary_needs_test.py +47 -0
- policyengine_us/variables/gov/states/tx/tanf/income/unearned/tx_tanf_countable_unearned_income.py +27 -0
- policyengine_us/variables/gov/states/tx/tanf/income/unearned/tx_tanf_gross_unearned_income.py +16 -0
- policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf.py +17 -0
- policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf_crisis_criteria.py +21 -0
- policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf_eligible.py +36 -0
- policyengine_us/variables/gov/states/tx/tanf/resources/tx_tanf_countable_resources.py +31 -0
- policyengine_us/variables/gov/states/tx/tanf/tx_regular_tanf.py +27 -0
- policyengine_us/variables/gov/states/tx/tanf/tx_tanf.py +25 -0
- policyengine_us/variables/gov/states/tx/tanf/tx_tanf_payment_standard.py +51 -0
- policyengine_us/variables/household/demographic/person/is_citizen_or_legal_immigrant.py +22 -0
- {policyengine_us-1.418.0.dist-info → policyengine_us-1.419.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.418.0.dist-info → policyengine_us-1.419.0.dist-info}/RECORD +87 -8
- policyengine_us/parameters/gov/states/tx/tanf/monthly_income_limit.yaml +0 -31
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf_income_limit.yaml +0 -17
- policyengine_us/variables/gov/states/tx/tanf/tx_tanf_income_limit.py +0 -18
- {policyengine_us-1.418.0.dist-info → policyengine_us-1.419.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.418.0.dist-info → policyengine_us-1.419.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.418.0.dist-info → policyengine_us-1.419.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
- name: Case 1, single parent with low income eligible and receives full grant.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person1:
|
|
6
|
+
age: 30
|
|
7
|
+
is_tax_unit_head_or_spouse: true
|
|
8
|
+
employment_income: 0
|
|
9
|
+
person2:
|
|
10
|
+
age: 10
|
|
11
|
+
spm_units:
|
|
12
|
+
spm_unit:
|
|
13
|
+
members: [person1, person2]
|
|
14
|
+
spm_unit_cash_assets: 500
|
|
15
|
+
is_tanf_enrolled: false
|
|
16
|
+
households:
|
|
17
|
+
household:
|
|
18
|
+
members: [person1, person2]
|
|
19
|
+
state_code: TX
|
|
20
|
+
output:
|
|
21
|
+
tx_tanf_assistance_unit_size: 2
|
|
22
|
+
tx_tanf_caretaker_type: CARETAKER_WITHOUT_SECOND_PARENT
|
|
23
|
+
tx_tanf_budgetary_needs: 650
|
|
24
|
+
tx_tanf_recognizable_needs_test: true
|
|
25
|
+
# Recognizable needs = 650 * 0.25 = 162.5
|
|
26
|
+
# Countable income (0) < recognizable needs (162.5) → Pass
|
|
27
|
+
tx_tanf_budgetary_needs_test: true
|
|
28
|
+
# Countable income (0) < budgetary needs (650) → Pass
|
|
29
|
+
tx_tanf_countable_income: 0
|
|
30
|
+
# No earned or unearned income
|
|
31
|
+
tx_tanf_countable_resources: 500
|
|
32
|
+
# Cash assets only, no vehicle: 500 + 0 = 500
|
|
33
|
+
tx_tanf_income_eligible: true
|
|
34
|
+
# Applicant: passes both budgetary AND recognizable needs tests
|
|
35
|
+
tx_tanf_resources_eligible: true
|
|
36
|
+
# Resources (500) <= limit (1,000) → Pass
|
|
37
|
+
tx_tanf_eligible: true
|
|
38
|
+
tx_tanf_payment_standard: 320
|
|
39
|
+
# Caretaker without second parent, size 2 → $320
|
|
40
|
+
tx_tanf: 320
|
|
41
|
+
# Payment = max(payment_standard - countable_income, minimum_grant)
|
|
42
|
+
# Payment = max(320 - 0, 10) = 320
|
|
43
|
+
|
|
44
|
+
- name: Case 2, household with earnings and child care expenses.
|
|
45
|
+
period: 2025-01
|
|
46
|
+
absolute_error_margin: 0.01
|
|
47
|
+
input:
|
|
48
|
+
people:
|
|
49
|
+
person1:
|
|
50
|
+
age: 30
|
|
51
|
+
is_tax_unit_head_or_spouse: true
|
|
52
|
+
employment_income: 3_000 # $250/month
|
|
53
|
+
person2:
|
|
54
|
+
age: 1
|
|
55
|
+
spm_units:
|
|
56
|
+
spm_unit:
|
|
57
|
+
members: [person1, person2]
|
|
58
|
+
spm_unit_cash_assets: 800
|
|
59
|
+
childcare_expenses: 2_400 # $200/month
|
|
60
|
+
is_tanf_enrolled: false
|
|
61
|
+
households:
|
|
62
|
+
household:
|
|
63
|
+
members: [person1, person2]
|
|
64
|
+
state_code: TX
|
|
65
|
+
output:
|
|
66
|
+
tx_tanf_assistance_unit_size: 2
|
|
67
|
+
tx_tanf_caretaker_type: CARETAKER_WITHOUT_SECOND_PARENT
|
|
68
|
+
tx_tanf_gross_earned_income: [250, 0]
|
|
69
|
+
# Person1: 3,000 / 12 = 250, Person2: 0
|
|
70
|
+
tx_tanf_earned_income_after_disregard_person: [87.1, 0]
|
|
71
|
+
# Person1 (applicant, 1/3 disregard):
|
|
72
|
+
# After work expense: 250 - 120 = 130
|
|
73
|
+
# Disregard = 130 / 3 = 43.33
|
|
74
|
+
# After disregard = 130 - 43.33 = 86.67 ≈ 87.1
|
|
75
|
+
tx_tanf_dependent_care_deduction: 200
|
|
76
|
+
# Child age 1 → $200/month cap (min of actual $200 or cap $200)
|
|
77
|
+
tx_tanf_countable_earned_income: 0
|
|
78
|
+
# Sum person-level: 87.1 + 0 = 87.1
|
|
79
|
+
# After dependent care: max(87.1 - 200, 0) = 0
|
|
80
|
+
tx_tanf_countable_income: 0
|
|
81
|
+
# Earned (0) + unearned (0) = 0
|
|
82
|
+
tx_tanf_budgetary_needs: 650
|
|
83
|
+
tx_tanf_income_eligible: true
|
|
84
|
+
# Countable income (0) < budgetary needs (650) AND recognizable needs (162.5)
|
|
85
|
+
tx_tanf_countable_resources: 800
|
|
86
|
+
tx_tanf_resources_eligible: true
|
|
87
|
+
# Resources (800) <= limit (1,000) → Pass
|
|
88
|
+
tx_tanf_eligible: true
|
|
89
|
+
tx_tanf_payment_standard: 320
|
|
90
|
+
tx_tanf: 320
|
|
91
|
+
# Payment = max(320 - 0, 10) = 320
|
|
92
|
+
|
|
93
|
+
- name: Case 3, two parent household exceeds resource limit.
|
|
94
|
+
period: 2025-01
|
|
95
|
+
input:
|
|
96
|
+
people:
|
|
97
|
+
person1:
|
|
98
|
+
age: 30
|
|
99
|
+
is_tax_unit_head_or_spouse: true
|
|
100
|
+
employment_income: 0
|
|
101
|
+
person2:
|
|
102
|
+
age: 29
|
|
103
|
+
is_tax_unit_head_or_spouse: true
|
|
104
|
+
employment_income: 0
|
|
105
|
+
person3:
|
|
106
|
+
age: 10
|
|
107
|
+
spm_units:
|
|
108
|
+
spm_unit:
|
|
109
|
+
members: [person1, person2, person3]
|
|
110
|
+
spm_unit_cash_assets: 15_000
|
|
111
|
+
is_tanf_enrolled: false
|
|
112
|
+
households:
|
|
113
|
+
household:
|
|
114
|
+
members: [person1, person2, person3]
|
|
115
|
+
state_code: TX
|
|
116
|
+
output:
|
|
117
|
+
tx_tanf_assistance_unit_size: 3
|
|
118
|
+
# Both parents + child eligible
|
|
119
|
+
tx_tanf_caretaker_type: CARETAKER_WITH_SECOND_PARENT
|
|
120
|
+
# Two eligible parents
|
|
121
|
+
tx_tanf_countable_income: 0
|
|
122
|
+
tx_tanf_budgetary_needs: 824
|
|
123
|
+
# Caretaker with second parent, size 3 → $824
|
|
124
|
+
tx_tanf_recognizable_needs_test: true
|
|
125
|
+
# Recognizable needs = 824 * 0.25 = 206
|
|
126
|
+
# Countable income (0) < recognizable needs (206) → Pass
|
|
127
|
+
tx_tanf_budgetary_needs_test: true
|
|
128
|
+
# Countable income (0) < budgetary needs (824) → Pass
|
|
129
|
+
tx_tanf_income_eligible: true
|
|
130
|
+
# Applicant: passes both budgetary AND recognizable needs tests
|
|
131
|
+
tx_tanf_countable_resources: 15_000
|
|
132
|
+
# Cash assets: 15,000
|
|
133
|
+
tx_tanf_resources_eligible: false
|
|
134
|
+
# Resources (15,000) > limit (1,000) → Fail
|
|
135
|
+
tx_tanf_eligible: false
|
|
136
|
+
# Failed resources test
|
|
137
|
+
tx_tanf_payment_standard: 405
|
|
138
|
+
# Even though ineligible, payment standard would be $405 for this household
|
|
139
|
+
tx_tanf: 0
|
|
140
|
+
# Ineligible → no payment
|
|
141
|
+
|
|
142
|
+
- name: Case 4, applicant vs continuing recipient with same income.
|
|
143
|
+
period: 2025-01
|
|
144
|
+
absolute_error_margin: 0.01
|
|
145
|
+
input:
|
|
146
|
+
people:
|
|
147
|
+
person1:
|
|
148
|
+
age: 30
|
|
149
|
+
is_tax_unit_head_or_spouse: true
|
|
150
|
+
employment_income: 4_800 # $400/month
|
|
151
|
+
person2:
|
|
152
|
+
age: 10
|
|
153
|
+
spm_units:
|
|
154
|
+
spm_unit:
|
|
155
|
+
members: [person1, person2]
|
|
156
|
+
spm_unit_cash_assets: 800
|
|
157
|
+
is_tanf_enrolled: true # Continuing recipient
|
|
158
|
+
households:
|
|
159
|
+
household:
|
|
160
|
+
members: [person1, person2]
|
|
161
|
+
state_code: TX
|
|
162
|
+
output:
|
|
163
|
+
tx_tanf_assistance_unit_size: 2
|
|
164
|
+
tx_tanf_gross_earned_income: [400, 0]
|
|
165
|
+
tx_tanf_earned_income_after_disregard_person: [28, 0]
|
|
166
|
+
# Person1 (continuing, 90% disregard):
|
|
167
|
+
# After work expense: 400 - 120 = 280
|
|
168
|
+
# After disregard: 280 - min(280 * 0.9, 1400) = 280 - 252 = 28
|
|
169
|
+
tx_tanf_countable_earned_income: 28
|
|
170
|
+
tx_tanf_countable_income: 28
|
|
171
|
+
tx_tanf_recognizable_needs_test: true
|
|
172
|
+
# Recognizable needs = 650 * 0.25 = 162.5
|
|
173
|
+
# Countable income (28) < recognizable needs (162.5) → Pass
|
|
174
|
+
tx_tanf_income_eligible: true
|
|
175
|
+
# Continuing: only needs to pass recognizable needs test
|
|
176
|
+
tx_tanf_eligible: true
|
|
177
|
+
tx_tanf_payment_standard: 320
|
|
178
|
+
tx_tanf: 292
|
|
179
|
+
# Payment = max(320 - 28, 10) = 292
|
|
180
|
+
|
|
181
|
+
- name: Case 5, same household as applicant instead of continuing.
|
|
182
|
+
period: 2025-01
|
|
183
|
+
absolute_error_margin: 0.01
|
|
184
|
+
input:
|
|
185
|
+
people:
|
|
186
|
+
person1:
|
|
187
|
+
age: 30
|
|
188
|
+
is_tax_unit_head_or_spouse: true
|
|
189
|
+
employment_income: 4_800 # $400/month
|
|
190
|
+
person2:
|
|
191
|
+
age: 10
|
|
192
|
+
spm_units:
|
|
193
|
+
spm_unit:
|
|
194
|
+
members: [person1, person2]
|
|
195
|
+
spm_unit_cash_assets: 800
|
|
196
|
+
is_tanf_enrolled: false # New applicant
|
|
197
|
+
households:
|
|
198
|
+
household:
|
|
199
|
+
members: [person1, person2]
|
|
200
|
+
state_code: TX
|
|
201
|
+
output:
|
|
202
|
+
tx_tanf_assistance_unit_size: 2
|
|
203
|
+
tx_tanf_gross_earned_income: [400, 0]
|
|
204
|
+
tx_tanf_earned_income_after_disregard_person: [187.6, 0]
|
|
205
|
+
# Person1 (applicant, 1/3 disregard):
|
|
206
|
+
# After work expense: 400 - 120 = 280
|
|
207
|
+
# Disregard = 280 / 3 = 93.33
|
|
208
|
+
# After disregard = 280 - 93.33 = 186.67 ≈ 187.6
|
|
209
|
+
tx_tanf_countable_earned_income: 187.6
|
|
210
|
+
tx_tanf_countable_income: 187.6
|
|
211
|
+
tx_tanf_budgetary_needs_test: true
|
|
212
|
+
# Countable income (187.6) < budgetary needs (650) → Pass
|
|
213
|
+
tx_tanf_recognizable_needs_test: false
|
|
214
|
+
# Countable income (187.6) > recognizable needs (162.5) → Fail
|
|
215
|
+
tx_tanf_income_eligible: false
|
|
216
|
+
# Applicant: must pass BOTH budgetary AND recognizable needs tests
|
|
217
|
+
tx_tanf_eligible: false
|
|
218
|
+
tx_tanf: 0
|
|
219
|
+
|
|
220
|
+
- name: Case 6, mixed immigration status child-only case.
|
|
221
|
+
period: 2025-01
|
|
222
|
+
input:
|
|
223
|
+
people:
|
|
224
|
+
person1:
|
|
225
|
+
age: 30
|
|
226
|
+
is_tax_unit_head_or_spouse: true
|
|
227
|
+
employment_income: 0
|
|
228
|
+
immigration_status: UNDOCUMENTED
|
|
229
|
+
person2:
|
|
230
|
+
age: 10
|
|
231
|
+
immigration_status: CITIZEN
|
|
232
|
+
person3:
|
|
233
|
+
age: 8
|
|
234
|
+
immigration_status: CITIZEN
|
|
235
|
+
spm_units:
|
|
236
|
+
spm_unit:
|
|
237
|
+
members: [person1, person2, person3]
|
|
238
|
+
spm_unit_cash_assets: 500
|
|
239
|
+
is_tanf_enrolled: false
|
|
240
|
+
households:
|
|
241
|
+
household:
|
|
242
|
+
members: [person1, person2, person3]
|
|
243
|
+
state_code: TX
|
|
244
|
+
output:
|
|
245
|
+
tx_tanf_assistance_unit_size: 2
|
|
246
|
+
# Only the 2 citizen children eligible, parent ineligible
|
|
247
|
+
tx_tanf_caretaker_type: NON_CARETAKER
|
|
248
|
+
# No eligible parents → child-only case
|
|
249
|
+
tx_tanf_budgetary_needs: 369
|
|
250
|
+
# Non-caretaker, size 2 → $369
|
|
251
|
+
tx_tanf_countable_income: 0
|
|
252
|
+
tx_tanf_income_eligible: true
|
|
253
|
+
tx_tanf_resources_eligible: true
|
|
254
|
+
tx_tanf_eligible: true
|
|
255
|
+
tx_tanf_payment_standard: 182
|
|
256
|
+
# Non-caretaker, size 2 → $182
|
|
257
|
+
tx_tanf: 182
|
|
258
|
+
|
|
259
|
+
- name: Case 7, child-only case with children receiving SSI.
|
|
260
|
+
period: 2025-01
|
|
261
|
+
input:
|
|
262
|
+
people:
|
|
263
|
+
person1:
|
|
264
|
+
age: 30
|
|
265
|
+
is_tax_unit_head_or_spouse: true
|
|
266
|
+
employment_income: 0
|
|
267
|
+
person2:
|
|
268
|
+
age: 10
|
|
269
|
+
ssi: 900
|
|
270
|
+
person3:
|
|
271
|
+
age: 8
|
|
272
|
+
spm_units:
|
|
273
|
+
spm_unit:
|
|
274
|
+
members: [person1, person2, person3]
|
|
275
|
+
spm_unit_cash_assets: 500
|
|
276
|
+
is_tanf_enrolled: false
|
|
277
|
+
households:
|
|
278
|
+
household:
|
|
279
|
+
members: [person1, person2, person3]
|
|
280
|
+
state_code: TX
|
|
281
|
+
output:
|
|
282
|
+
tx_tanf_assistance_unit_size: 2
|
|
283
|
+
# Parent + child without SSI eligible
|
|
284
|
+
# Child receiving SSI excluded from assistance unit
|
|
285
|
+
tx_tanf_caretaker_type: CARETAKER_WITHOUT_SECOND_PARENT
|
|
286
|
+
tx_tanf_countable_income: 0
|
|
287
|
+
tx_tanf_income_eligible: true
|
|
288
|
+
tx_tanf_resources_eligible: true
|
|
289
|
+
tx_tanf_eligible: true
|
|
290
|
+
tx_tanf_payment_standard: 320
|
|
291
|
+
tx_tanf: 320
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
- name: Case 1, eligible for OTTANF receives $83.33/month.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
absolute_error_margin: 0.01
|
|
4
|
+
input:
|
|
5
|
+
tx_ottanf_eligible: true
|
|
6
|
+
state_code: TX
|
|
7
|
+
output:
|
|
8
|
+
tx_ottanf: 83.33
|
|
9
|
+
# Eligible → receives $1,000 / 12 = $83.33/month equivalent
|
|
10
|
+
|
|
11
|
+
- name: Case 2, not eligible for OTTANF receives nothing.
|
|
12
|
+
period: 2025-01
|
|
13
|
+
input:
|
|
14
|
+
tx_ottanf_eligible: false
|
|
15
|
+
state_code: TX
|
|
16
|
+
output:
|
|
17
|
+
tx_ottanf: 0
|
|
18
|
+
# Not eligible → no payment
|
|
19
|
+
|
|
20
|
+
- name: Case 3, integration test with full scenario.
|
|
21
|
+
period: 2025-01
|
|
22
|
+
absolute_error_margin: 0.3
|
|
23
|
+
input:
|
|
24
|
+
people:
|
|
25
|
+
person1:
|
|
26
|
+
age: 30
|
|
27
|
+
is_tax_unit_head_or_spouse: true
|
|
28
|
+
employment_income: 2_400 # $200/month - low enough to pass TANF
|
|
29
|
+
immigration_status: CITIZEN
|
|
30
|
+
person2:
|
|
31
|
+
age: 10
|
|
32
|
+
immigration_status: CITIZEN
|
|
33
|
+
spm_units:
|
|
34
|
+
spm_unit:
|
|
35
|
+
members: [person1, person2]
|
|
36
|
+
spm_unit_size: 2
|
|
37
|
+
spm_unit_cash_assets: 800
|
|
38
|
+
tx_ottanf_crisis_criteria: true
|
|
39
|
+
households:
|
|
40
|
+
household:
|
|
41
|
+
members: [person1, person2]
|
|
42
|
+
state_code: TX
|
|
43
|
+
output:
|
|
44
|
+
tx_ottanf_eligible: true
|
|
45
|
+
# Meets TANF eligibility + $10 grant + crisis criteria
|
|
46
|
+
tx_ottanf: 83.33
|
|
47
|
+
# One-time payment of $1,000 / 12 = $83.33/month equivalent
|
policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf_crisis_criteria.yaml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
- name: Case 1, household meets crisis criteria.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
input:
|
|
4
|
+
tx_ottanf_crisis_criteria: true
|
|
5
|
+
state_code: TX
|
|
6
|
+
output:
|
|
7
|
+
tx_ottanf_crisis_criteria: true
|
|
8
|
+
# User input - household experiencing crisis
|
|
9
|
+
|
|
10
|
+
- name: Case 2, household does not meet crisis criteria.
|
|
11
|
+
period: 2025-01
|
|
12
|
+
input:
|
|
13
|
+
tx_ottanf_crisis_criteria: false
|
|
14
|
+
state_code: TX
|
|
15
|
+
output:
|
|
16
|
+
tx_ottanf_crisis_criteria: false
|
|
17
|
+
# User input - household not experiencing crisis
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
- name: Case 1 - Eligible (all requirements met)
|
|
2
|
+
period: 2025-01
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person1:
|
|
6
|
+
age: 30
|
|
7
|
+
employment_income: 2_400 # $200/month - low enough to pass TANF
|
|
8
|
+
person2:
|
|
9
|
+
age: 10
|
|
10
|
+
spm_units:
|
|
11
|
+
spm_unit:
|
|
12
|
+
members: [person1, person2]
|
|
13
|
+
spm_unit_size: 2
|
|
14
|
+
spm_unit_cash_assets: 500
|
|
15
|
+
tx_ottanf_crisis_criteria: true
|
|
16
|
+
households:
|
|
17
|
+
household:
|
|
18
|
+
members: [person1, person2]
|
|
19
|
+
state_code: TX
|
|
20
|
+
output:
|
|
21
|
+
tx_ottanf_eligible: true
|
|
22
|
+
# Low income passes TANF eligibility, meets $10 grant minimum, has crisis
|
|
23
|
+
|
|
24
|
+
- name: Case 2 - Not eligible (no crisis criteria)
|
|
25
|
+
period: 2025-01
|
|
26
|
+
input:
|
|
27
|
+
people:
|
|
28
|
+
person1:
|
|
29
|
+
age: 30
|
|
30
|
+
employment_income: 2_400
|
|
31
|
+
person2:
|
|
32
|
+
age: 10
|
|
33
|
+
spm_units:
|
|
34
|
+
spm_unit:
|
|
35
|
+
members: [person1, person2]
|
|
36
|
+
spm_unit_size: 2
|
|
37
|
+
spm_unit_cash_assets: 500
|
|
38
|
+
tx_ottanf_crisis_criteria: false
|
|
39
|
+
households:
|
|
40
|
+
household:
|
|
41
|
+
members: [person1, person2]
|
|
42
|
+
state_code: TX
|
|
43
|
+
output:
|
|
44
|
+
tx_ottanf_eligible: false
|
|
45
|
+
# Fails crisis criteria requirement
|
|
46
|
+
|
|
47
|
+
- name: Case 3 - Not eligible (income too high for TANF)
|
|
48
|
+
period: 2025-01
|
|
49
|
+
input:
|
|
50
|
+
people:
|
|
51
|
+
person1:
|
|
52
|
+
age: 30
|
|
53
|
+
employment_income: 48_000 # $4,000/month - way too high
|
|
54
|
+
person2:
|
|
55
|
+
age: 10
|
|
56
|
+
spm_units:
|
|
57
|
+
spm_unit:
|
|
58
|
+
members: [person1, person2]
|
|
59
|
+
spm_unit_size: 2
|
|
60
|
+
spm_unit_cash_assets: 500
|
|
61
|
+
tx_ottanf_crisis_criteria: true
|
|
62
|
+
households:
|
|
63
|
+
household:
|
|
64
|
+
members: [person1, person2]
|
|
65
|
+
state_code: TX
|
|
66
|
+
output:
|
|
67
|
+
tx_ottanf_eligible: false
|
|
68
|
+
# Income too high, fails TANF eligibility
|
|
69
|
+
|
|
70
|
+
- name: Case 4 - Not eligible (resources too high)
|
|
71
|
+
period: 2025-01
|
|
72
|
+
input:
|
|
73
|
+
people:
|
|
74
|
+
person1:
|
|
75
|
+
age: 30
|
|
76
|
+
employment_income: 2_400
|
|
77
|
+
person2:
|
|
78
|
+
age: 10
|
|
79
|
+
spm_units:
|
|
80
|
+
spm_unit:
|
|
81
|
+
members: [person1, person2]
|
|
82
|
+
spm_unit_size: 2
|
|
83
|
+
spm_unit_cash_assets: 2_000 # Over $1,000 limit
|
|
84
|
+
tx_ottanf_crisis_criteria: true
|
|
85
|
+
households:
|
|
86
|
+
household:
|
|
87
|
+
members: [person1, person2]
|
|
88
|
+
state_code: TX
|
|
89
|
+
output:
|
|
90
|
+
tx_ottanf_eligible: false
|
|
91
|
+
# Resources too high, fails TANF resources eligibility
|
|
92
|
+
|
|
93
|
+
- name: Case 5 - Not eligible (no eligible child)
|
|
94
|
+
period: 2025-01
|
|
95
|
+
input:
|
|
96
|
+
people:
|
|
97
|
+
person1:
|
|
98
|
+
age: 30
|
|
99
|
+
employment_income: 2_400
|
|
100
|
+
spm_units:
|
|
101
|
+
spm_unit:
|
|
102
|
+
members: [person1]
|
|
103
|
+
spm_unit_size: 1
|
|
104
|
+
spm_unit_cash_assets: 500
|
|
105
|
+
tx_ottanf_crisis_criteria: true
|
|
106
|
+
households:
|
|
107
|
+
household:
|
|
108
|
+
members: [person1]
|
|
109
|
+
state_code: TX
|
|
110
|
+
output:
|
|
111
|
+
tx_ottanf_eligible: false
|
|
112
|
+
# No eligible child, fails TANF child requirement
|
|
113
|
+
|
|
114
|
+
- name: Case 6 - Eligible (low income applicant)
|
|
115
|
+
period: 2025-01
|
|
116
|
+
input:
|
|
117
|
+
people:
|
|
118
|
+
person1:
|
|
119
|
+
age: 30
|
|
120
|
+
employment_income: 1_200 # $100/month
|
|
121
|
+
person2:
|
|
122
|
+
age: 5
|
|
123
|
+
spm_units:
|
|
124
|
+
spm_unit:
|
|
125
|
+
members: [person1, person2]
|
|
126
|
+
spm_unit_size: 2
|
|
127
|
+
spm_unit_cash_assets: 200
|
|
128
|
+
tx_ottanf_crisis_criteria: true
|
|
129
|
+
households:
|
|
130
|
+
household:
|
|
131
|
+
members: [person1, person2]
|
|
132
|
+
state_code: TX
|
|
133
|
+
output:
|
|
134
|
+
tx_ottanf_eligible: true
|
|
135
|
+
# Very low income, passes all TANF tests
|
|
136
|
+
|
|
137
|
+
- name: Case 7 - Eligible (with childcare deduction)
|
|
138
|
+
period: 2025-01
|
|
139
|
+
input:
|
|
140
|
+
people:
|
|
141
|
+
person1:
|
|
142
|
+
employment_income: 6_000 # $500/month
|
|
143
|
+
person2:
|
|
144
|
+
age: 1
|
|
145
|
+
spm_units:
|
|
146
|
+
spm_unit:
|
|
147
|
+
members: [person1, person2]
|
|
148
|
+
spm_unit_size: 2
|
|
149
|
+
spm_unit_cash_assets: 500
|
|
150
|
+
childcare_expenses: 2_400 # $200/month
|
|
151
|
+
tx_ottanf_crisis_criteria: true
|
|
152
|
+
households:
|
|
153
|
+
household:
|
|
154
|
+
members: [person1, person2]
|
|
155
|
+
state_code: TX
|
|
156
|
+
output:
|
|
157
|
+
tx_ottanf_eligible: true
|
|
158
|
+
# With childcare deduction, income is low enough to pass
|
policyengine_us/tests/policy/baseline/gov/states/tx/tanf/resources/tx_tanf_countable_resources.yaml
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
- name: Case 1, only cash assets.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
input:
|
|
4
|
+
spm_unit_cash_assets: 6_000
|
|
5
|
+
household_vehicles_value: 0
|
|
6
|
+
state_code: TX
|
|
7
|
+
output:
|
|
8
|
+
tx_tanf_countable_resources: 6_000
|
|
9
|
+
# Cash assets (6,000) + countable vehicle (0) = 6,000
|
|
10
|
+
|
|
11
|
+
- name: Case 2, cash assets plus vehicle under exemption.
|
|
12
|
+
period: 2025-01
|
|
13
|
+
input:
|
|
14
|
+
spm_unit_cash_assets: 6_000
|
|
15
|
+
household_vehicles_value: 4_000
|
|
16
|
+
state_code: TX
|
|
17
|
+
output:
|
|
18
|
+
tx_tanf_countable_resources: 6_000
|
|
19
|
+
# Cash assets (6,000) + max(4,000 - 4,650, 0) = 6,000 + 0 = 6,000
|
|
20
|
+
|
|
21
|
+
- name: Case 3, vehicle exceeds exemption.
|
|
22
|
+
period: 2025-01
|
|
23
|
+
input:
|
|
24
|
+
spm_unit_cash_assets: 6_000
|
|
25
|
+
household_vehicles_value: 12_000
|
|
26
|
+
state_code: TX
|
|
27
|
+
output:
|
|
28
|
+
tx_tanf_countable_resources: 13_350
|
|
29
|
+
# Cash assets (6,000) + max(12,000 - 4,650, 0) = 6,000 + 7,350 = 13,350
|
|
30
|
+
|
|
31
|
+
- name: Case 4, no assets.
|
|
32
|
+
period: 2025-01
|
|
33
|
+
input:
|
|
34
|
+
spm_unit_cash_assets: 0
|
|
35
|
+
household_vehicles_value: 0
|
|
36
|
+
state_code: TX
|
|
37
|
+
output:
|
|
38
|
+
tx_tanf_countable_resources: 0
|
|
39
|
+
# No cash or vehicle assets
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
- name: Case 1, regular TANF higher than OTTANF.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
absolute_error_margin: 0.3
|
|
4
|
+
input:
|
|
5
|
+
tx_regular_tanf: 320
|
|
6
|
+
tx_ottanf: 83.33
|
|
7
|
+
state_code: TX
|
|
8
|
+
output:
|
|
9
|
+
tx_tanf: 320
|
|
10
|
+
# Regular TANF ($320/month) > OTTANF ($83.33/month) → Choose TANF
|
|
11
|
+
|
|
12
|
+
- name: Case 2, OTTANF higher than regular TANF.
|
|
13
|
+
period: 2025-01
|
|
14
|
+
absolute_error_margin: 0.3
|
|
15
|
+
input:
|
|
16
|
+
tx_regular_tanf: 0
|
|
17
|
+
tx_ottanf: 83.33
|
|
18
|
+
state_code: TX
|
|
19
|
+
output:
|
|
20
|
+
tx_tanf: 83.33
|
|
21
|
+
# Regular TANF ($0) < OTTANF ($83.33/month) → Choose OTTANF
|
|
22
|
+
|
|
23
|
+
- name: Case 3, both zero.
|
|
24
|
+
period: 2025-01
|
|
25
|
+
input:
|
|
26
|
+
tx_regular_tanf: 0
|
|
27
|
+
tx_ottanf: 0
|
|
28
|
+
state_code: TX
|
|
29
|
+
output:
|
|
30
|
+
tx_tanf: 0
|
|
31
|
+
# Both zero → zero
|
|
32
|
+
|
|
33
|
+
- name: Case 4, equal amounts.
|
|
34
|
+
period: 2025-01
|
|
35
|
+
absolute_error_margin: 0.3
|
|
36
|
+
input:
|
|
37
|
+
tx_regular_tanf: 83.33
|
|
38
|
+
tx_ottanf: 83.33
|
|
39
|
+
state_code: TX
|
|
40
|
+
output:
|
|
41
|
+
tx_tanf: 83.33
|
|
42
|
+
# Both equal → returns 83.33
|
|
43
|
+
|
|
44
|
+
- name: Case 5, integration test regular TANF better for low income.
|
|
45
|
+
period: 2025-01
|
|
46
|
+
absolute_error_margin: 0.3
|
|
47
|
+
input:
|
|
48
|
+
people:
|
|
49
|
+
person1:
|
|
50
|
+
age: 30
|
|
51
|
+
is_tax_unit_head_or_spouse: true
|
|
52
|
+
employment_income: 0
|
|
53
|
+
immigration_status: CITIZEN
|
|
54
|
+
person2:
|
|
55
|
+
age: 10
|
|
56
|
+
immigration_status: CITIZEN
|
|
57
|
+
spm_units:
|
|
58
|
+
spm_unit:
|
|
59
|
+
members: [person1, person2]
|
|
60
|
+
spm_unit_cash_assets: 500
|
|
61
|
+
is_tanf_enrolled: false
|
|
62
|
+
tx_ottanf_crisis_criteria: true
|
|
63
|
+
households:
|
|
64
|
+
household:
|
|
65
|
+
members: [person1, person2]
|
|
66
|
+
state_code: TX
|
|
67
|
+
output:
|
|
68
|
+
tx_regular_tanf: 320
|
|
69
|
+
# Low income → eligible for regular TANF
|
|
70
|
+
tx_ottanf: 83.33
|
|
71
|
+
# Also eligible for OTTANF
|
|
72
|
+
tx_tanf: 320
|
|
73
|
+
# Regular TANF ($320) > OTTANF ($83.33) → Choose TANF
|
|
74
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
- name: Case 1, single parent with no income receives full grant.
|
|
2
|
+
period: 2025-01
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person1:
|
|
6
|
+
age: 30
|
|
7
|
+
is_tax_unit_head_or_spouse: true
|
|
8
|
+
employment_income: 0
|
|
9
|
+
person2:
|
|
10
|
+
age: 10
|
|
11
|
+
spm_units:
|
|
12
|
+
spm_unit:
|
|
13
|
+
members: [person1, person2]
|
|
14
|
+
spm_unit_cash_assets: 800
|
|
15
|
+
is_tanf_enrolled: false
|
|
16
|
+
households:
|
|
17
|
+
household:
|
|
18
|
+
members: [person1, person2]
|
|
19
|
+
state_code: TX
|
|
20
|
+
output:
|
|
21
|
+
tx_regular_tanf: 320
|
|
22
|
+
|
|
23
|
+
- name: Case 2, benefit reduced by countable income.
|
|
24
|
+
period: 2025-01
|
|
25
|
+
absolute_error_margin: 0.01
|
|
26
|
+
input:
|
|
27
|
+
people:
|
|
28
|
+
person1:
|
|
29
|
+
age: 30
|
|
30
|
+
is_tax_unit_head_or_spouse: true
|
|
31
|
+
employment_income: 3_000
|
|
32
|
+
person2:
|
|
33
|
+
age: 10
|
|
34
|
+
spm_units:
|
|
35
|
+
spm_unit:
|
|
36
|
+
members: [person1, person2]
|
|
37
|
+
spm_unit_cash_assets: 800
|
|
38
|
+
is_tanf_enrolled: false
|
|
39
|
+
households:
|
|
40
|
+
household:
|
|
41
|
+
members: [person1, person2]
|
|
42
|
+
state_code: TX
|
|
43
|
+
output:
|
|
44
|
+
tx_regular_tanf: 232.90
|
|
45
|
+
|
|
46
|
+
- name: Case 3, minimum grant applied.
|
|
47
|
+
period: 2025-01
|
|
48
|
+
absolute_error_margin: 0.01
|
|
49
|
+
input:
|
|
50
|
+
people:
|
|
51
|
+
person1:
|
|
52
|
+
age: 30
|
|
53
|
+
is_tax_unit_head_or_spouse: true
|
|
54
|
+
employment_income: 3_720
|
|
55
|
+
person2:
|
|
56
|
+
age: 10
|
|
57
|
+
spm_units:
|
|
58
|
+
spm_unit:
|
|
59
|
+
members: [person1, person2]
|
|
60
|
+
spm_unit_cash_assets: 800
|
|
61
|
+
is_tanf_enrolled: false
|
|
62
|
+
households:
|
|
63
|
+
household:
|
|
64
|
+
members: [person1, person2]
|
|
65
|
+
state_code: TX
|
|
66
|
+
output:
|
|
67
|
+
tx_regular_tanf: 192.70
|
|
68
|
+
|
|
69
|
+
- name: Case 4, ineligible household receives zero.
|
|
70
|
+
period: 2025-01
|
|
71
|
+
input:
|
|
72
|
+
people:
|
|
73
|
+
person1:
|
|
74
|
+
age: 30
|
|
75
|
+
is_tax_unit_head_or_spouse: true
|
|
76
|
+
employment_income: 24_000
|
|
77
|
+
person2:
|
|
78
|
+
age: 10
|
|
79
|
+
spm_units:
|
|
80
|
+
spm_unit:
|
|
81
|
+
members: [person1, person2]
|
|
82
|
+
spm_unit_cash_assets: 800
|
|
83
|
+
is_tanf_enrolled: false
|
|
84
|
+
households:
|
|
85
|
+
household:
|
|
86
|
+
members: [person1, person2]
|
|
87
|
+
state_code: TX
|
|
88
|
+
output:
|
|
89
|
+
tx_regular_tanf: 0
|