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.
@@ -0,0 +1,9 @@
1
+ description: Rhode Island limits the Child Tax Credit young child boost to children under this age.
2
+
3
+ values:
4
+ 2025-01-01: 6
5
+
6
+ metadata:
7
+ label: Rhode Island Child Tax Credit young child boost age limit
8
+ period: year
9
+ unit: year
@@ -0,0 +1,9 @@
1
+ description: Rhode Island provides this additional boost to the Child Tax Credit per eligible young child.
2
+
3
+ values:
4
+ 2025-01-01: 0
5
+
6
+ metadata:
7
+ label: Rhode Island Child Tax Credit young child boost amount
8
+ period: year
9
+ unit: currency-USD
@@ -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
- return eligible_children * p.amount
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.433.0
3
+ Version: 1.434.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -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=Jm35tP17Bl6hg1Ub5fI9-mzzhx4Hi6XPlRs-Y3do0uI,6023
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=hptunGKb3A4Aey4IYMJn1MVrCXn6i3gORV-oyI9OxTQ,6022
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.433.0.dist-info/METADATA,sha256=I_sWWD4kS0vAudkQ6HfF6CFgb1spnkeqZr5UCtnLLm8,1649
8865
- policyengine_us-1.433.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8866
- policyengine_us-1.433.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8867
- policyengine_us-1.433.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8868
- policyengine_us-1.433.0.dist-info/RECORD,,
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,,