policyengine-us 1.425.3__py3-none-any.whl → 1.425.4__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.

@@ -86,16 +86,25 @@ def create_ri_exemption_reform() -> Reform:
86
86
  def formula(tax_unit, period, parameters):
87
87
  p_base = parameters(period).gov.states.ri.tax.income.exemption
88
88
 
89
- # Personal exemptions use baseline amount
89
+ # Calculate personal exemptions base amount
90
90
  filing_status = tax_unit("filing_status", period)
91
91
  personal_exemptions = where(
92
92
  filing_status == filing_status.possible_values.JOINT,
93
93
  2,
94
94
  1,
95
95
  )
96
- personal_exemption_amount = personal_exemptions * p_base.amount
96
+ personal_exemption_base = personal_exemptions * p_base.amount
97
+
98
+ # Apply baseline phase-out to personal exemptions
99
+ mod_agi = tax_unit("ri_agi", period)
100
+ excess_agi = max_(0, mod_agi - p_base.reduction.start)
101
+ increments = np.ceil(excess_agi / p_base.reduction.increment)
102
+ reduction_rate = min_(p_base.reduction.rate * increments, 1)
103
+ personal_exemption_amount = personal_exemption_base * (
104
+ 1 - reduction_rate
105
+ )
97
106
 
98
- # Add dependent exemption
107
+ # Add dependent exemption (has its own phase-out logic)
99
108
  dependent_exemption_amount = tax_unit(
100
109
  "ri_dependent_exemption", period
101
110
  )
@@ -86,3 +86,32 @@
86
86
  # Dependent exemption after phaseout: 5_100 - 1_000 = 4_100
87
87
  # Final: 5_050 (personal) + 4_100 (dependent) = 9_150
88
88
  ri_exemptions: 9_150
89
+
90
+ - name: RI exemption reform - high income personal exemption baseline phaseout
91
+ period: 2024
92
+ reforms: policyengine_us.reforms.states.ri.exemption.ri_exemption_reform.ri_exemption_reform
93
+ input:
94
+ gov.contrib.states.ri.dependent_exemption.in_effect: true
95
+ gov.contrib.states.ri.dependent_exemption.amount: 0
96
+ people:
97
+ parent:
98
+ age: 40
99
+ employment_income: 300_000
100
+ tax_units:
101
+ tax_unit:
102
+ members: [parent]
103
+ filing_status: SINGLE
104
+ households:
105
+ household:
106
+ members: [parent]
107
+ state_name: RI
108
+ output:
109
+ # At AGI of $300,000, personal exemption should be fully phased out
110
+ # Baseline phaseout: starts at $246,450, rate 0.2 per $7,050 increment
111
+ # Excess AGI: $300,000 - $246,450 = $53,550
112
+ # Increments: ceil($53,550 / $7,050) = 8
113
+ # Reduction rate: min(0.2 * 8, 1) = min(1.6, 1) = 1 (100%)
114
+ # Personal exemption: $5,050 * (1 - 1) = $0
115
+ # Dependent exemption: $0 (set to $0 in reform)
116
+ # Final: $0 + $0 = $0
117
+ ri_exemptions: 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.425.3
3
+ Version: 1.425.4
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -3390,7 +3390,7 @@ policyengine_us/reforms/states/ri/__init__.py,sha256=BG3Wr6c3tcsIiMfCvqZMsiZp9qa
3390
3390
  policyengine_us/reforms/states/ri/ctc/__init__.py,sha256=L95JQFkq-Srt-n7CSXWytzly6nkhtbrTzomeodskTio,48
3391
3391
  policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py,sha256=Jm35tP17Bl6hg1Ub5fI9-mzzhx4Hi6XPlRs-Y3do0uI,6023
3392
3392
  policyengine_us/reforms/states/ri/exemption/__init__.py,sha256=hEkhBVlshUVIG8KPHpnoTp1Gg69syHmIote4WlCjOOE,63
3393
- policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py,sha256=jqL9AQ0XnInNf-sIh69Jajf_TSUkWnk0dAPft1Cr7Ck,4680
3393
+ policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py,sha256=Ebk7kihz9HtBdcoBSp6k4gIFsxt8wHU1C2mBt9DSUhU,5153
3394
3394
  policyengine_us/reforms/tax_exempt/__init__.py,sha256=v3EbtUk6a2jsi9MrOlyb8ckzPyX7EgG7qkI7QXoSGto,65
3395
3395
  policyengine_us/reforms/tax_exempt/tax_exempt_reform.py,sha256=bkW91XMJ-jd23nhq4-PfWJv0YW2whVn98cQikbq6-Z8,2427
3396
3396
  policyengine_us/reforms/treasury/__init__.py,sha256=406jIbu32B57tUKhVLflWxlXf3S4SWjclVqlEtMeMwg,92
@@ -5556,7 +5556,7 @@ policyengine_us/tests/policy/contrib/states/mt/ctc/mt_ctc.yaml,sha256=WYTHmavj-l
5556
5556
  policyengine_us/tests/policy/contrib/states/ny/ny_working_families_tax_credit.yaml,sha256=XPIBSvoA_fbz56jj5oyphaglco44oMwSvLPB5yJNhMM,8232
5557
5557
  policyengine_us/tests/policy/contrib/states/or/rebate/or_rebate_state_tax_exempt.yaml,sha256=P7cuxKGo0GrJrOHoHHrZFfW53cH_IJbwj4mzt3OYq58,1220
5558
5558
  policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml,sha256=hptunGKb3A4Aey4IYMJn1MVrCXn6i3gORV-oyI9OxTQ,6022
5559
- policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml,sha256=WRXm43dL8rRTBALkbOQcR54LosxW4LKyxa0XozZmJFQ,2963
5559
+ policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml,sha256=FbL_WhGkZ9q8qODbSPxwzZMOXY4wXHkW9P7_7lPvO_k,3986
5560
5560
  policyengine_us/tests/policy/contrib/tax_exempt/tax_exempt_reform.yaml,sha256=T-NrLa5NoAj3Hu4E4sb-Sbi71aDvbloGG3MLtZOsmgA,2412
5561
5561
  policyengine_us/tests/policy/contrib/taxsim/taxsim_v10.yaml,sha256=0an6UXc229i52BUulZsvpTEphDUi8S6OhG3OT9SjiD4,68577
5562
5562
  policyengine_us/tests/policy/contrib/taxsim/taxsim_v11.yaml,sha256=5JSMXOJ-Dt44jx5yYcJUnBNlY6BfTc5-x_uT9ZigDWs,72309
@@ -8842,8 +8842,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8842
8842
  policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
8843
8843
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8844
8844
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8845
- policyengine_us-1.425.3.dist-info/METADATA,sha256=eV5VyKJQj8uBUSb3EqCFZfPpYlJvBKB4dU4Y2XnUfqQ,1649
8846
- policyengine_us-1.425.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8847
- policyengine_us-1.425.3.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8848
- policyengine_us-1.425.3.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8849
- policyengine_us-1.425.3.dist-info/RECORD,,
8845
+ policyengine_us-1.425.4.dist-info/METADATA,sha256=porYlShy3Vef-UTj4DIXE9yXxbG72GBvIs0X6zYr6us,1649
8846
+ policyengine_us-1.425.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8847
+ policyengine_us-1.425.4.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8848
+ policyengine_us-1.425.4.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8849
+ policyengine_us-1.425.4.dist-info/RECORD,,