policyengine-us 1.443.0__py3-none-any.whl → 1.444.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/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
- policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
- policyengine_us/reforms/local/ny/__init__.py +4 -0
- policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
- policyengine_us/reforms/reforms.py +9 -0
- policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
- {policyengine_us-1.443.0.dist-info → policyengine_us-1.444.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.443.0.dist-info → policyengine_us-1.444.0.dist-info}/RECORD +11 -6
- {policyengine_us-1.443.0.dist-info → policyengine_us-1.444.0.dist-info}/WHEEL +1 -1
- {policyengine_us-1.443.0.dist-info → policyengine_us-1.444.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.443.0.dist-info → policyengine_us-1.444.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
description: Zohran Mamdani's proposed additional NYC income tax on income above a certain threshold is in effect if this is true.
|
|
2
|
+
values:
|
|
3
|
+
0000-01-01: false
|
|
4
|
+
metadata:
|
|
5
|
+
unit: bool
|
|
6
|
+
period: year
|
|
7
|
+
label: Zohran Mamdani NYC additional millionaire income tax in effect
|
|
8
|
+
reference:
|
|
9
|
+
- title: Mamdani Revenue Proposal
|
|
10
|
+
href: https://drive.google.com/file/d/14-aM9DKG337SDMilmfQtLRR-pDwyWSTc/view
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
description: Zohran Mamdani proposed taxing New York City residents' income above a threshold at this rate.
|
|
2
|
+
metadata:
|
|
3
|
+
type: marginal_rate
|
|
4
|
+
threshold_unit: currency-USD
|
|
5
|
+
rate_unit: /1
|
|
6
|
+
label: Zohran Mamdani NYC high earner income tax rate
|
|
7
|
+
reference:
|
|
8
|
+
- title: Mamdani Revenue Proposal
|
|
9
|
+
href: https://drive.google.com/file/d/14-aM9DKG337SDMilmfQtLRR-pDwyWSTc/view
|
|
10
|
+
brackets:
|
|
11
|
+
- threshold:
|
|
12
|
+
2026-01-01: 0
|
|
13
|
+
rate:
|
|
14
|
+
2026-01-01: 0
|
|
15
|
+
- threshold:
|
|
16
|
+
2026-01-01: 1_000_000
|
|
17
|
+
rate:
|
|
18
|
+
2026-01-01: 0.02
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
from policyengine_core.periods import period as period_
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def create_nyc_mamdani_income_tax() -> Reform:
|
|
6
|
+
class nyc_mamdani_income_tax(Variable):
|
|
7
|
+
value_type = float
|
|
8
|
+
entity = Person
|
|
9
|
+
label = "Zohran Mamdani NYC income tax"
|
|
10
|
+
unit = USD
|
|
11
|
+
definition_period = YEAR
|
|
12
|
+
defined_for = "in_nyc"
|
|
13
|
+
|
|
14
|
+
def formula(person, period, parameters):
|
|
15
|
+
taxable_income = person.tax_unit("nyc_taxable_income", period)
|
|
16
|
+
p = parameters(period).gov.local.ny.mamdani_income_tax
|
|
17
|
+
return p.rate.calc(taxable_income)
|
|
18
|
+
|
|
19
|
+
class nyc_income_tax_before_credits(Variable):
|
|
20
|
+
value_type = float
|
|
21
|
+
entity = TaxUnit
|
|
22
|
+
label = "NYC income tax before credits"
|
|
23
|
+
unit = USD
|
|
24
|
+
definition_period = YEAR
|
|
25
|
+
defined_for = "in_nyc"
|
|
26
|
+
|
|
27
|
+
def formula(tax_unit, period, parameters):
|
|
28
|
+
taxable_income = tax_unit("nyc_taxable_income", period)
|
|
29
|
+
filing_status = tax_unit("filing_status", period)
|
|
30
|
+
filing_statuses = filing_status.possible_values
|
|
31
|
+
p = parameters(period).gov.local.ny.nyc.tax.income.rates
|
|
32
|
+
regular_tax = select(
|
|
33
|
+
[
|
|
34
|
+
filing_status == filing_statuses.SINGLE,
|
|
35
|
+
filing_status == filing_statuses.JOINT,
|
|
36
|
+
filing_status == filing_statuses.HEAD_OF_HOUSEHOLD,
|
|
37
|
+
filing_status == filing_statuses.SURVIVING_SPOUSE,
|
|
38
|
+
filing_status == filing_statuses.SEPARATE,
|
|
39
|
+
],
|
|
40
|
+
[
|
|
41
|
+
p.single.calc(taxable_income),
|
|
42
|
+
p.joint.calc(taxable_income),
|
|
43
|
+
p.head_of_household.calc(taxable_income),
|
|
44
|
+
p.surviving_spouse.calc(taxable_income),
|
|
45
|
+
p.separate.calc(taxable_income),
|
|
46
|
+
],
|
|
47
|
+
)
|
|
48
|
+
mamdani_tax = add(tax_unit, period, ["nyc_mamdani_income_tax"])
|
|
49
|
+
return regular_tax + mamdani_tax
|
|
50
|
+
|
|
51
|
+
class reform(Reform):
|
|
52
|
+
def apply(self):
|
|
53
|
+
self.update_variable(nyc_mamdani_income_tax)
|
|
54
|
+
self.update_variable(nyc_income_tax_before_credits)
|
|
55
|
+
|
|
56
|
+
return reform
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def create_nyc_mamdani_income_tax_reform(
|
|
60
|
+
parameters, period, bypass: bool = False
|
|
61
|
+
):
|
|
62
|
+
if bypass:
|
|
63
|
+
return create_nyc_mamdani_income_tax()
|
|
64
|
+
|
|
65
|
+
p = parameters.gov.local.ny.mamdani_income_tax
|
|
66
|
+
|
|
67
|
+
reform_active = False
|
|
68
|
+
current_period = period_(period)
|
|
69
|
+
|
|
70
|
+
for i in range(5):
|
|
71
|
+
if p(current_period).in_effect:
|
|
72
|
+
reform_active = True
|
|
73
|
+
break
|
|
74
|
+
current_period = current_period.offset(1, "year")
|
|
75
|
+
|
|
76
|
+
if reform_active:
|
|
77
|
+
return create_nyc_mamdani_income_tax()
|
|
78
|
+
else:
|
|
79
|
+
return None
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
nyc_mamdani_income_tax = create_nyc_mamdani_income_tax_reform(
|
|
83
|
+
None, None, bypass=True
|
|
84
|
+
)
|
|
@@ -101,6 +101,9 @@ from .reconciliation import (
|
|
|
101
101
|
from .states.mi.surtax import (
|
|
102
102
|
create_mi_surtax_reform,
|
|
103
103
|
)
|
|
104
|
+
from .local.ny.mamdani_income_tax import (
|
|
105
|
+
create_nyc_mamdani_income_tax_reform,
|
|
106
|
+
)
|
|
104
107
|
from .states.ut import (
|
|
105
108
|
create_ut_refundable_eitc_reform,
|
|
106
109
|
)
|
|
@@ -252,6 +255,11 @@ def create_structural_reforms_from_parameters(parameters, period):
|
|
|
252
255
|
parameters, period
|
|
253
256
|
)
|
|
254
257
|
mi_surtax = create_mi_surtax_reform(parameters, period)
|
|
258
|
+
|
|
259
|
+
nyc_mamdani_income_tax = create_nyc_mamdani_income_tax_reform(
|
|
260
|
+
parameters, period
|
|
261
|
+
)
|
|
262
|
+
|
|
255
263
|
ut_refundable_eitc = create_ut_refundable_eitc_reform(parameters, period)
|
|
256
264
|
|
|
257
265
|
american_worker_rebate_act = create_american_worker_rebate_act_reform(
|
|
@@ -320,6 +328,7 @@ def create_structural_reforms_from_parameters(parameters, period):
|
|
|
320
328
|
reconciled_ssn_for_llc_and_aoc,
|
|
321
329
|
ctc_additional_bracket,
|
|
322
330
|
mi_surtax,
|
|
331
|
+
nyc_mamdani_income_tax,
|
|
323
332
|
ut_refundable_eitc,
|
|
324
333
|
additional_tax_bracket,
|
|
325
334
|
american_worker_rebate_act,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
- name: Person below threshold in 2026
|
|
2
|
+
period: 2026
|
|
3
|
+
reforms: policyengine_us.reforms.local.ny.mamdani_income_tax.nyc_mamdani_income_tax
|
|
4
|
+
input:
|
|
5
|
+
gov.local.ny.mamdani_income_tax.in_effect: True
|
|
6
|
+
nyc_taxable_income: 800_000
|
|
7
|
+
in_nyc: true
|
|
8
|
+
output:
|
|
9
|
+
nyc_mamdani_income_tax: 0
|
|
10
|
+
|
|
11
|
+
- name: Person at threshold in 2026
|
|
12
|
+
period: 2026
|
|
13
|
+
reforms: policyengine_us.reforms.local.ny.mamdani_income_tax.nyc_mamdani_income_tax
|
|
14
|
+
input:
|
|
15
|
+
gov.local.ny.mamdani_income_tax.in_effect: True
|
|
16
|
+
nyc_taxable_income: 1_000_000
|
|
17
|
+
in_nyc: true
|
|
18
|
+
output:
|
|
19
|
+
nyc_mamdani_income_tax: 0
|
|
20
|
+
|
|
21
|
+
- name: Person above threshold in 2026
|
|
22
|
+
period: 2026
|
|
23
|
+
reforms: policyengine_us.reforms.local.ny.mamdani_income_tax.nyc_mamdani_income_tax
|
|
24
|
+
input:
|
|
25
|
+
gov.local.ny.mamdani_income_tax.in_effect: True
|
|
26
|
+
nyc_taxable_income: 1_200_000
|
|
27
|
+
in_nyc: true
|
|
28
|
+
output:
|
|
29
|
+
# (1_200_000 - 1_000_000) * 0.02 = 200_000 * 0.02 = 4_000
|
|
30
|
+
nyc_mamdani_income_tax: 4_000
|
|
31
|
+
|
|
32
|
+
- name: Person well above threshold in 2026
|
|
33
|
+
period: 2026
|
|
34
|
+
reforms: policyengine_us.reforms.local.ny.mamdani_income_tax.nyc_mamdani_income_tax
|
|
35
|
+
input:
|
|
36
|
+
gov.local.ny.mamdani_income_tax.in_effect: True
|
|
37
|
+
nyc_taxable_income: 2_000_000
|
|
38
|
+
in_nyc: true
|
|
39
|
+
output:
|
|
40
|
+
# (2_000_000 - 1_000_000) * 0.02 = 1_000_000 * 0.02 = 20_000
|
|
41
|
+
nyc_mamdani_income_tax: 20_000
|
|
42
|
+
|
|
43
|
+
- name: Person not in NYC (no tax)
|
|
44
|
+
period: 2026
|
|
45
|
+
reforms: policyengine_us.reforms.local.ny.mamdani_income_tax.nyc_mamdani_income_tax
|
|
46
|
+
input:
|
|
47
|
+
gov.local.ny.mamdani_income_tax.in_effect: True
|
|
48
|
+
nyc_taxable_income: 1_500_000
|
|
49
|
+
in_nyc: false
|
|
50
|
+
output:
|
|
51
|
+
nyc_mamdani_income_tax: 0
|
|
@@ -877,6 +877,8 @@ policyengine_us/parameters/gov/local/co/denver/dhs/property_tax_relief/amount/ho
|
|
|
877
877
|
policyengine_us/parameters/gov/local/co/denver/dhs/property_tax_relief/amount/renter.yaml,sha256=-PsxqV-gvz-mIEOoVFGWK6d57jZyUERlxCiKeR41ztc,808
|
|
878
878
|
policyengine_us/parameters/gov/local/md/montgomery/tax/income/credits/eitc/README.md,sha256=8WsaWutBw5kaloVJ0HEU-S3TCKXVKh0YjeJcrhWYL6I,27
|
|
879
879
|
policyengine_us/parameters/gov/local/md/montgomery/tax/income/credits/eitc/refundable/match.yaml,sha256=ZksNCK4j8ztAzzh7iewTwqIVZEL-Zyz2Ci8jKOxDEjk,1833
|
|
880
|
+
policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml,sha256=8I-_3ipnyX2W0JFwg4NzdDwhpCTmHmeyI9VZGfCNKEg,404
|
|
881
|
+
policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml,sha256=JELlesv-8Gi4UxbFpSu7Z_Z3sTqFTM3sQEkdRxepB0k,528
|
|
880
882
|
policyengine_us/parameters/gov/local/ny/nyc/tax/income/credits/non_refundable.yaml,sha256=25IANzXEQo0E4MmYeXFG8aau7degKcdHCqEEMFqYpms,198
|
|
881
883
|
policyengine_us/parameters/gov/local/ny/nyc/tax/income/credits/refundable.yaml,sha256=zO9ZB-IYuM4N_L2X2O7Mj_vTi8rZS5k_3teDEU_Yr6M,180
|
|
882
884
|
policyengine_us/parameters/gov/local/ny/nyc/tax/income/credits/cdcc/child_age_restriction.yaml,sha256=tMLgPt-tnecVYHBlRd7t4cxKc1bEEFCOYEppzZFbbIc,314
|
|
@@ -3316,7 +3318,7 @@ policyengine_us/params_on_demand/gov/hhs/medicaid/geography/medicaid_rating_area
|
|
|
3316
3318
|
policyengine_us/reforms/__init__.py,sha256=FPV8k2633kzUhbKUK8jC6yJONbnZ5n9zLAq2UL57KH4,113
|
|
3317
3319
|
policyengine_us/reforms/dc_kccatc.py,sha256=LyGMfEKe-0TgQ-2vCYGOD8W-EGEW8_DgIqCQP89qDyg,4283
|
|
3318
3320
|
policyengine_us/reforms/dc_tax_threshold_joint_ratio.py,sha256=G-5E1EJFGZ3VeUl_fuyj82nMIttHRNRdlT-x98koJrk,1633
|
|
3319
|
-
policyengine_us/reforms/reforms.py,sha256=
|
|
3321
|
+
policyengine_us/reforms/reforms.py,sha256=ahVB9aEgXo9LQ8zEt3Xe9FH9ARBvUpId9hy2JEb0u7s,11854
|
|
3320
3322
|
policyengine_us/reforms/taxsim.py,sha256=bXNFWfjBX5USld1C7fziT6BBmRy-avz00QtL8WmCHy0,5276
|
|
3321
3323
|
policyengine_us/reforms/winship.py,sha256=_q74Af1nkmoh0-M6PZJ2FcJAn6v5zf5sAEgvxjwHwyA,3069
|
|
3322
3324
|
policyengine_us/reforms/aca/__init__.py,sha256=ugTekuQuCQw7EScXFCp5U3NSKhut8wIrrJK-1Y0aL9Q,234
|
|
@@ -3377,6 +3379,8 @@ policyengine_us/reforms/harris/lift/__init__.py,sha256=-ckwJS8DfVDWjDg00-5GhRLzp
|
|
|
3377
3379
|
policyengine_us/reforms/harris/lift/middle_class_tax_credit.py,sha256=R90lF62fN-qdF6r04vhqumfy_ZPMA-WjrPcCgTKK0H4,2649
|
|
3378
3380
|
policyengine_us/reforms/harris/rent_relief_act/__init__.py,sha256=DW52D-5yP-LrhEeLUaM1bS_vECR9BNpnHXMj_a5ZqSo,82
|
|
3379
3381
|
policyengine_us/reforms/harris/rent_relief_act/rent_relief_tax_credit.py,sha256=srDUVpky8yTN-e-8wwtV3TH_y1KzNcFiEzFwBoEQ00M,3437
|
|
3382
|
+
policyengine_us/reforms/local/ny/__init__.py,sha256=z_WF8fYdvlb-o7GX9tdSzyaJfvHeV7jYboFpmxBr-yE,106
|
|
3383
|
+
policyengine_us/reforms/local/ny/mamdani_income_tax.py,sha256=se_dctX645T4JLZ7cefkMGOdEc104VuWZEQD9PTSNhs,2833
|
|
3380
3384
|
policyengine_us/reforms/local/nyc/stc/adjust_income_limit_by_filing_status_and_eligibility_by_children.py,sha256=NHbdSqhs0ug0Mc-bQkiaY3FJhwaEXAaBdbEOBC-l9EE,2287
|
|
3381
3385
|
policyengine_us/reforms/local/nyc/stc/phase_out/README.md,sha256=MU4Oy0wnRuo-NCEQsmt1jO0gfpt67I4NIFL92DPAv2U,429
|
|
3382
3386
|
policyengine_us/reforms/local/nyc/stc/phase_out/__init__.py,sha256=jFduppr6cvdSzRSPDvgo_wF5E2x8Bl2Apefb7_wTnrM,110
|
|
@@ -5583,6 +5587,7 @@ policyengine_us/tests/policy/contrib/federal/reported_state_income_tax.yaml,sha2
|
|
|
5583
5587
|
policyengine_us/tests/policy/contrib/harris/capital_gains/harris_capital_gains.yaml,sha256=05HA36fzyqlF-5LDYpindM5Qq7sNH41WUqG1jHoGWWI,2347
|
|
5584
5588
|
policyengine_us/tests/policy/contrib/harris/lift/middle_class_tax_credit.yaml,sha256=rhO2tPPKU0fpeUCF5LbSad4tnE_MhYWia8doZAchQuw,2966
|
|
5585
5589
|
policyengine_us/tests/policy/contrib/harris/rent_relief_act/rent_relief_tax_credit.yaml,sha256=8pUm_jmYn2R5LVABvSFoYfVgs172WDqWi1phRhs2X2g,6747
|
|
5590
|
+
policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml,sha256=hYsnQhUsOW3XpYjIXP7c-XHpos2HKTQjbpPCAGPZtnU,1597
|
|
5586
5591
|
policyengine_us/tests/policy/contrib/local/nyc/stc/nyc_school_tax_credit_with_phase_out.yaml,sha256=CSTdYl3fCrK5JeMOfHjHXC44s2f-gN__Qe0AwXglCDI,1859
|
|
5587
5592
|
policyengine_us/tests/policy/contrib/reconciliation/reconciled_ssn_for_llc_and_aoc.yaml,sha256=C_qZkr9JCIwEo3SiW4Xui8UOTsbeQSNsI64Pa350zdo,2755
|
|
5588
5593
|
policyengine_us/tests/policy/contrib/snap/abolish_snap_deductions.yaml,sha256=5pgcUuafSNIF2dWsBHMebB7YSrRq9svD0SkzJcvy6po,467
|
|
@@ -8920,8 +8925,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
|
|
|
8920
8925
|
policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
|
|
8921
8926
|
policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
|
|
8922
8927
|
policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
|
|
8923
|
-
policyengine_us-1.
|
|
8924
|
-
policyengine_us-1.
|
|
8925
|
-
policyengine_us-1.
|
|
8926
|
-
policyengine_us-1.
|
|
8927
|
-
policyengine_us-1.
|
|
8928
|
+
policyengine_us-1.444.0.dist-info/METADATA,sha256=hiGSeDF7EReWOF4Hkk5mfw_hfWaTtM0SqVRJ6lOdb40,1649
|
|
8929
|
+
policyengine_us-1.444.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
8930
|
+
policyengine_us-1.444.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
|
|
8931
|
+
policyengine_us-1.444.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
|
|
8932
|
+
policyengine_us-1.444.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|