policyengine-us 1.418.0__py3-none-any.whl → 1.420.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of policyengine-us might be problematic. Click here for more details.

Files changed (100) hide show
  1. policyengine_us/parameters/gov/dhs/immigration/qualified_noncitizen_status.yaml +18 -0
  2. policyengine_us/parameters/gov/states/tx/tanf/age_threshold/minor_child.yaml +13 -0
  3. policyengine_us/parameters/gov/states/tx/tanf/age_threshold/student_dependent.yaml +13 -0
  4. policyengine_us/parameters/gov/states/tx/tanf/income/deductions/child_support.yaml +14 -0
  5. policyengine_us/parameters/gov/states/tx/tanf/income/deductions/dependent_care.yaml +23 -0
  6. policyengine_us/parameters/gov/states/tx/tanf/income/deductions/work_expense.yaml +13 -0
  7. policyengine_us/parameters/gov/states/tx/tanf/income/disregards/applicant_fraction.yaml +12 -0
  8. policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_cap.yaml +13 -0
  9. policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_months.yaml +14 -0
  10. policyengine_us/parameters/gov/states/tx/tanf/income/disregards/continuing_recipient_rate.yaml +13 -0
  11. policyengine_us/parameters/gov/states/tx/tanf/income/sources/earned.yaml +15 -0
  12. policyengine_us/parameters/gov/states/tx/tanf/income/sources/unearned.yaml +28 -0
  13. policyengine_us/parameters/gov/states/tx/tanf/minimum_grant.yaml +13 -0
  14. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/additional_person.yaml +17 -0
  15. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/caretaker_with_second_parent.yaml +81 -0
  16. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/caretaker_without_second_parent.yaml +85 -0
  17. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/budgetary_needs/non_caretaker.yaml +85 -0
  18. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/recognizable_needs/additional_person.yaml +17 -0
  19. policyengine_us/parameters/gov/states/tx/tanf/needs_standard/recognizable_needs/rate.yaml +17 -0
  20. policyengine_us/parameters/gov/states/tx/tanf/ottanf/payment_amount.yaml +13 -0
  21. policyengine_us/parameters/gov/states/tx/tanf/payment_standard/additional_person.yaml +19 -0
  22. policyengine_us/parameters/gov/states/tx/tanf/payment_standard/caretaker_with_second_parent.yaml +105 -0
  23. policyengine_us/parameters/gov/states/tx/tanf/payment_standard/caretaker_without_second_parent.yaml +112 -0
  24. policyengine_us/parameters/gov/states/tx/tanf/payment_standard/non_caretaker.yaml +111 -0
  25. policyengine_us/parameters/gov/states/tx/tanf/resources/resource_limit.yaml +13 -0
  26. policyengine_us/parameters/gov/states/tx/tanf/resources/vehicle_exemption.yaml +11 -0
  27. policyengine_us/parameters/gov/states/tx/uct/lifeline/fpg_limit.yaml +10 -0
  28. policyengine_us/parameters/gov/states/tx/uct/lifeline/supplement.yaml +10 -0
  29. policyengine_us/tests/policy/baseline/gov/fcc/lifeline/is_lifeline_eligible.yaml +10 -0
  30. policyengine_us/tests/policy/baseline/gov/fcc/lifeline/is_lifeline_income_eligible.yaml +47 -0
  31. policyengine_us/tests/policy/baseline/gov/fcc/lifeline/lifeline.yaml +19 -0
  32. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_age_eligible_child.yaml +34 -0
  33. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_assistance_unit_size.yaml +62 -0
  34. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +49 -0
  35. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_child.yaml +34 -0
  36. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_parent.yaml +38 -0
  37. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs.yaml +65 -0
  38. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs_test.yaml +30 -0
  39. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_caretaker_type.yaml +116 -0
  40. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_eligible.yaml +123 -0
  41. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_income_eligible.yaml +69 -0
  42. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_recognizable_needs_test.yaml +54 -0
  43. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/eligibility/tx_tanf_resources_eligible.yaml +44 -0
  44. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/deductions/tx_tanf_child_support_deduction.yaml +55 -0
  45. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.yaml +54 -0
  46. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/earned/tx_tanf_countable_earned_income.yaml +39 -0
  47. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/earned/tx_tanf_earned_income_after_disregard_person.yaml +36 -0
  48. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/tx_tanf_income_for_budgetary_needs_test.yaml +102 -0
  49. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/income/unearned/tx_tanf_countable_unearned_income.yaml +49 -0
  50. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/integration.yaml +291 -0
  51. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf.yaml +47 -0
  52. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf_crisis_criteria.yaml +17 -0
  53. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/ottanf/tx_ottanf_eligible.yaml +158 -0
  54. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/resources/tx_tanf_countable_resources.yaml +39 -0
  55. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_regular_tanf.yaml +74 -0
  56. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf.yaml +89 -0
  57. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf_payment_standard.yaml +61 -0
  58. policyengine_us/tests/policy/baseline/gov/states/tx/uct/lifeline/integration.yaml +251 -0
  59. policyengine_us/tests/policy/baseline/household/demographic/person/is_citizen_or_legal_immigrant.yaml +55 -0
  60. policyengine_us/variables/gov/fcc/lifeline/is_lifeline_eligible.py +3 -4
  61. policyengine_us/variables/gov/fcc/lifeline/is_lifeline_income_eligible.py +35 -0
  62. policyengine_us/variables/gov/fcc/lifeline/lifeline.py +5 -2
  63. policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_age_eligible_child.py +27 -0
  64. policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_assistance_unit_size.py +18 -0
  65. policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.py +19 -0
  66. policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_child.py +24 -0
  67. policyengine_us/variables/gov/states/tx/tanf/assistance_unit/tx_tanf_eligible_parent.py +24 -0
  68. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs.py +57 -0
  69. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_budgetary_needs_test.py +21 -0
  70. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_caretaker_type.py +50 -0
  71. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_eligible.py +29 -0
  72. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_income_eligible.py +40 -0
  73. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_recognizable_needs_test.py +23 -0
  74. policyengine_us/variables/gov/states/tx/tanf/eligibility/tx_tanf_resources_eligible.py +19 -0
  75. policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_child_support_deduction.py +21 -0
  76. policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py +39 -0
  77. policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_countable_earned_income.py +28 -0
  78. policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_earned_income_after_disregard_person.py +52 -0
  79. policyengine_us/variables/gov/states/tx/tanf/income/earned/tx_tanf_gross_earned_income.py +16 -0
  80. policyengine_us/variables/gov/states/tx/tanf/income/tx_tanf_countable_income.py +19 -0
  81. policyengine_us/variables/gov/states/tx/tanf/income/tx_tanf_income_for_budgetary_needs_test.py +47 -0
  82. policyengine_us/variables/gov/states/tx/tanf/income/unearned/tx_tanf_countable_unearned_income.py +27 -0
  83. policyengine_us/variables/gov/states/tx/tanf/income/unearned/tx_tanf_gross_unearned_income.py +16 -0
  84. policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf.py +17 -0
  85. policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf_crisis_criteria.py +21 -0
  86. policyengine_us/variables/gov/states/tx/tanf/ottanf/tx_ottanf_eligible.py +36 -0
  87. policyengine_us/variables/gov/states/tx/tanf/resources/tx_tanf_countable_resources.py +31 -0
  88. policyengine_us/variables/gov/states/tx/tanf/tx_regular_tanf.py +27 -0
  89. policyengine_us/variables/gov/states/tx/tanf/tx_tanf.py +25 -0
  90. policyengine_us/variables/gov/states/tx/tanf/tx_tanf_payment_standard.py +51 -0
  91. policyengine_us/variables/gov/states/tx/uct/lifeline/tx_lifeline_supplement.py +13 -0
  92. policyengine_us/variables/household/demographic/person/is_citizen_or_legal_immigrant.py +22 -0
  93. {policyengine_us-1.418.0.dist-info → policyengine_us-1.420.0.dist-info}/METADATA +1 -1
  94. {policyengine_us-1.418.0.dist-info → policyengine_us-1.420.0.dist-info}/RECORD +97 -12
  95. policyengine_us/parameters/gov/states/tx/tanf/monthly_income_limit.yaml +0 -31
  96. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/tx_tanf_income_limit.yaml +0 -17
  97. policyengine_us/variables/gov/states/tx/tanf/tx_tanf_income_limit.py +0 -18
  98. {policyengine_us-1.418.0.dist-info → policyengine_us-1.420.0.dist-info}/WHEEL +0 -0
  99. {policyengine_us-1.418.0.dist-info → policyengine_us-1.420.0.dist-info}/entry_points.txt +0 -0
  100. {policyengine_us-1.418.0.dist-info → policyengine_us-1.420.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,49 @@
1
+ - name: Case 1, unearned income with no child support deduction.
2
+ period: 2025-01
3
+ input:
4
+ tx_tanf_gross_unearned_income: 300
5
+ tx_tanf_child_support_deduction: 0
6
+ state_code: TX
7
+ output:
8
+ tx_tanf_countable_unearned_income: 300
9
+ # 300 - 0 = 300
10
+
11
+ - name: Case 2, unearned income with partial child support deduction.
12
+ period: 2025-01
13
+ input:
14
+ tx_tanf_gross_unearned_income: 300
15
+ tx_tanf_child_support_deduction: 50
16
+ state_code: TX
17
+ output:
18
+ tx_tanf_countable_unearned_income: 250
19
+ # 300 - 50 = 250
20
+
21
+ - name: Case 3, unearned income with $75 child support deduction.
22
+ period: 2025-01
23
+ input:
24
+ tx_tanf_gross_unearned_income: 300
25
+ tx_tanf_child_support_deduction: 75
26
+ state_code: TX
27
+ output:
28
+ tx_tanf_countable_unearned_income: 225
29
+ # 300 - 75 = 225
30
+
31
+ - name: Case 4, child support deduction exceeds unearned income.
32
+ period: 2025-01
33
+ input:
34
+ tx_tanf_gross_unearned_income: 50
35
+ tx_tanf_child_support_deduction: 75
36
+ state_code: TX
37
+ output:
38
+ tx_tanf_countable_unearned_income: 0
39
+ # max(50 - 75, 0) = 0
40
+
41
+ - name: Case 5, no unearned income.
42
+ period: 2025-01
43
+ input:
44
+ tx_tanf_gross_unearned_income: 0
45
+ tx_tanf_child_support_deduction: 0
46
+ state_code: TX
47
+ output:
48
+ tx_tanf_countable_unearned_income: 0
49
+ # 0 - 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
@@ -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
@@ -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
+