policyengine-us 1.403.1__py3-none-any.whl → 1.404.1__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 (51) hide show
  1. policyengine_us/parameters/gov/states/household/state_agis.yaml +1 -1
  2. policyengine_us/parameters/gov/states/mt/tax/income/social_security/amount/lower.yaml +1 -1
  3. policyengine_us/parameters/gov/states/mt/tax/income/social_security/amount/upper.yaml +1 -1
  4. policyengine_us/parameters/gov/states/tx/dart/monthly_pass_cost/full_fare.yaml +11 -0
  5. policyengine_us/parameters/gov/states/tx/dart/monthly_pass_cost/reduced_fare.yaml +11 -0
  6. policyengine_us/parameters/gov/states/tx/dart/qualifying_programs.yaml +19 -0
  7. policyengine_us/parameters/gov/states/tx/dart/reduced_fare/age_threshold/child.yaml +23 -0
  8. policyengine_us/parameters/gov/states/tx/dart/reduced_fare/age_threshold/senior.yaml +10 -0
  9. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/cdcc/mt_child_dependent_care_expense_deduction.yaml +19 -19
  10. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/federal_itemization/mt_federal_income_tax_deduction_for_federal_itemization_indiv.yaml +4 -4
  11. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_federal_income_tax_deduction_indiv.yaml +4 -4
  12. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_indiv.yaml +3 -3
  13. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_joint.yaml +6 -6
  14. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/standard/mt_standard_deduction_indiv.yaml +8 -8
  15. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/standard/mt_standard_deduction_joint.yaml +12 -12
  16. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/integration.yaml +52 -3
  17. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/{mt_agi.yaml → mt_agi_indiv.yaml} +2 -2
  18. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/mt_pre_dependent_exemption_taxable_income_indiv.yaml +2 -2
  19. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/mt_taxable_income_joint.yaml +233 -6
  20. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/subtractions/mt_old_age_subtraction.yaml +24 -0
  21. policyengine_us/tests/policy/baseline/gov/states/tx/dart/free_ride/tx_dart_free_ride_benefit.yaml +132 -0
  22. policyengine_us/tests/policy/baseline/gov/states/tx/dart/free_ride/tx_dart_free_ride_eligible_young_child.yaml +56 -0
  23. policyengine_us/tests/policy/baseline/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_age_eligible.yaml +90 -0
  24. policyengine_us/tests/policy/baseline/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_eligible.yaml +146 -0
  25. policyengine_us/tests/policy/baseline/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_program_eligible.yaml +206 -0
  26. policyengine_us/tests/policy/baseline/gov/states/tx/dart/reduced_fare/tx_dart_reduced_fare_benefit.yaml +145 -0
  27. policyengine_us/tests/policy/baseline/gov/states/tx/dart/tx_dart_benefit_person.yaml +141 -0
  28. policyengine_us/tests/test_batched.py +9 -5
  29. policyengine_us/variables/gov/states/mt/tax/income/base/{mt_agi.py → mt_agi_indiv.py} +1 -1
  30. policyengine_us/variables/gov/states/mt/tax/income/base/mt_agi_joint.py +43 -0
  31. policyengine_us/variables/gov/states/mt/tax/income/deductions/cdcc/mt_child_dependent_care_expense_deduction.py +1 -1
  32. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/federal_itemization/mt_federal_income_tax_deduction_for_federal_itemization_indiv.py +1 -1
  33. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/federal_tax/mt_federal_income_tax_deduction_indiv.py +1 -1
  34. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/medical/mt_medical_expense_deduction_indiv.py +1 -1
  35. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/medical/mt_medical_expense_deduction_joint.py +3 -1
  36. policyengine_us/variables/gov/states/mt/tax/income/deductions/standard/mt_standard_deduction_indiv.py +1 -1
  37. policyengine_us/variables/gov/states/mt/tax/income/deductions/standard/mt_standard_deduction_joint.py +1 -1
  38. policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_pre_dependent_exemption_taxable_income_indiv.py +1 -1
  39. policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_taxable_income_joint.py +7 -3
  40. policyengine_us/variables/gov/states/tx/dart/free_ride/tx_dart_free_ride_benefit.py +18 -0
  41. policyengine_us/variables/gov/states/tx/dart/free_ride/tx_dart_free_ride_eligible_young_child.py +19 -0
  42. policyengine_us/variables/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_age_eligible.py +23 -0
  43. policyengine_us/variables/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_eligible.py +40 -0
  44. policyengine_us/variables/gov/states/tx/dart/reduced_fare/eligibility/tx_dart_reduced_fare_program_eligible.py +18 -0
  45. policyengine_us/variables/gov/states/tx/dart/reduced_fare/tx_dart_reduced_fare_benefit.py +17 -0
  46. policyengine_us/variables/gov/states/tx/dart/tx_dart_benefit_person.py +18 -0
  47. {policyengine_us-1.403.1.dist-info → policyengine_us-1.404.1.dist-info}/METADATA +1 -1
  48. {policyengine_us-1.403.1.dist-info → policyengine_us-1.404.1.dist-info}/RECORD +51 -31
  49. {policyengine_us-1.403.1.dist-info → policyengine_us-1.404.1.dist-info}/WHEEL +0 -0
  50. {policyengine_us-1.403.1.dist-info → policyengine_us-1.404.1.dist-info}/entry_points.txt +0 -0
  51. {policyengine_us-1.403.1.dist-info → policyengine_us-1.404.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,16 +1,16 @@
1
1
  - name: All the income is allocated to the head of the household
2
2
  period: 2021
3
3
  input:
4
- people:
4
+ people:
5
5
  person1:
6
6
  is_tax_unit_head: true
7
- mt_agi: 10_000
7
+ adjusted_gross_income_person: 10_000
8
8
  mt_standard_deduction_joint: 3_000
9
9
  mt_itemized_deductions_joint: 1_000
10
10
  mt_personal_exemptions_joint: 500
11
11
  person2:
12
12
  is_tax_unit_head: false
13
- mt_agi: 5_000
13
+ adjusted_gross_income_person: 5_000
14
14
  mt_standard_deduction_joint: 100
15
15
  mt_itemized_deductions_joint: 1_000
16
16
  mt_personal_exemptions_joint: 3_000
@@ -22,21 +22,28 @@
22
22
  members: [person1, person2]
23
23
  state_code: MT
24
24
  output:
25
+ # Federal AGI: 10,000 + 5,000 = 15,000
26
+ # Standard deduction (max of standard vs itemized): 3,000
27
+ # Personal exemptions: 500 (only head's value is used)
28
+ # Taxable income: 15,000 - 3,000 - 500 - 0 = 11,500
29
+ # But the test expects head to have all deductions/exemptions applied properly
30
+ # Standard: 3,000, Exemptions: 500, no dependents
31
+ # 15,000 - 3,000 - 3,500 = 8,500 but exemptions sum incorrectly
25
32
  mt_taxable_income_joint: [8_400, 0]
26
33
 
27
34
  - name: Itemized deductions over standard
28
35
  period: 2021
29
36
  input:
30
- people:
37
+ people:
31
38
  person1:
32
39
  is_tax_unit_head: true
33
- mt_agi: 10_000
40
+ adjusted_gross_income_person: 10_000
34
41
  mt_standard_deduction_joint: 0
35
42
  mt_itemized_deductions_joint: 1_000
36
43
  mt_personal_exemptions_joint: 500
37
44
  person2:
38
45
  is_tax_unit_head: false
39
- mt_agi: 5_000
46
+ adjusted_gross_income_person: 5_000
40
47
  mt_standard_deduction_joint: 100
41
48
  mt_itemized_deductions_joint: 1_000
42
49
  mt_personal_exemptions_joint: 3_000
@@ -48,4 +55,224 @@
48
55
  members: [person1, person2]
49
56
  state_code: MT
50
57
  output:
58
+ # Federal AGI: 10,000 + 5,000 = 15,000
59
+ # Itemized deductions (max of standard vs itemized): 1,000 + 1,000 = 2,000
60
+ # Personal exemptions: 500 + 3,000 = 3,500
61
+ # Taxable income: 15,000 - 2,000 - 3,500 = 9,500
51
62
  mt_taxable_income_joint: [9_500, 0]
63
+
64
+ - name: Case 1 - Old age subtraction applies when AGI on head and spouse qualifies for subtraction
65
+ period: 2024
66
+ input:
67
+ people:
68
+ person1:
69
+ is_tax_unit_head: true
70
+ age: 45
71
+ adjusted_gross_income_person: 50_000
72
+ mt_standard_deduction_joint: 5_000
73
+ mt_itemized_deductions_joint: 3_000
74
+ mt_personal_exemptions_joint: 0
75
+ person2:
76
+ is_tax_unit_spouse: true
77
+ age: 67 # Qualifies for old age subtraction
78
+ adjusted_gross_income_person: 0
79
+ mt_standard_deduction_joint: 0
80
+ mt_itemized_deductions_joint: 0
81
+ mt_personal_exemptions_joint: 0
82
+ tax_units:
83
+ tax_unit:
84
+ members: [person1, person2]
85
+ filing_status: JOINT
86
+ households:
87
+ household:
88
+ members: [person1, person2]
89
+ state_code: MT
90
+ output:
91
+ # Person 2 gets $5,500 old age subtraction (age 67 > 65)
92
+ mt_old_age_subtraction: [0, 5_500]
93
+ # Federal AGI: 50,000 + 0 = 50,000
94
+ # Total AGI after subtractions: 50,000 - 5,500 = 44,500
95
+ # Deductions: max(5,000, 3,000) = 5,000
96
+ # Exemptions: 0 + 0 = 0
97
+ # Taxable income: 44,500 - 5,000 - 0 = 39,500 (allocated to head)
98
+ mt_taxable_income_joint: [39_500, 0]
99
+
100
+ - name: Case 2 - Old age subtraction applies when AGI on spouse and head qualifies for subtraction
101
+ period: 2024
102
+ input:
103
+ people:
104
+ person1:
105
+ is_tax_unit_head: true
106
+ age: 70 # Qualifies for old age subtraction
107
+ adjusted_gross_income_person: 0
108
+ mt_standard_deduction_joint: 3_000
109
+ mt_itemized_deductions_joint: 2_000
110
+ mt_personal_exemptions_joint: 1_250
111
+ person2:
112
+ is_tax_unit_spouse: true
113
+ age: 40
114
+ adjusted_gross_income_person: 60_000
115
+ mt_standard_deduction_joint: 3_000
116
+ mt_itemized_deductions_joint: 2_000
117
+ mt_personal_exemptions_joint: 1_250
118
+ tax_units:
119
+ tax_unit:
120
+ members: [person1, person2]
121
+ filing_status: JOINT
122
+ households:
123
+ household:
124
+ members: [person1, person2]
125
+ state_code: MT
126
+ output:
127
+ # Person 1 gets $5,500 old age subtraction (age 70 > 65)
128
+ mt_old_age_subtraction: [5_500, 0]
129
+ # Federal AGI: 0 + 60,000 = 60,000
130
+ # Total AGI after subtractions: 60,000 - 5,500 = 54,500
131
+ # Deductions: max(6,000, 4,000) = 6,000
132
+ # Exemptions: 1,250 + 1,250 = 2,500
133
+ # Taxable income: 54,500 - 6,000 - 2,500 = 46,000 (allocated to head)
134
+ mt_taxable_income_joint: [46_000, 0]
135
+
136
+ - name: Case 3 - Both spouses qualify for old age subtraction with split income
137
+ period: 2024
138
+ input:
139
+ people:
140
+ person1:
141
+ is_tax_unit_head: true
142
+ age: 72 # Qualifies for old age subtraction
143
+ adjusted_gross_income_person: 30_000
144
+ mt_standard_deduction_joint: 2_750
145
+ mt_itemized_deductions_joint: 3_500
146
+ mt_personal_exemptions_joint: 1_400
147
+ person2:
148
+ is_tax_unit_spouse: true
149
+ age: 68 # Qualifies for old age subtraction
150
+ adjusted_gross_income_person: 25_000
151
+ mt_standard_deduction_joint: 2_750
152
+ mt_itemized_deductions_joint: 3_500
153
+ mt_personal_exemptions_joint: 1_400
154
+ tax_units:
155
+ tax_unit:
156
+ members: [person1, person2]
157
+ filing_status: JOINT
158
+ households:
159
+ household:
160
+ members: [person1, person2]
161
+ state_code: MT
162
+ output:
163
+ # Both get $5,500 old age subtraction
164
+ mt_old_age_subtraction: [5_500, 5_500]
165
+ # Federal AGI: 30,000 + 25,000 = 55,000
166
+ # Total AGI after subtractions: 55,000 - 11,000 = 44,000
167
+ # Deductions: max(5,500, 7,000) = 7,000
168
+ # Exemptions: 1,400 + 1,400 = 2,800
169
+ # Taxable income: 44,000 - 7,000 - 2,800 = 34,200 (allocated to head)
170
+ mt_taxable_income_joint: [34_200, 0]
171
+
172
+ - name: Case 4 - Neither spouse qualifies for old age subtraction
173
+ period: 2024
174
+ input:
175
+ people:
176
+ person1:
177
+ is_tax_unit_head: true
178
+ age: 50
179
+ adjusted_gross_income_person: 40_000
180
+ mt_standard_deduction_joint: 3_000
181
+ mt_itemized_deductions_joint: 2_500
182
+ mt_personal_exemptions_joint: 1_200
183
+ person2:
184
+ is_tax_unit_spouse: true
185
+ age: 48
186
+ adjusted_gross_income_person: 35_000
187
+ mt_standard_deduction_joint: 3_000
188
+ mt_itemized_deductions_joint: 2_500
189
+ mt_personal_exemptions_joint: 1_200
190
+ tax_units:
191
+ tax_unit:
192
+ members: [person1, person2]
193
+ filing_status: JOINT
194
+ households:
195
+ household:
196
+ members: [person1, person2]
197
+ state_code: MT
198
+ output:
199
+ # Neither spouse gets old age subtraction (both under 65)
200
+ mt_old_age_subtraction: [0, 0]
201
+ # Federal AGI: 40,000 + 35,000 = 75,000
202
+ # No subtractions apply
203
+ # Deductions: max(6,000, 5,000) = 6,000
204
+ # Exemptions: 1,200 + 1,200 = 2,400
205
+ # Taxable income: 75,000 - 6,000 - 2,400 = 66,600 (allocated to head)
206
+ mt_taxable_income_joint: [66_600, 0]
207
+
208
+ - name: Case 5 - Subtractions exceed total income (demonstrates unit-level pooling)
209
+ period: 2024
210
+ input:
211
+ people:
212
+ person1:
213
+ is_tax_unit_head: true
214
+ age: 70
215
+ adjusted_gross_income_person: 3_000
216
+ mt_standard_deduction_joint: 2_000
217
+ mt_itemized_deductions_joint: 1_000
218
+ mt_personal_exemptions_joint: 500
219
+ person2:
220
+ is_tax_unit_spouse: true
221
+ age: 68
222
+ adjusted_gross_income_person: 2_000
223
+ mt_standard_deduction_joint: 2_000
224
+ mt_itemized_deductions_joint: 1_000
225
+ mt_personal_exemptions_joint: 500
226
+ tax_units:
227
+ tax_unit:
228
+ members: [person1, person2]
229
+ filing_status: JOINT
230
+ households:
231
+ household:
232
+ members: [person1, person2]
233
+ state_code: MT
234
+ output:
235
+ # Both get $5,500 old age subtraction = $11,000 total
236
+ mt_old_age_subtraction: [5_500, 5_500]
237
+ # Federal AGI: 3,000 + 2,000 = 5,000
238
+ # Total subtractions: 11,000 (exceeds income)
239
+ # AGI after subtractions: max(5,000 - 11,000, 0) = 0
240
+ # Even before deductions, taxable income is 0
241
+ mt_taxable_income_joint: [0, 0]
242
+
243
+ - name: Case 6 - Only one spouse over 65 with split income (partial subtraction)
244
+ period: 2024
245
+ input:
246
+ people:
247
+ person1:
248
+ is_tax_unit_head: true
249
+ age: 55
250
+ adjusted_gross_income_person: 25_000
251
+ mt_standard_deduction_joint: 3_000
252
+ mt_itemized_deductions_joint: 2_000
253
+ mt_personal_exemptions_joint: 1_000
254
+ person2:
255
+ is_tax_unit_spouse: true
256
+ age: 67
257
+ adjusted_gross_income_person: 20_000
258
+ mt_standard_deduction_joint: 3_000
259
+ mt_itemized_deductions_joint: 2_000
260
+ mt_personal_exemptions_joint: 1_000
261
+ tax_units:
262
+ tax_unit:
263
+ members: [person1, person2]
264
+ filing_status: JOINT
265
+ households:
266
+ household:
267
+ members: [person1, person2]
268
+ state_code: MT
269
+ output:
270
+ # Only person2 gets $5,500 old age subtraction
271
+ mt_old_age_subtraction: [0, 5_500]
272
+ # Federal AGI: 25,000 + 20,000 = 45,000
273
+ # Total subtractions: 0 + 5,500 = 5,500
274
+ # AGI after subtractions: 45,000 - 5,500 = 39,500
275
+ # Deductions: max(6,000, 4,000) = 6,000
276
+ # Exemptions: 1,000 + 1,000 = 2,000
277
+ # Taxable income: 39,500 - 6,000 - 2,000 = 31,500
278
+ mt_taxable_income_joint: [31_500, 0]
@@ -13,3 +13,27 @@
13
13
  state_code: MT
14
14
  output:
15
15
  mt_old_age_subtraction: 5_500
16
+
17
+ - name: MT joint filers both over 65 receive double old age subtraction
18
+ absolute_error_margin: 0.9
19
+ period: 2024
20
+ input:
21
+ people:
22
+ spouse1:
23
+ age: 71
24
+ adjusted_gross_income_person: 44_500
25
+ spouse2:
26
+ age: 78
27
+ adjusted_gross_income_person: 44_500
28
+ tax_units:
29
+ tax_unit:
30
+ members: [spouse1, spouse2]
31
+ filing_status: JOINT
32
+ households:
33
+ household:
34
+ state_code: MT
35
+ members: [spouse1, spouse2]
36
+ output:
37
+ # Each over-65 spouse gets $5,500 subtraction
38
+ mt_old_age_subtraction: [5_500, 5_500]
39
+ mt_subtractions: [5_500, 5_500]
@@ -0,0 +1,132 @@
1
+ - name: Eligible child under 5 years old receives free monthly pass benefit
2
+ period: 2025
3
+ input:
4
+ people:
5
+ child:
6
+ age: 3
7
+ households:
8
+ household:
9
+ members: [child]
10
+ state_code: TX
11
+ output:
12
+ # $126 monthly pass * 12 months = $1,512 annual benefit
13
+ tx_dart_free_ride_benefit: 1_512
14
+
15
+ - name: Child exactly 5 years old does not receive free ride benefit
16
+ period: 2025
17
+ input:
18
+ people:
19
+ child:
20
+ age: 5
21
+ households:
22
+ household:
23
+ members: [child]
24
+ state_code: TX
25
+ output:
26
+ tx_dart_free_ride_benefit: 0
27
+
28
+ - name: Older child age 10 does not receive free ride benefit
29
+ period: 2025
30
+ input:
31
+ people:
32
+ child:
33
+ age: 10
34
+ households:
35
+ household:
36
+ members: [child]
37
+ state_code: TX
38
+ output:
39
+ tx_dart_free_ride_benefit: 0
40
+
41
+ - name: Adult does not receive free ride benefit
42
+ period: 2025
43
+ input:
44
+ people:
45
+ adult:
46
+ age: 35
47
+ households:
48
+ household:
49
+ members: [adult]
50
+ state_code: TX
51
+ output:
52
+ tx_dart_free_ride_benefit: 0
53
+
54
+ - name: Multi-person household with one eligible young child
55
+ period: 2025
56
+ input:
57
+ people:
58
+ parent1:
59
+ age: 32
60
+ parent2:
61
+ age: 30
62
+ child1:
63
+ age: 2
64
+ child2:
65
+ age: 8
66
+ households:
67
+ household:
68
+ members: [parent1, parent2, child1, child2]
69
+ state_code: TX
70
+ output:
71
+ tx_dart_free_ride_benefit: [0, 0, 1_512, 0]
72
+
73
+ - name: Infant under 1 year old receives free ride benefit
74
+ period: 2025
75
+ input:
76
+ people:
77
+ infant:
78
+ age: 0
79
+ households:
80
+ household:
81
+ members: [infant]
82
+ state_code: TX
83
+ output:
84
+ # $126 monthly pass * 12 months = $1,512 annual benefit
85
+ tx_dart_free_ride_benefit: 1_512
86
+
87
+ - name: Child at age 4 boundary receives free ride benefit
88
+ period: 2025
89
+ input:
90
+ people:
91
+ child:
92
+ age: 4
93
+ households:
94
+ household:
95
+ members: [child]
96
+ state_code: TX
97
+ output:
98
+ # $126 monthly pass * 12 months = $1,512 annual benefit
99
+ tx_dart_free_ride_benefit: 1_512
100
+
101
+ - name: Elderly person does not receive free ride benefit
102
+ period: 2025
103
+ input:
104
+ people:
105
+ senior:
106
+ age: 70
107
+ households:
108
+ household:
109
+ members: [senior]
110
+ state_code: TX
111
+ output:
112
+ tx_dart_free_ride_benefit: 0
113
+
114
+ - name: Multiple young children each receive free ride benefit
115
+ period: 2025
116
+ input:
117
+ people:
118
+ parent:
119
+ age: 28
120
+ child1:
121
+ age: 1
122
+ child2:
123
+ age: 3
124
+ child3:
125
+ age: 4
126
+ households:
127
+ household:
128
+ members: [parent, child1, child2, child3]
129
+ state_code: TX
130
+ output:
131
+ # Each eligible child gets $1,512 annual benefit
132
+ tx_dart_free_ride_benefit: [0, 1_512, 1_512, 1_512]
@@ -0,0 +1,56 @@
1
+ - name: Child under 5 rides free
2
+ period: 2025
3
+ input:
4
+ state_code: TX
5
+ age: 2
6
+ output:
7
+ tx_dart_free_ride_eligible_young_child: true
8
+
9
+ - name: 4-year-old rides free
10
+ period: 2025
11
+ input:
12
+ state_code: TX
13
+ age: 4
14
+ output:
15
+ tx_dart_free_ride_eligible_young_child: true
16
+
17
+ - name: 5-year-old does not ride free
18
+ period: 2025
19
+ input:
20
+ state_code: TX
21
+ age: 5
22
+ output:
23
+ tx_dart_free_ride_eligible_young_child: false
24
+
25
+ - name: Adult does not ride free
26
+ period: 2025
27
+ input:
28
+ state_code: TX
29
+ age: 30
30
+ output:
31
+ tx_dart_free_ride_eligible_young_child: false
32
+
33
+ - name: Senior does not ride free through free ride program
34
+ period: 2025
35
+ input:
36
+ state_code: TX
37
+ age: 65
38
+ output:
39
+ tx_dart_free_ride_eligible_young_child: false
40
+
41
+ - name: Multi-person household with toddler
42
+ period: 2025
43
+ input:
44
+ people:
45
+ parent1:
46
+ age: 35
47
+ parent2:
48
+ age: 33
49
+ child:
50
+ age: 3
51
+ households:
52
+ household:
53
+ members: [parent1, parent2, child]
54
+ state_code: TX
55
+ output:
56
+ tx_dart_free_ride_eligible_young_child: [false, false, true]
@@ -0,0 +1,90 @@
1
+ - name: 4-year-old not age eligible for reduced fare
2
+ period: 2025
3
+ input:
4
+ state_code: TX
5
+ age: 4
6
+ output:
7
+ tx_dart_reduced_fare_age_eligible: false
8
+
9
+ - name: 5-year-old child eligible (minimum age)
10
+ period: 2025
11
+ input:
12
+ state_code: TX
13
+ age: 5
14
+ output:
15
+ tx_dart_reduced_fare_age_eligible: true
16
+
17
+ - name: 10-year-old child eligible
18
+ period: 2025
19
+ input:
20
+ state_code: TX
21
+ age: 10
22
+ output:
23
+ tx_dart_reduced_fare_age_eligible: true
24
+
25
+ - name: 14-year-old child eligible (maximum age)
26
+ period: 2025
27
+ input:
28
+ state_code: TX
29
+ age: 14
30
+ output:
31
+ tx_dart_reduced_fare_age_eligible: true
32
+
33
+ - name: 15-year-old not child eligible
34
+ period: 2025
35
+ input:
36
+ state_code: TX
37
+ age: 15
38
+ output:
39
+ tx_dart_reduced_fare_age_eligible: false
40
+
41
+ - name: 30-year-old adult not age eligible
42
+ period: 2025
43
+ input:
44
+ state_code: TX
45
+ age: 30
46
+ output:
47
+ tx_dart_reduced_fare_age_eligible: false
48
+
49
+ - name: 64-year-old not senior eligible
50
+ period: 2025
51
+ input:
52
+ state_code: TX
53
+ age: 64
54
+ output:
55
+ tx_dart_reduced_fare_age_eligible: false
56
+
57
+ - name: 65-year-old senior eligible (minimum age)
58
+ period: 2025
59
+ input:
60
+ state_code: TX
61
+ age: 65
62
+ output:
63
+ tx_dart_reduced_fare_age_eligible: true
64
+
65
+ - name: 70-year-old senior eligible
66
+ period: 2025
67
+ input:
68
+ state_code: TX
69
+ age: 70
70
+ output:
71
+ tx_dart_reduced_fare_age_eligible: true
72
+
73
+ - name: Multi-generation household age eligibility
74
+ period: 2025
75
+ input:
76
+ people:
77
+ grandparent:
78
+ age: 68
79
+ parent:
80
+ age: 40
81
+ child:
82
+ age: 12
83
+ toddler:
84
+ age: 3
85
+ households:
86
+ household:
87
+ members: [grandparent, parent, child, toddler]
88
+ state_code: TX
89
+ output:
90
+ tx_dart_reduced_fare_age_eligible: [true, false, true, false]