policyengine-us 1.439.1__py3-none-any.whl → 1.440.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.
@@ -0,0 +1,9 @@
1
+ description: The Utah EITC is refundable for households with children below a certain age when this parameter is in effect.
2
+
3
+ values:
4
+ 0000-01-01: false
5
+
6
+ metadata:
7
+ unit: bool
8
+ period: year
9
+ label: Utah refundable EITC in effect
@@ -0,0 +1,9 @@
1
+ description: The maximum age for a child to qualify the household for the refundable Utah EITC.
2
+
3
+ values:
4
+ 0000-01-01: 2
5
+
6
+ metadata:
7
+ unit: year
8
+ period: year
9
+ label: Utah refundable EITC maximum child age
@@ -101,6 +101,9 @@ from .reconciliation import (
101
101
  from .states.mi.surtax import (
102
102
  create_mi_surtax_reform,
103
103
  )
104
+ from .states.ut import (
105
+ create_ut_refundable_eitc_reform,
106
+ )
104
107
  from .additional_tax_bracket import (
105
108
  create_additional_tax_bracket_reform,
106
109
  )
@@ -249,6 +252,7 @@ def create_structural_reforms_from_parameters(parameters, period):
249
252
  parameters, period
250
253
  )
251
254
  mi_surtax = create_mi_surtax_reform(parameters, period)
255
+ ut_refundable_eitc = create_ut_refundable_eitc_reform(parameters, period)
252
256
 
