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.
- policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py +12 -3
- policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml +29 -0
- {policyengine_us-1.425.3.dist-info → policyengine_us-1.425.4.dist-info}/METADATA +1 -1
- {policyengine_us-1.425.3.dist-info → policyengine_us-1.425.4.dist-info}/RECORD +7 -7
- {policyengine_us-1.425.3.dist-info → policyengine_us-1.425.4.dist-info}/WHEEL +0 -0
- {policyengine_us-1.425.3.dist-info → policyengine_us-1.425.4.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.425.3.dist-info → policyengine_us-1.425.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
#
|
|
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
|
-
|
|
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
|
|
@@ -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=
|
|
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=
|
|
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.
|
|
8846
|
-
policyengine_us-1.425.
|
|
8847
|
-
policyengine_us-1.425.
|
|
8848
|
-
policyengine_us-1.425.
|
|
8849
|
-
policyengine_us-1.425.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|