policyengine-us 1.433.0__py3-none-any.whl → 1.434.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.
- policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/age_limit.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/amount.yaml +9 -0
- policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py +32 -1
- policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml +144 -0
- {policyengine_us-1.433.0.dist-info → policyengine_us-1.434.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.433.0.dist-info → policyengine_us-1.434.0.dist-info}/RECORD +9 -7
- {policyengine_us-1.433.0.dist-info → policyengine_us-1.434.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.433.0.dist-info → policyengine_us-1.434.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.433.0.dist-info → policyengine_us-1.434.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -24,6 +24,30 @@ def create_ri_ctc() -> Reform:
|
|
|
24
24
|
eligible = is_dependent & meets_age
|
|
25
25
|
return tax_unit.sum(eligible)
|
|
26
26
|
|
|
27
|
+
class ri_ctc_young_child_boost(Variable):
|
|
28
|
+
value_type = float
|
|
29
|
+
entity = TaxUnit
|
|
30
|
+
label = "Rhode Island CTC young child boost"
|
|
31
|
+
unit = USD
|
|
32
|
+
definition_period = YEAR
|
|
33
|
+
defined_for = StateCode.RI
|
|
34
|
+
|
|
35
|
+
def formula(tax_unit, period, parameters):
|
|
36
|
+
p = parameters(period).gov.contrib.states.ri.ctc
|
|
37
|
+
|
|
38
|
+
person = tax_unit.members
|
|
39
|
+
age = person("age", period)
|
|
40
|
+
is_dependent = person("is_tax_unit_dependent", period)
|
|
41
|
+
|
|
42
|
+
# Check both general CTC eligibility and young child age limit
|
|
43
|
+
meets_age = age < p.age_limit
|
|
44
|
+
meets_young_child_age = age < p.young_child_boost.age_limit
|
|
45
|
+
|
|
46
|
+
eligible_young_children = tax_unit.sum(
|
|
47
|
+
is_dependent & meets_age & meets_young_child_age
|
|
48
|
+
)
|
|
49
|
+
return eligible_young_children * p.young_child_boost.amount
|
|
50
|
+
|
|
27
51
|
class ri_ctc_maximum(Variable):
|
|
28
52
|
value_type = float
|
|
29
53
|
entity = TaxUnit
|
|
@@ -35,8 +59,14 @@ def create_ri_ctc() -> Reform:
|
|
|
35
59
|
def formula(tax_unit, period, parameters):
|
|
36
60
|
p = parameters(period).gov.contrib.states.ri.ctc
|
|
37
61
|
|
|
62
|
+
# Base credit for all eligible children
|
|
38
63
|
eligible_children = tax_unit("ri_ctc_eligible_children", period)
|
|
39
|
-
|
|
64
|
+
base_credit = eligible_children * p.amount
|
|
65
|
+
|
|
66
|
+
# Young child boost
|
|
67
|
+
young_child_boost = tax_unit("ri_ctc_young_child_boost", period)
|
|
68
|
+
|
|
69
|
+
return base_credit + young_child_boost
|
|
40
70
|
|
|
41
71
|
class ri_ctc_phaseout(Variable):
|
|
42
72
|
value_type = float
|
|
@@ -142,6 +172,7 @@ def create_ri_ctc() -> Reform:
|
|
|
142
172
|
class reform(Reform):
|
|
143
173
|
def apply(self):
|
|
144
174
|
self.update_variable(ri_ctc_eligible_children)
|
|
175
|
+
self.update_variable(ri_ctc_young_child_boost)
|
|
145
176
|
self.update_variable(ri_ctc_maximum)
|
|
146
177
|
self.update_variable(ri_ctc_phaseout)
|
|
147
178
|
self.update_variable(ri_total_ctc)
|
|
@@ -175,3 +175,147 @@
|
|
|
175
175
|
ri_non_refundable_ctc: 0
|
|
176
176
|
ri_refundable_credits: 1_583.28 # 1_000 (CTC refundable) + 583.28 (EITC)
|
|
177
177
|
ri_non_refundable_credits: 0
|
|
178
|
+
|
|
179
|
+
- name: RI CTC - young child boost applies to children under age 6
|
|
180
|
+
absolute_error_margin: 0.1
|
|
181
|
+
period: 2025
|
|
182
|
+
reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
|
|
183
|
+
input:
|
|
184
|
+
gov.contrib.states.ri.ctc.in_effect: true
|
|
185
|
+
gov.contrib.states.ri.ctc.amount: 1_000
|
|
186
|
+
gov.contrib.states.ri.ctc.age_limit: 18
|
|
187
|
+
gov.contrib.states.ri.ctc.young_child_boost.amount: 500
|
|
188
|
+
gov.contrib.states.ri.ctc.young_child_boost.age_limit: 6
|
|
189
|
+
gov.contrib.states.ri.ctc.refundability.cap: 999_999
|
|
190
|
+
gov.contrib.states.ri.ctc.phaseout.threshold.SINGLE: 100_000
|
|
191
|
+
gov.contrib.states.ri.ctc.phaseout.rate: 0.05
|
|
192
|
+
people:
|
|
193
|
+
parent:
|
|
194
|
+
age: 35
|
|
195
|
+
employment_income: 50_000
|
|
196
|
+
child1:
|
|
197
|
+
age: 3
|
|
198
|
+
is_tax_unit_dependent: true
|
|
199
|
+
child2:
|
|
200
|
+
age: 10
|
|
201
|
+
is_tax_unit_dependent: true
|
|
202
|
+
tax_units:
|
|
203
|
+
tax_unit:
|
|
204
|
+
members: [parent, child1, child2]
|
|
205
|
+
filing_status: SINGLE
|
|
206
|
+
households:
|
|
207
|
+
household:
|
|
208
|
+
members: [parent, child1, child2]
|
|
209
|
+
state_name: RI
|
|
210
|
+
output:
|
|
211
|
+
ri_ctc_eligible_children: 2
|
|
212
|
+
ri_ctc_young_child_boost: 500 # 1 child under 6 × $500 = $500
|
|
213
|
+
ri_ctc_maximum: 2_500 # Base: 2 × $1_000 = $2_000; Boost: $500; Total = $2_500
|
|
214
|
+
ri_total_ctc: 2_500
|
|
215
|
+
ri_refundable_ctc: 2_500
|
|
216
|
+
ri_non_refundable_ctc: 0
|
|
217
|
+
|
|
218
|
+
- name: RI CTC - young child boost boundary at age 6
|
|
219
|
+
absolute_error_margin: 0.1
|
|
220
|
+
period: 2025
|
|
221
|
+
reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
|
|
222
|
+
input:
|
|
223
|
+
gov.contrib.states.ri.ctc.in_effect: true
|
|
224
|
+
gov.contrib.states.ri.ctc.amount: 1_000
|
|
225
|
+
gov.contrib.states.ri.ctc.age_limit: 18
|
|
226
|
+
gov.contrib.states.ri.ctc.young_child_boost.amount: 500
|
|
227
|
+
gov.contrib.states.ri.ctc.young_child_boost.age_limit: 6
|
|
228
|
+
gov.contrib.states.ri.ctc.refundability.cap: 999_999
|
|
229
|
+
people:
|
|
230
|
+
parent:
|
|
231
|
+
age: 35
|
|
232
|
+
employment_income: 40_000
|
|
233
|
+
child1:
|
|
234
|
+
age: 5
|
|
235
|
+
is_tax_unit_dependent: true
|
|
236
|
+
child2:
|
|
237
|
+
age: 6
|
|
238
|
+
is_tax_unit_dependent: true
|
|
239
|
+
tax_units:
|
|
240
|
+
tax_unit:
|
|
241
|
+
members: [parent, child1, child2]
|
|
242
|
+
filing_status: SINGLE
|
|
243
|
+
households:
|
|
244
|
+
household:
|
|
245
|
+
members: [parent, child1, child2]
|
|
246
|
+
state_name: RI
|
|
247
|
+
output:
|
|
248
|
+
ri_ctc_eligible_children: 2
|
|
249
|
+
ri_ctc_young_child_boost: 500 # Only child age 5 qualifies (age 6 does not)
|
|
250
|
+
ri_ctc_maximum: 2_500 # Base: 2 × $1_000 = $2_000; Boost: $500 (only age 5 child); Total = $2_500
|
|
251
|
+
ri_total_ctc: 2_500
|
|
252
|
+
|
|
253
|
+
- name: RI CTC - young child boost with multiple young children
|
|
254
|
+
absolute_error_margin: 0.1
|
|
255
|
+
period: 2025
|
|
256
|
+
reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
|
|
257
|
+
input:
|
|
258
|
+
gov.contrib.states.ri.ctc.in_effect: true
|
|
259
|
+
gov.contrib.states.ri.ctc.amount: 1_000
|
|
260
|
+
gov.contrib.states.ri.ctc.age_limit: 18
|
|
261
|
+
gov.contrib.states.ri.ctc.young_child_boost.amount: 500
|
|
262
|
+
gov.contrib.states.ri.ctc.young_child_boost.age_limit: 6
|
|
263
|
+
gov.contrib.states.ri.ctc.refundability.cap: 999_999
|
|
264
|
+
people:
|
|
265
|
+
parent:
|
|
266
|
+
age: 35
|
|
267
|
+
employment_income: 50_000
|
|
268
|
+
child1:
|
|
269
|
+
age: 2
|
|
270
|
+
is_tax_unit_dependent: true
|
|
271
|
+
child2:
|
|
272
|
+
age: 4
|
|
273
|
+
is_tax_unit_dependent: true
|
|
274
|
+
child3:
|
|
275
|
+
age: 10
|
|
276
|
+
is_tax_unit_dependent: true
|
|
277
|
+
tax_units:
|
|
278
|
+
tax_unit:
|
|
279
|
+
members: [parent, child1, child2, child3]
|
|
280
|
+
filing_status: SINGLE
|
|
281
|
+
households:
|
|
282
|
+
household:
|
|
283
|
+
members: [parent, child1, child2, child3]
|
|
284
|
+
state_name: RI
|
|
285
|
+
output:
|
|
286
|
+
ri_ctc_eligible_children: 3
|
|
287
|
+
ri_ctc_young_child_boost: 1_000 # 2 children under 6 × $500 = $1_000
|
|
288
|
+
ri_ctc_maximum: 4_000 # Base: 3 × $1_000 = $3_000; Boost: $1_000; Total = $4_000
|
|
289
|
+
ri_total_ctc: 4_000
|
|
290
|
+
|
|
291
|
+
- name: RI CTC - young child boost with no boost amount (zero)
|
|
292
|
+
absolute_error_margin: 0.1
|
|
293
|
+
period: 2025
|
|
294
|
+
reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
|
|
295
|
+
input:
|
|
296
|
+
gov.contrib.states.ri.ctc.in_effect: true
|
|
297
|
+
gov.contrib.states.ri.ctc.amount: 1_000
|
|
298
|
+
gov.contrib.states.ri.ctc.age_limit: 18
|
|
299
|
+
gov.contrib.states.ri.ctc.young_child_boost.amount: 0 # No boost
|
|
300
|
+
gov.contrib.states.ri.ctc.young_child_boost.age_limit: 6
|
|
301
|
+
gov.contrib.states.ri.ctc.refundability.cap: 999_999
|
|
302
|
+
people:
|
|
303
|
+
parent:
|
|
304
|
+
age: 35
|
|
305
|
+
employment_income: 50_000
|
|
306
|
+
child1:
|
|
307
|
+
age: 3
|
|
308
|
+
is_tax_unit_dependent: true
|
|
309
|
+
tax_units:
|
|
310
|
+
tax_unit:
|
|
311
|
+
members: [parent, child1]
|
|
312
|
+
filing_status: SINGLE
|
|
313
|
+
households:
|
|
314
|
+
household:
|
|
315
|
+
members: [parent, child1]
|
|
316
|
+
state_name: RI
|
|
317
|
+
output:
|
|
318
|
+
ri_ctc_eligible_children: 1
|
|
319
|
+
ri_ctc_young_child_boost: 0 # 1 child under 6 × $0 = $0
|
|
320
|
+
ri_ctc_maximum: 1_000 # Base: 1 × $1_000 = $1_000; Boost: $0; Total = $1_000
|
|
321
|
+
ri_total_ctc: 1_000
|
|
@@ -307,6 +307,8 @@ policyengine_us/parameters/gov/contrib/states/ri/ctc/in_effect.yaml,sha256=8s4ht
|
|
|
307
307
|
policyengine_us/parameters/gov/contrib/states/ri/ctc/phaseout/rate.yaml,sha256=AtSBT6ENkIGR7oqotYZG7EA6lnB6RZoN_yW4odO42bk,243
|
|
308
308
|
policyengine_us/parameters/gov/contrib/states/ri/ctc/phaseout/threshold.yaml,sha256=NiF267T1euSa8_g-SwMpTCs4sDu2AdjrZLx_lkOTFOc,427
|
|
309
309
|
policyengine_us/parameters/gov/contrib/states/ri/ctc/refundability/cap.yaml,sha256=gpoYjOO_LZXr-yJ93BHYgkCIfz6aKcHPtSLlAYCtO5U,417
|
|
310
|
+
policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/age_limit.yaml,sha256=nnhQZJRtJGQWO6sMFEMLh78GrdRZkDDXEPeWGPOIKDE,231
|
|
311
|
+
policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/amount.yaml,sha256=RJHl8dSjMzrEmj2MoWGrRDD1t84ibuA8PhXrNsjOTSA,243
|
|
310
312
|
policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/amount.yaml,sha256=6O7PSK-9P3fHLDdEDpnGqib9Nvxd65ZyzY444gLqWso,344
|
|
311
313
|
policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/in_effect.yaml,sha256=tME3DWkC_KlIaYy3ohA1yOQ7STUBgH5yUPWqlGRk6uM,272
|
|
312
314
|
policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/age_limit/in_effect.yaml,sha256=Xh91WP25MVadIejUNG2VTPXOTLbhyEkXUA-BBB-MTLU,239
|
|
@@ -3393,7 +3395,7 @@ policyengine_us/reforms/states/oregon/rebate/__init__.py,sha256=tVUOZRAhQlBjvglk
|
|
|
3393
3395
|
policyengine_us/reforms/states/oregon/rebate/or_rebate_state_tax_exempt.py,sha256=zywTRPsSCadHj2uuLyhKKm4lpPq4y-2Ce6TNtJUyMkM,1958
|
|
3394
3396
|
policyengine_us/reforms/states/ri/__init__.py,sha256=BG3Wr6c3tcsIiMfCvqZMsiZp9qaqcVrWruZIm8rpLGQ,91
|
|
3395
3397
|
policyengine_us/reforms/states/ri/ctc/__init__.py,sha256=L95JQFkq-Srt-n7CSXWytzly6nkhtbrTzomeodskTio,48
|
|
3396
|
-
policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py,sha256=
|
|
3398
|
+
policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py,sha256=0gyhhhiqufnFxfExrxXdJruOAVTgXPDTV6UWG3jOnN4,7195
|
|
3397
3399
|
policyengine_us/reforms/states/ri/exemption/__init__.py,sha256=hEkhBVlshUVIG8KPHpnoTp1Gg69syHmIote4WlCjOOE,63
|
|
3398
3400
|
policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py,sha256=c90gXlYL2RUM9xwR-iJBJ1WoNpyYONgLc8m905NaMH0,5952
|
|
3399
3401
|
policyengine_us/reforms/tax_exempt/__init__.py,sha256=v3EbtUk6a2jsi9MrOlyb8ckzPyX7EgG7qkI7QXoSGto,65
|
|
@@ -5566,7 +5568,7 @@ policyengine_us/tests/policy/contrib/states/mn/walz/mn_walz_hf1938.yaml,sha256=5
|
|
|
5566
5568
|
policyengine_us/tests/policy/contrib/states/mt/ctc/mt_ctc.yaml,sha256=WYTHmavj-lmZjVB2foKqFnWnza4fqWPspj1Oieqm9is,3129
|
|
5567
5569
|
policyengine_us/tests/policy/contrib/states/ny/ny_working_families_tax_credit.yaml,sha256=XPIBSvoA_fbz56jj5oyphaglco44oMwSvLPB5yJNhMM,8232
|
|
5568
5570
|
policyengine_us/tests/policy/contrib/states/or/rebate/or_rebate_state_tax_exempt.yaml,sha256=P7cuxKGo0GrJrOHoHHrZFfW53cH_IJbwj4mzt3OYq58,1220
|
|
5569
|
-
policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml,sha256=
|
|
5571
|
+
policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml,sha256=3rJ_kBNKh0rijsX-oj3HWhhkyyd7fAkBx-dVJw1tWP0,10735
|
|
5570
5572
|
policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml,sha256=_BgiVNMgoQMCdCvbjW_U3YhNYkI4WgVkIifZWbvpDuI,4042
|
|
5571
5573
|
policyengine_us/tests/policy/contrib/tax_exempt/tax_exempt_reform.yaml,sha256=T-NrLa5NoAj3Hu4E4sb-Sbi71aDvbloGG3MLtZOsmgA,2412
|
|
5572
5574
|
policyengine_us/tests/policy/contrib/taxsim/taxsim_v10.yaml,sha256=0an6UXc229i52BUulZsvpTEphDUi8S6OhG3OT9SjiD4,68577
|
|
@@ -8861,8 +8863,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
|
|
|
8861
8863
|
policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
|
|
8862
8864
|
policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
|
|
8863
8865
|
policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
|
|
8864
|
-
policyengine_us-1.
|
|
8865
|
-
policyengine_us-1.
|
|
8866
|
-
policyengine_us-1.
|
|
8867
|
-
policyengine_us-1.
|
|
8868
|
-
policyengine_us-1.
|
|
8866
|
+
policyengine_us-1.434.0.dist-info/METADATA,sha256=itkfW2prj0Esp2ei5kGgGjxJhz2iY59z18qHcrwc-H8,1649
|
|
8867
|
+
policyengine_us-1.434.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
8868
|
+
policyengine_us-1.434.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
|
|
8869
|
+
policyengine_us-1.434.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
|
|
8870
|
+
policyengine_us-1.434.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|