253
257
  american_worker_rebate_act = create_american_worker_rebate_act_reform(
254
258
  parameters, period
@@ -316,6 +320,7 @@ def create_structural_reforms_from_parameters(parameters, period):
316
320
  reconciled_ssn_for_llc_and_aoc,
317
321
  ctc_additional_bracket,
318
322
  mi_surtax,
323
+ ut_refundable_eitc,
319
324
  additional_tax_bracket,
320
325
  american_worker_rebate_act,
321
326
  ctc_per_child_phase_out,
@@ -0,0 +1,3 @@
1
+ from .ut_refundable_eitc import (
2
+ create_ut_refundable_eitc_reform,
3
+ )
@@ -0,0 +1,118 @@
1
+ from policyengine_us.model_api import *
2
+ from policyengine_core.periods import period as period_
3
+
4
+
5
+ def create_ut_refundable_eitc() -> Reform:
6
+ class ut_has_qualifying_child_for_refundable_eitc(Variable):
7
+ value_type = bool
8
+ entity = TaxUnit
9
+ label = "Utah tax unit has qualifying child for refundable EITC"
10
+ defined_for = StateCode.UT
11
+ definition_period = YEAR
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ person = tax_unit.members
15
+ p = parameters(period).gov.contrib.states.ut.eitc
16
+ age = person("age", period)
17
+ is_dependent = person("is_tax_unit_dependent", period)
18
+ is_qualifying_child = (age <= p.max_age) & is_dependent
19
+ return tax_unit.any(is_qualifying_child)
20
+
21
+ class ut_refundable_eitc(Variable):
22
+ value_type = float
23
+ entity = TaxUnit
24
+ label = "Utah refundable EITC"
25
+ unit = USD
26
+ definition_period = YEAR
27
+ defined_for = "ut_has_qualifying_child_for_refundable_eitc"
28
+
29
+ adds = ["ut_eitc"]
30
+
31
+ class ut_eitc(Variable):
32
+ value_type = float
33
+ entity = TaxUnit
34
+ label = "Utah Earned Income Tax Credit"
35
+ unit = USD
36
+ documentation = "This credit is a fraction of the federal EITC."
37
+ definition_period = YEAR
38
+ defined_for = StateCode.UT
39
+ reference = "https://le.utah.gov/xcode/Title59/Chapter10/59-10-S1044.html?v=C59-10-S1044_2022050420220504"
40
+
41
+ def formula(tax_unit, period, parameters):
42
+ p = parameters(
43
+ period
44
+ ).gov.states.ut.tax.income.credits.earned_income
45
+ federal_eitc = tax_unit("eitc", period)
46
+ return p.rate * federal_eitc
47
+
48
+ class ut_non_refundable_eitc(Variable):
49
+ value_type = float
50
+ entity = TaxUnit
51
+ label = "Utah non-refundable EITC"
52
+ unit = USD
53
+ definition_period = YEAR
54
+ defined_for = StateCode.UT
55
+
56
+ adds = ["ut_eitc"]
57
+ subtracts = ["ut_refundable_eitc"]
58
+
59
+ class ut_non_refundable_credits(Variable):
60
+ value_type = float
61
+ entity = TaxUnit
62
+ label = "Utah non-refundable tax credits"
63
+ unit = USD
64
+ definition_period = YEAR
65
+ defined_for = StateCode.UT
66
+
67
+ adds = [
68
+ "ut_non_refundable_eitc",
69
+ "ut_retirement_credit",
70
+ "ut_ss_benefits_credit",
71
+ "ut_at_home_parent_credit",
72
+ "ut_ctc",
73
+ ]
74
+
75
+ class ut_refundable_credits(Variable):
76
+ value_type = float
77
+ entity = TaxUnit
78
+ label = "Utah refundable credits"
79
+ unit = USD
80
+ definition_period = YEAR
81
+ defined_for = StateCode.UT
82
+
83
+ adds = ["ut_refundable_eitc"]
84
+
85
+ class reform(Reform):
86
+ def apply(self):
87
+ self.add_variable(ut_has_qualifying_child_for_refundable_eitc)
88
+ self.add_variable(ut_refundable_eitc)
89
+ self.add_variable(ut_non_refundable_eitc)
90
+ self.update_variable(ut_eitc)
91
+ self.update_variable(ut_non_refundable_credits)
92
+ self.update_variable(ut_refundable_credits)
93
+
94
+ return reform
95
+
96
+
97
+ def create_ut_refundable_eitc_reform(parameters, period, bypass: bool = False):
98
+ if bypass:
99
+ return create_ut_refundable_eitc()
100
+
101
+ p = parameters.gov.contrib.states.ut.eitc
102
+
103
+ reform_active = False
104
+ current_period = period_(period)
105
+
106
+ for i in range(5):
107
+ if p(current_period).in_effect:
108
+ reform_active = True
109
+ break
110
+ current_period = current_period.offset(1, "year")
111
+
112
+ if reform_active:
113
+ return create_ut_refundable_eitc()
114
+ else:
115
+ return None
116
+
117
+
118
+ ut_refundable_eitc = create_ut_refundable_eitc_reform(None, None, bypass=True)
@@ -0,0 +1,214 @@
1
+ - name: Single parent with child under max age - full EITC refundable
2
+ period: 2024
3
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
4
+ input:
5
+ gov.contrib.states.ut.eitc.in_effect: true
6
+ people:
7
+ parent:
8
+ age: 30
9
+ child:
10
+ age: 2
11
+ is_tax_unit_dependent: true
12
+ tax_units:
13
+ tax_unit:
14
+ members: [parent, child]
15
+ eitc: 5_000
16
+ households:
17
+ household:
18
+ members: [parent, child]
19
+ state_code: UT
20
+ output:
21
+ # Utah EITC = 20% of federal EITC = 0.2 * 5_000 = 1_000
22
+ # Since child is age 2 (at max_age threshold), full amount is refundable
23
+ ut_eitc: 1_000 # Total EITC
24
+ ut_refundable_eitc: 1_000
25
+ ut_non_refundable_eitc: 0 # Non-refundable portion is reduced to zero
26
+ ut_has_qualifying_child_for_refundable_eitc: true
27
+
28
+ - name: Single parent with child at age 1
29
+ period: 2024
30
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
31
+ input:
32
+ gov.contrib.states.ut.eitc.in_effect: true
33
+ people:
34
+ parent:
35
+ age: 30
36
+ child:
37
+ age: 1
38
+ is_tax_unit_dependent: true
39
+ tax_units:
40
+ tax_unit:
41
+ members: [parent, child]
42
+ eitc: 3_000
43
+ households:
44
+ household:
45
+ members: [parent, child]
46
+ state_code: UT
47
+ output:
48
+ # Utah EITC = 20% of federal EITC = 0.2 * 3_000 = 600
49
+ ut_eitc: 600
50
+ ut_refundable_eitc: 600
51
+ ut_non_refundable_eitc: 0
52
+ ut_has_qualifying_child_for_refundable_eitc: true
53
+
54
+ - name: Single parent with child age 3 - not eligible for refundable EITC
55
+ period: 2024
56
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
57
+ input:
58
+ gov.contrib.states.ut.eitc.in_effect: true
59
+ people:
60
+ parent:
61
+ age: 30
62
+ child:
63
+ age: 3
64
+ is_tax_unit_dependent: true
65
+ tax_units:
66
+ tax_unit:
67
+ members: [parent, child]
68
+ eitc: 4_000
69
+ households:
70
+ household:
71
+ members: [parent, child]
72
+ state_code: UT
73
+ output:
74
+ # Child is too old (max_age is 2)
75
+ # Utah EITC = 0.2 * 4_000 = 800
76
+ ut_eitc: 800
77
+ ut_refundable_eitc: 0
78
+ ut_non_refundable_eitc: 800 # Remains fully non-refundable
79
+ ut_has_qualifying_child_for_refundable_eitc: false
80
+
81
+ - name: Single parent with multiple children, one qualifying
82
+ period: 2024
83
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
84
+ input:
85
+ gov.contrib.states.ut.eitc.in_effect: true
86
+ people:
87
+ parent:
88
+ age: 35
89
+ child1:
90
+ age: 1
91
+ is_tax_unit_dependent: true
92
+ child2:
93
+ age: 5
94
+ is_tax_unit_dependent: true
95
+ tax_units:
96
+ tax_unit:
97
+ members: [parent, child1, child2]
98
+ eitc: 6_000
99
+ households:
100
+ household:
101
+ members: [parent, child1, child2]
102
+ state_code: UT
103
+ output:
104
+ # Has at least one qualifying child, so full EITC is refundable
105
+ # Utah EITC = 0.2 * 6_000 = 1_200
106
+ ut_eitc: 1_200
107
+ ut_refundable_eitc: 1_200
108
+ ut_non_refundable_eitc: 0
109
+ ut_has_qualifying_child_for_refundable_eitc: true
110
+
111
+ - name: Childless tax unit - not eligible
112
+ period: 2024
113
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
114
+ input:
115
+ gov.contrib.states.ut.eitc.in_effect: true
116
+ people:
117
+ person:
118
+ age: 30
119
+ tax_units:
120
+ tax_unit:
121
+ members: [person]
122
+ eitc: 500
123
+ households:
124
+ household:
125
+ members: [person]
126
+ state_code: UT
127
+ output:
128
+ # Utah EITC = 0.2 * 500 = 100 (all non-refundable)
129
+ ut_eitc: 100
130
+ ut_refundable_eitc: 0
131
+ ut_non_refundable_eitc: 100
132
+ ut_has_qualifying_child_for_refundable_eitc: false
133
+
134
+ - name: Married couple with infant (age 0)
135
+ period: 2024
136
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
137
+ input:
138
+ gov.contrib.states.ut.eitc.in_effect: true
139
+ people:
140
+ parent1:
141
+ age: 28
142
+ parent2:
143
+ age: 30
144
+ child:
145
+ age: 0
146
+ is_tax_unit_dependent: true
147
+ tax_units:
148
+ tax_unit:
149
+ members: [parent1, parent2, child]
150
+ eitc: 7_000
151
+ households:
152
+ household:
153
+ members: [parent1, parent2, child]
154
+ state_code: UT
155
+ output:
156
+ # Utah EITC = 0.2 * 7_000 = 1_400
157
+ ut_eitc: 1_400
158
+ ut_refundable_eitc: 1_400
159
+ ut_non_refundable_eitc: 0
160
+ ut_has_qualifying_child_for_refundable_eitc: true
161
+
162
+ - name: Tax unit with qualifying child but no federal EITC
163
+ period: 2024
164
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
165
+ input:
166
+ gov.contrib.states.ut.eitc.in_effect: true
167
+ people:
168
+ parent:
169
+ age: 30
170
+ child:
171
+ age: 2
172
+ is_tax_unit_dependent: true
173
+ tax_units:
174
+ tax_unit:
175
+ members: [parent, child]
176
+ eitc: 0
177
+ households:
178
+ household:
179
+ members: [parent, child]
180
+ state_code: UT
181
+ output:
182
+ # No federal EITC means no Utah EITC
183
+ ut_eitc: 0
184
+ ut_refundable_eitc: 0
185
+ ut_non_refundable_eitc: 0
186
+ ut_has_qualifying_child_for_refundable_eitc: true
187
+
188
+ - name: Custom max_age parameter - child at age 4 qualifies
189
+ period: 2024
190
+ reforms: policyengine_us.reforms.states.ut.ut_refundable_eitc.ut_refundable_eitc
191
+ input:
192
+ gov.contrib.states.ut.eitc.in_effect: true
193
+ gov.contrib.states.ut.eitc.max_age: 4
194
+ people:
195
+ parent:
196
+ age: 30
197
+ child:
198
+ age: 4
199
+ is_tax_unit_dependent: true
200
+ tax_units:
201
+ tax_unit:
202
+ members: [parent, child]
203
+ eitc: 5_000
204
+ households:
205
+ household:
206
+ members: [parent, child]
207
+ state_code: UT
208
+ output:
209
+ # With max_age = 4, child age 4 qualifies
210
+ # Utah EITC = 0.2 * 5_000 = 1_000
211
+ ut_eitc: 1_000
212
+ ut_refundable_eitc: 1_000
213
+ ut_non_refundable_eitc: 0
214
+ ut_has_qualifying_child_for_refundable_eitc: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.439.1
3
+ Version: 1.440.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -305,6 +305,8 @@ policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/age_limit/i
305
305
  policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/age_limit/threshold.yaml,sha256=JvsYtvZXXRcPLe2bzXbgwdqMZlpqzjVqHm2iEpMkMbk,208
306
306
  policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/phaseout/rate.yaml,sha256=_BZ9eKsGXJV0EvaLBTrTfJKExtKoEYd8-jYFYfQr-QI,249
307
307
  policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/phaseout/threshold.yaml,sha256=8W63k7k9J27t983KBRg9W3DgYCOiYEF1SQu8o0r8jWM,433
308
+ policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml,sha256=Jym1lwR1ZTMjby7fEJ9Ry0C7o3NohhMBgskJtxApH3c,232
309
+ policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml,sha256=vNchHo4et3BFrenSNVLl3H_lFZnBasytGDhzpVpS4JQ,208
308
310
  policyengine_us/parameters/gov/contrib/tax_exempt/in_effect.yaml,sha256=1D2OPVh1HtHP93DsY4xqgfgMPGrJbYvGhwu_dV6gRT8,201
309
311
  policyengine_us/parameters/gov/contrib/tax_exempt/overtime/income_tax_exempt.yaml,sha256=KYaahTBOWwhGB4ckffX4lFNZtE3OV_1o_mFAdx5XQbM,204
310
312
  policyengine_us/parameters/gov/contrib/tax_exempt/overtime/payroll_tax_exempt.yaml,sha256=niVAhPmx8LmTCddRcil-D3lAPhLEPr_15GtEU4EHWFQ,206
@@ -3302,7 +3304,7 @@ policyengine_us/params_on_demand/gov/hhs/medicaid/geography/medicaid_rating_area
3302
3304
  policyengine_us/reforms/__init__.py,sha256=FPV8k2633kzUhbKUK8jC6yJONbnZ5n9zLAq2UL57KH4,113
3303
3305
  policyengine_us/reforms/dc_kccatc.py,sha256=LyGMfEKe-0TgQ-2vCYGOD8W-EGEW8_DgIqCQP89qDyg,4283
3304
3306
  policyengine_us/reforms/dc_tax_threshold_joint_ratio.py,sha256=G-5E1EJFGZ3VeUl_fuyj82nMIttHRNRdlT-x98koJrk,1633
3305
- policyengine_us/reforms/reforms.py,sha256=40ZUMvLroMckIVWFtSmi1eByPWpxWCgT29ZqqjhzNOs,11462
3307
+ policyengine_us/reforms/reforms.py,sha256=FwH26TRW6PqP26ePOx0cfJzvrz8KMjgXYzrv-6hqPTw,11633
3306
3308
  policyengine_us/reforms/taxsim.py,sha256=bXNFWfjBX5USld1C7fziT6BBmRy-avz00QtL8WmCHy0,5276
3307
3309
  policyengine_us/reforms/winship.py,sha256=_q74Af1nkmoh0-M6PZJ2FcJAn6v5zf5sAEgvxjwHwyA,3069
3308
3310
  policyengine_us/reforms/aca/__init__.py,sha256=ugTekuQuCQw7EScXFCp5U3NSKhut8wIrrJK-1Y0aL9Q,234
@@ -3392,6 +3394,8 @@ policyengine_us/reforms/states/ri/ctc/__init__.py,sha256=L95JQFkq-Srt-n7CSXWytzl
3392
3394
  policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py,sha256=0gyhhhiqufnFxfExrxXdJruOAVTgXPDTV6UWG3jOnN4,7195
3393
3395
  policyengine_us/reforms/states/ri/exemption/__init__.py,sha256=hEkhBVlshUVIG8KPHpnoTp1Gg69syHmIote4WlCjOOE,63
3394
3396
  policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py,sha256=c90gXlYL2RUM9xwR-iJBJ1WoNpyYONgLc8m905NaMH0,5952
3397
+ policyengine_us/reforms/states/ut/__init__.py,sha256=G0yegsbtJwjrz71WnFt7OfI-rkhnHuvHM2Xl1CmmhHY,74
3398
+ policyengine_us/reforms/states/ut/ut_refundable_eitc.py,sha256=o5FmqSbVFWjE9ymtdpBTH8FFRz5zQP-8PzvoIWN8ktA,3729
3395
3399
  policyengine_us/reforms/tax_exempt/__init__.py,sha256=v3EbtUk6a2jsi9MrOlyb8ckzPyX7EgG7qkI7QXoSGto,65
3396
3400
  policyengine_us/reforms/tax_exempt/tax_exempt_reform.py,sha256=bkW91XMJ-jd23nhq4-PfWJv0YW2whVn98cQikbq6-Z8,2427
3397
3401
  policyengine_us/reforms/treasury/__init__.py,sha256=406jIbu32B57tUKhVLflWxlXf3S4SWjclVqlEtMeMwg,92
@@ -5565,6 +5569,7 @@ policyengine_us/tests/policy/contrib/states/ny/ny_working_families_tax_credit.ya
5565
5569
  policyengine_us/tests/policy/contrib/states/or/rebate/or_rebate_state_tax_exempt.yaml,sha256=P7cuxKGo0GrJrOHoHHrZFfW53cH_IJbwj4mzt3OYq58,1220
5566
5570
  policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml,sha256=3rJ_kBNKh0rijsX-oj3HWhhkyyd7fAkBx-dVJw1tWP0,10735
5567
5571
  policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml,sha256=_BgiVNMgoQMCdCvbjW_U3YhNYkI4WgVkIifZWbvpDuI,4042
5572
+ policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml,sha256=NLEbRydKWJe2ayErx7E2yl-Y6sTOYILsBcVIK5FZRBs,5826
5568
5573
  policyengine_us/tests/policy/contrib/tax_exempt/tax_exempt_reform.yaml,sha256=T-NrLa5NoAj3Hu4E4sb-Sbi71aDvbloGG3MLtZOsmgA,2412
5569
5574
  policyengine_us/tests/policy/contrib/taxsim/taxsim_v10.yaml,sha256=0an6UXc229i52BUulZsvpTEphDUi8S6OhG3OT9SjiD4,68577
5570
5575
  policyengine_us/tests/policy/contrib/taxsim/taxsim_v11.yaml,sha256=5JSMXOJ-Dt44jx5yYcJUnBNlY6BfTc5-x_uT9ZigDWs,72309
@@ -8865,8 +8870,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8865
8870
  policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
8866
8871
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8867
8872
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8868
- policyengine_us-1.439.1.dist-info/METADATA,sha256=0SQGsSLl3xjK5rcZFwXk0Nq838B6C4_WS92RudLcEUk,1649
8869
- policyengine_us-1.439.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8870
- policyengine_us-1.439.1.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8871
- policyengine_us-1.439.1.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8872
- policyengine_us-1.439.1.dist-info/RECORD,,
8873
+ policyengine_us-1.440.0.dist-info/METADATA,sha256=beKqHfJ8Hh3Uvqesi2VoH9nOhYp7IL5_UZzo2qHbkQ0,1649
8874
+ policyengine_us-1.440.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8875
+ policyengine_us-1.440.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8876
+ policyengine_us-1.440.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8877
+ policyengine_us-1.440.0.dist-info/RECORD,,