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

Files changed (100) hide show
  1. policyengine_us/parameters/gov/contrib/states/ri/ctc/age_limit.yaml +9 -0
  2. policyengine_us/parameters/gov/contrib/states/ri/ctc/amount.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/states/ri/ctc/in_effect.yaml +9 -0
  4. policyengine_us/parameters/gov/contrib/states/ri/ctc/phaseout/rate.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/ri/ctc/phaseout/threshold.yaml +23 -0
  6. policyengine_us/parameters/gov/contrib/states/ri/ctc/refundability/cap.yaml +9 -0
  7. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/age_limit/in_effect.yaml +9 -0
  8. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/age_limit/threshold.yaml +9 -0
  9. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/amount.yaml +15 -0
  10. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/in_effect.yaml +9 -0
  11. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/phaseout/rate.yaml +9 -0
  12. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/phaseout/threshold.yaml +23 -0
  13. policyengine_us/parameters/gov/states/ca/tax/income/agi/subtractions.yaml +1 -0
  14. policyengine_us/parameters/gov/states/co/tax/income/credits/refundable.yaml +1 -0
  15. policyengine_us/parameters/gov/states/co/tax/income/credits/sales_tax_refund/amount/scale.yaml +1 -1
  16. policyengine_us/parameters/gov/states/co/tax/income/credits/tabor/joint.yaml +12 -0
  17. policyengine_us/parameters/gov/states/co/tax/income/credits/tabor/single.yaml +12 -0
  18. policyengine_us/parameters/gov/states/de/tax/income/credits/refundable.yaml +2 -2
  19. policyengine_us/parameters/gov/states/de/tax/income/credits/relief_rebate/amount.yaml +1 -1
  20. policyengine_us/parameters/gov/states/ga/tax/income/credits/non_refundable.yaml +1 -4
  21. policyengine_us/parameters/gov/states/ga/tax/income/credits/surplus_tax_rebate/amount.yaml +5 -5
  22. policyengine_us/parameters/gov/states/hi/tax/income/credits/act_115_rebate/joint.yaml +20 -0
  23. policyengine_us/parameters/gov/states/hi/tax/income/credits/act_115_rebate/single.yaml +20 -0
  24. policyengine_us/parameters/gov/states/hi/tax/income/credits/refundable.yaml +6 -0
  25. policyengine_us/parameters/gov/states/id/tax/income/credits/2022_rebate/floor.yaml +1 -1
  26. policyengine_us/parameters/gov/states/id/tax/income/credits/2022_rebate/rate.yaml +1 -1
  27. policyengine_us/parameters/gov/states/id/tax/income/credits/refundable.yaml +4 -4
  28. policyengine_us/parameters/gov/states/id/tax/income/credits/special_seasonal_rebate/floor.yaml +5 -5
  29. policyengine_us/parameters/gov/states/id/tax/income/credits/special_seasonal_rebate/rate.yaml +1 -1
  30. policyengine_us/parameters/gov/states/il/tax/income/credits/income_tax_rebate/amount/dependent.yaml +10 -0
  31. policyengine_us/parameters/gov/states/il/tax/income/credits/income_tax_rebate/amount/joint.yaml +20 -0
  32. policyengine_us/parameters/gov/states/il/tax/income/credits/income_tax_rebate/amount/other.yaml +20 -0
  33. policyengine_us/parameters/gov/states/il/tax/income/credits/income_tax_rebate/max_dependents.yaml +10 -0
  34. policyengine_us/parameters/gov/states/il/tax/income/credits/refundable.yaml +5 -0
  35. policyengine_us/parameters/gov/states/in/tax/income/credits/automatic_refund_rebate/amount/additional.yaml +10 -0
  36. policyengine_us/parameters/gov/states/in/tax/income/credits/automatic_refund_rebate/amount/base.yaml +12 -0
  37. policyengine_us/parameters/gov/states/in/tax/income/credits/refundable.yaml +6 -1
  38. policyengine_us/parameters/gov/states/ma/tax/income/credits/refundable.yaml +12 -0
  39. policyengine_us/parameters/gov/states/ma/tax/income/credits/taxpayer_refund_rebate/rate.yaml +10 -0
  40. policyengine_us/parameters/gov/states/me/tax/income/credits/refundable.yaml +6 -0
  41. policyengine_us/parameters/gov/states/me/tax/income/credits/relief_rebate/amount.yaml +10 -0
  42. policyengine_us/parameters/gov/states/me/tax/income/credits/relief_rebate/income_limit.yaml +21 -0
  43. policyengine_us/parameters/gov/states/mn/tax/income/credits/cwfc/ctc/age_limit.yaml +14 -0
  44. policyengine_us/parameters/gov/states/mt/tax/income/credits/non_refundable.yaml +1 -4
  45. policyengine_us/parameters/gov/states/mt/tax/income/credits/rebate/amount.yaml +5 -5
  46. policyengine_us/parameters/gov/states/ri/tax/income/credits/child_tax_rebate/amount.yaml +1 -1
  47. policyengine_us/parameters/gov/states/ri/tax/income/credits/child_tax_rebate/limit/age.yaml +1 -1
  48. policyengine_us/parameters/gov/states/ri/tax/income/credits/child_tax_rebate/limit/child.yaml +1 -1
  49. policyengine_us/parameters/gov/states/ri/tax/income/credits/child_tax_rebate/limit/income.yaml +5 -5
  50. policyengine_us/parameters/gov/states/ri/tax/income/credits/refundable.yaml +1 -4
  51. policyengine_us/parameters/gov/states/sc/tax/income/credits/2022_rebate/amount.yaml +12 -0
  52. policyengine_us/parameters/gov/states/sc/tax/income/credits/non_refundable.yaml +7 -1
  53. policyengine_us/parameters/gov/states/va/tax/income/credits/non_refundable.yaml +6 -2
  54. policyengine_us/parameters/gov/states/va/tax/income/rebate/amount.yaml +10 -0
  55. policyengine_us/reforms/reforms.py +8 -0
  56. policyengine_us/reforms/states/ri/__init__.py +2 -0
  57. policyengine_us/reforms/states/ri/ctc/__init__.py +1 -0
  58. policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py +176 -0
  59. policyengine_us/reforms/states/ri/exemption/__init__.py +1 -0
  60. policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py +137 -0
  61. policyengine_us/tests/policy/baseline/gov/irs/integration/us_itemize.yaml +1 -1
  62. policyengine_us/tests/policy/baseline/gov/states/ca/tax/income/integration.yaml +50 -0
  63. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/co_tabor_cash_back.yaml +71 -0
  64. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/integration.yaml +38 -0
  65. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/hi_act_115_rebate.yaml +35 -0
  66. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/integration.yaml +63 -0
  67. policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate.yaml +49 -0
  68. policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate_eligible.yaml +35 -0
  69. policyengine_us/tests/policy/baseline/gov/states/in/tax/income/credits/in_automatic_refund_rebate.yaml +47 -0
  70. policyengine_us/tests/policy/baseline/gov/states/ma/tax/income/credits/ma_taxpayer_refund_rebate.yaml +42 -0
  71. policyengine_us/tests/policy/baseline/gov/states/ma/tax/income/integration_ma.yaml +6 -0
  72. policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_relief_rebate.yaml +26 -0
  73. policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_relief_rebate_eligible.yaml +35 -0
  74. policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits_ctc_eligible_child.yaml +26 -0
  75. policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/mn_integration.yaml +55 -0
  76. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/integration.yaml +3 -0
  77. policyengine_us/tests/policy/baseline/gov/states/ri/tax/income/integration.yaml +47 -0
  78. policyengine_us/tests/policy/baseline/gov/states/sc/tax/income/credits/sc_2022_rebate.yaml +76 -0
  79. policyengine_us/tests/policy/baseline/gov/states/va/tax/income/integration.yaml +2 -0
  80. policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml +177 -0
  81. policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml +88 -0
  82. policyengine_us/variables/gov/states/co/tax/income/credits/co_tabor_cash_back.py +17 -0
  83. policyengine_us/variables/gov/states/hi/tax/income/credits/hi_act_115_rebate.py +32 -0
  84. policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate.py +27 -0
  85. policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate_eligible.py +24 -0
  86. policyengine_us/variables/gov/states/in/tax/income/credits/in_automatic_refund_rebate.py +26 -0
  87. policyengine_us/variables/gov/states/ma/tax/income/credits/ma_taxpayer_refund_rebate.py +29 -0
  88. policyengine_us/variables/gov/states/me/tax/income/credits/me_relief_rebate.py +16 -0
  89. policyengine_us/variables/gov/states/me/tax/income/credits/me_relief_rebate_eligible.py +17 -0
  90. policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.py +5 -1
  91. policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits_ctc_eligible_child.py +24 -0
  92. policyengine_us/variables/gov/states/mt/tax/income/credits/rebate/mt_income_tax_rebate.py +1 -2
  93. policyengine_us/variables/gov/states/sc/tax/income/credits/sc_2022_rebate.py +29 -0
  94. {policyengine_us-1.423.0.dist-info → policyengine_us-1.424.1.dist-info}/METADATA +1 -1
  95. {policyengine_us-1.423.0.dist-info → policyengine_us-1.424.1.dist-info}/RECORD +98 -46
  96. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/hi_low_income_household_renters/integration.yaml +0 -61
  97. policyengine_us/tests/policy/baseline/gov/states/ri/tax/income/agi/subtractions/taxable_retirement_income/integration.yaml +0 -45
  98. {policyengine_us-1.423.0.dist-info → policyengine_us-1.424.1.dist-info}/WHEEL +0 -0
  99. {policyengine_us-1.423.0.dist-info → policyengine_us-1.424.1.dist-info}/entry_points.txt +0 -0
  100. {policyengine_us-1.423.0.dist-info → policyengine_us-1.424.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,177 @@
1
+ - name: RI CTC - fully refundable with AGI phaseout
2
+ absolute_error_margin: 0.1
3
+ period: 2025
4
+ reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
5
+ input:
6
+ gov.contrib.states.ri.ctc.in_effect: true
7
+ gov.contrib.states.ri.ctc.amount: 1_000
8
+ gov.contrib.states.ri.ctc.age_limit: 18
9
+ gov.contrib.states.ri.ctc.refundability.cap: 999_999 # High cap = fully refundable, amount.yaml controls max
10
+ gov.contrib.states.ri.ctc.phaseout.threshold.SINGLE: 75_000
11
+ gov.contrib.states.ri.ctc.phaseout.rate: 0.05
12
+ people:
13
+ parent:
14
+ age: 35
15
+ employment_income: 50_000
16
+ child1:
17
+ age: 5
18
+ is_tax_unit_dependent: true
19
+ child2:
20
+ age: 10
21
+ is_tax_unit_dependent: true
22
+ tax_units:
23
+ tax_unit:
24
+ members: [parent, child1, child2]
25
+ filing_status: SINGLE
26
+ households:
27
+ household:
28
+ members: [parent, child1, child2]
29
+ state_name: RI
30
+ output:
31
+ ri_ctc_eligible_children: 2
32
+ ri_ctc_maximum: 2_000 # 2 children × $1_000 amount
33
+ ri_ctc_phaseout: 0
34
+ ri_total_ctc: 2_000
35
+ ri_refundable_ctc: 2_000 # min(2_000 total credit, 999_999 cap) = 2_000 (amount controls)
36
+ ri_non_refundable_ctc: 0
37
+ ri_refundable_credits: 2_246.32 # 2_000 (CTC) + 246.32 (EITC)
38
+ ri_non_refundable_credits: 0
39
+
40
+ - name: RI CTC - partially refundable
41
+ absolute_error_margin: 0.1
42
+ period: 2025
43
+ reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
44
+ input:
45
+ gov.contrib.states.ri.ctc.in_effect: true
46
+ gov.contrib.states.ri.ctc.amount: 1_500
47
+ gov.contrib.states.ri.ctc.age_limit: 18
48
+ gov.contrib.states.ri.ctc.refundability.cap: 1_000 # Cap < total credit = partially refundable
49
+ gov.contrib.states.ri.ctc.phaseout.threshold.SINGLE: 75_000
50
+ gov.contrib.states.ri.ctc.phaseout.rate: 0.05
51
+ people:
52
+ parent:
53
+ age: 35
54
+ employment_income: 30_000
55
+ child1:
56
+ age: 5
57
+ is_tax_unit_dependent: true
58
+ tax_units:
59
+ tax_unit:
60
+ members: [parent, child1]
61
+ filing_status: SINGLE
62
+ households:
63
+ household:
64
+ members: [parent, child1]
65
+ state_name: RI
66
+ output:
67
+ ri_total_ctc: 1_500
68
+ ri_refundable_ctc: 1_000 # min(1_500 total credit, 1_000 cap) = 1_000
69
+ ri_non_refundable_ctc: 500 # 1_500 - 1_000 = 500
70
+ ri_refundable_credits: 1_522.45 # 1_000 (CTC refundable) + 522.45 (EITC)
71
+ ri_non_refundable_credits: 500 # 500 (CTC non-refundable)
72
+
73
+ - name: RI CTC - nonrefundable with no phaseout
74
+ absolute_error_margin: 0.1
75
+ period: 2025
76
+ reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
77
+ input:
78
+ gov.contrib.states.ri.ctc.in_effect: true
79
+ gov.contrib.states.ri.ctc.amount: 500
80
+ gov.contrib.states.ri.ctc.age_limit: 6
81
+ gov.contrib.states.ri.ctc.refundability.cap: 0 # Cap = 0, credit is nonrefundable
82
+ people:
83
+ parent:
84
+ age: 35
85
+ employment_income: 40_000
86
+ child1:
87
+ age: 3
88
+ is_tax_unit_dependent: true
89
+ child2:
90
+ age: 10
91
+ is_tax_unit_dependent: true
92
+ tax_units:
93
+ tax_unit:
94
+ members: [parent, child1, child2]
95
+ filing_status: SINGLE
96
+ households:
97
+ household:
98
+ members: [parent, child1, child2]
99
+ state_name: RI
100
+ output:
101
+ ri_ctc_eligible_children: 1
102
+ ri_total_ctc: 500
103
+ ri_refundable_ctc: 0 # min(500 total credit, 0 cap) = 0
104
+ ri_non_refundable_ctc: 500 # 500 - 0 = 500
105
+ ri_refundable_credits: 583.28 # 0 (CTC refundable) + 583.28 (EITC)
106
+ ri_non_refundable_credits: 500 # 500 (CTC non-refundable)
107
+
108
+ - name: RI CTC - AGI phaseout reduces credit
109
+ absolute_error_margin: 0.1
110
+ period: 2025
111
+ reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
112
+ input:
113
+ gov.contrib.states.ri.ctc.in_effect: true
114
+ gov.contrib.states.ri.ctc.amount: 1_000
115
+ gov.contrib.states.ri.ctc.age_limit: 18
116
+ gov.contrib.states.ri.ctc.refundability.cap: 999_999 # Fully refundable
117
+ gov.contrib.states.ri.ctc.phaseout.threshold.SINGLE: 75_000
118
+ gov.contrib.states.ri.ctc.phaseout.rate: 0.05
119
+ people:
120
+ parent:
121
+ age: 35
122
+ employment_income: 85_000
123
+ child1:
124
+ age: 5
125
+ is_tax_unit_dependent: true
126
+ tax_units:
127
+ tax_unit:
128
+ members: [parent, child1]
129
+ filing_status: SINGLE
130
+ households:
131
+ household:
132
+ members: [parent, child1]
133
+ state_name: RI
134
+ output:
135
+ ri_ctc_maximum: 1_000 # 1 child × $1_000 amount
136
+ ri_ctc_phaseout: 500 # (85_000 - 75_000) * 0.05 = 500
137
+ ri_total_ctc: 500 # 1_000 - 500 = 500
138
+ ri_refundable_ctc: 500 # min(500 total credit, 999_999 cap) = 500 (total credit controls)
139
+ ri_non_refundable_ctc: 0
140
+ ri_refundable_credits: 500 # 500 (CTC refundable) + 0 (EITC - income too high)
141
+ ri_non_refundable_credits: 0
142
+
143
+ - name: RI CTC - cap exceeds amount but amount controls max
144
+ absolute_error_margin: 0.1
145
+ period: 2025
146
+ reforms: policyengine_us.reforms.states.ri.ctc.ri_ctc_reform.ri_ctc
147
+ input:
148
+ gov.contrib.states.ri.ctc.in_effect: true
149
+ gov.contrib.states.ri.ctc.amount: 500 # Only $500 per child
150
+ gov.contrib.states.ri.ctc.age_limit: 18
151
+ gov.contrib.states.ri.ctc.refundability.cap: 10_000 # Cap is much higher than possible credit
152
+ people:
153
+ parent:
154
+ age: 35
155
+ employment_income: 40_000
156
+ child1:
157
+ age: 5
158
+ is_tax_unit_dependent: true
159
+ child2:
160
+ age: 10
161
+ is_tax_unit_dependent: true
162
+ tax_units:
163
+ tax_unit:
164
+ members: [parent, child1, child2]
165
+ filing_status: SINGLE
166
+ households:
167
+ household:
168
+ members: [parent, child1, child2]
169
+ state_name: RI
170
+ output:
171
+ ri_ctc_eligible_children: 2
172
+ ri_ctc_maximum: 1_000 # 2 children × $500 amount (NOT $10_000!)
173
+ ri_total_ctc: 1_000 # amount.yaml controls the maximum
174
+ ri_refundable_ctc: 1_000 # min(1_000 total credit, 10_000 cap) = 1_000
175
+ ri_non_refundable_ctc: 0
176
+ ri_refundable_credits: 1_583.28 # 1_000 (CTC refundable) + 583.28 (EITC)
177
+ ri_non_refundable_credits: 0
@@ -0,0 +1,88 @@
1
+ - name: RI exemption reform - restrict to children under 18
2
+ period: 2025
3
+ reforms: policyengine_us.reforms.states.ri.exemption.ri_exemption_reform.ri_exemption_reform
4
+ input:
5
+ gov.contrib.states.ri.dependent_exemption.in_effect: true
6
+ gov.contrib.states.ri.dependent_exemption.amount: 5_100
7
+ gov.contrib.states.ri.dependent_exemption.age_limit.in_effect: true
8
+ gov.contrib.states.ri.dependent_exemption.age_limit.threshold: 18
9
+ people:
10
+ parent:
11
+ age: 40
12
+ employment_income: 60_000
13
+ child1:
14
+ age: 16
15
+ is_tax_unit_dependent: true
16
+ child2:
17
+ age: 20
18
+ is_tax_unit_dependent: true
19
+ tax_units:
20
+ tax_unit:
21
+ members: [parent, child1, child2]
22
+ filing_status: SINGLE
23
+ households:
24
+ household:
25
+ members: [parent, child1, child2]
26
+ state_name: RI
27
+ output:
28
+ ri_exemptions: 10_150 # 1 personal (5_050) + 1 dependent (5_100)
29
+
30
+ - name: RI exemption reform - restrict to children under 13
31
+ period: 2025
32
+ reforms: policyengine_us.reforms.states.ri.exemption.ri_exemption_reform.ri_exemption_reform
33
+ input:
34
+ gov.contrib.states.ri.dependent_exemption.in_effect: true
35
+ gov.contrib.states.ri.dependent_exemption.amount: 5_100
36
+ gov.contrib.states.ri.dependent_exemption.age_limit.in_effect: true
37
+ gov.contrib.states.ri.dependent_exemption.age_limit.threshold: 13
38
+ people:
39
+ parent:
40
+ age: 40
41
+ employment_income: 60_000
42
+ child1:
43
+ age: 10
44
+ is_tax_unit_dependent: true
45
+ child2:
46
+ age: 16
47
+ is_tax_unit_dependent: true
48
+ tax_units:
49
+ tax_unit:
50
+ members: [parent, child1, child2]
51
+ filing_status: SINGLE
52
+ households:
53
+ household:
54
+ members: [parent, child1, child2]
55
+ state_name: RI
56
+ output:
57
+ ri_exemptions: 10_150 # 1 personal (5_050) + 1 dependent (5_100)
58
+
59
+ - name: RI exemption reform - AGI phaseout
60
+ period: 2025
61
+ reforms: policyengine_us.reforms.states.ri.exemption.ri_exemption_reform.ri_exemption_reform
62
+ input:
63
+ gov.contrib.states.ri.dependent_exemption.in_effect: true
64
+ gov.contrib.states.ri.dependent_exemption.amount: 5_100
65
+ gov.contrib.states.ri.dependent_exemption.phaseout.threshold.SINGLE: 100_000
66
+ gov.contrib.states.ri.dependent_exemption.phaseout.rate: 0.05
67
+ people:
68
+ parent:
69
+ age: 40
70
+ employment_income: 120_000
71
+ child1:
72
+ age: 10
73
+ is_tax_unit_dependent: true
74
+ tax_units:
75
+ tax_unit:
76
+ members: [parent, child1]
77
+ filing_status: SINGLE
78
+ households:
79
+ household:
80
+ members: [parent, child1]
81
+ state_name: RI
82
+ output:
83
+ # Personal exemption: 5_050 (baseline)
84
+ # Dependent exemption before phaseout: 5_100
85
+ # Phaseout: (120_000 - 100_000) * 0.05 = 1_000 (only applies to dependent exemption)
86
+ # Dependent exemption after phaseout: 5_100 - 1_000 = 4_100
87
+ # Final: 5_050 (personal) + 4_100 (dependent) = 9_150
88
+ ri_exemptions: 9_150
@@ -0,0 +1,17 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_tabor_cash_back(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Colorado TABOR cash back"
8
+ defined_for = StateCode.CO
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://leg.colorado.gov/sites/default/files/documents/2022A/bills/2022a_233_01.pdf"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.co.tax.income.credits.tabor
15
+
16
+ joint = tax_unit("tax_unit_is_joint", period)
17
+ return where(joint, p.joint, p.single)
@@ -0,0 +1,32 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class hi_act_115_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Hawaii ACT 115 rebate"
8
+ defined_for = StateCode.HI
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://tax.hawaii.gov/act-115-ref/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.hi.tax.income.credits.act_115_rebate
15
+ filing_status = tax_unit("filing_status", period)
16
+ statuses = filing_status.possible_values
17
+ federal_agi = tax_unit("adjusted_gross_income", period)
18
+ return select(
19
+ [
20
+ filing_status == statuses.JOINT,
21
+ filing_status == statuses.HEAD_OF_HOUSEHOLD,
22
+ filing_status == statuses.SEPARATE,
23
+ filing_status == statuses.SURVIVING_SPOUSE,
24
+ ],
25
+ [
26
+ p.joint.calc(federal_agi),
27
+ p.single.calc(federal_agi),
28
+ p.single.calc(federal_agi),
29
+ p.joint.calc(federal_agi),
30
+ ],
31
+ default=p.single.calc(federal_agi),
32
+ )
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_income_tax_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Illinois income tax rebate"
8
+ defined_for = "il_income_tax_rebate_eligible"
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://codes.findlaw.com/il/chapter-35-revenue/il-st-sect-35-5-212-1.html"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(
15
+ period
16
+ ).gov.states.il.tax.income.credits.income_tax_rebate
17
+ federal_agi = tax_unit("adjusted_gross_income", period)
18
+ joint = tax_unit("tax_unit_is_joint", period)
19
+ base_amount = where(
20
+ joint,
21
+ p.amount.joint.calc(federal_agi),
22
+ p.amount.other.calc(federal_agi),
23
+ )
24
+ dependent_count = tax_unit("tax_unit_dependents", period)
25
+ capped_dependents = min_(dependent_count, p.max_dependents)
26
+ dependent_amount = capped_dependents * p.amount.dependent
27
+ return base_amount + dependent_amount
@@ -0,0 +1,24 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_income_tax_rebate_eligible(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Illinois income tax rebate eligible"
8
+ defined_for = StateCode.IL
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://codes.findlaw.com/il/chapter-35-revenue/il-st-sect-35-5-212-1.html"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(
15
+ period
16
+ ).gov.states.il.tax.income.credits.income_tax_rebate
17
+ federal_agi = tax_unit("adjusted_gross_income", period)
18
+ joint = tax_unit("tax_unit_is_joint", period)
19
+ income_threshold = where(
20
+ joint,
21
+ p.amount.joint.thresholds[1],
22
+ p.amount.other.thresholds[1],
23
+ )
24
+ return federal_agi < income_threshold
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class in_automatic_refund_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Indiana automatic refund rebate"
8
+ defined_for = StateCode.IN
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://law.justia.com/codes/indiana/2022/title-4/article-10/chapter-22/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = (
15
+ parameters(period)
16
+ .gov.states["in"]
17
+ .tax.income.credits.automatic_refund_rebate.amount
18
+ )
19
+
20
+ # Total amount per person (base + additional)
21
+ amount_per_person = p.base + p.additional
22
+
23
+ # Multiply by number of head and spouse
24
+ head_spouse_count = tax_unit("head_spouse_count", period)
25
+
26
+ return amount_per_person * head_spouse_count
@@ -0,0 +1,29 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ma_taxpayer_refund_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Massachusetts taxpayer refund rebate"
8
+ defined_for = StateCode.MA
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://tax.hawaii.gov/act-115-ref/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ income_tax_before_credits = tax_unit(
15
+ "ma_income_tax_before_refundable_credits", period
16
+ )
17
+ p = parameters(period).gov.states.ma.tax.income.credits
18
+
19
+ # Sum refundable credits except ma_taxpayer_refund_rebate to avoid circular reference
20
+ refundable_credit_list = p.refundable
21
+ other_refundable_credits = 0
22
+ for credit in refundable_credit_list:
23
+ if credit != "ma_taxpayer_refund_rebate":
24
+ other_refundable_credits += tax_unit(credit, period)
25
+
26
+ income_tax_less_credits = max_(
27
+ income_tax_before_credits - other_refundable_credits, 0
28
+ )
29
+ return p.taxpayer_refund_rebate.rate * income_tax_less_credits
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class me_relief_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Maine Relief Rebate"
8
+ defined_for = "me_relief_rebate_eligible"
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://www.maine.gov/governor/mills/relief-checks"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.me.tax.income.credits.relief_rebate
15
+ head_spouse_count = tax_unit("head_spouse_count", period)
16
+ return head_spouse_count * p.amount
@@ -0,0 +1,17 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class me_relief_rebate_eligible(Variable):
5
+ value_type = bool
6
+ entity = TaxUnit
7
+ label = "Maine Relief Rebate eligible"
8
+ defined_for = StateCode.ME
9
+ definition_period = YEAR
10
+ reference = "https://www.maine.gov/governor/mills/relief-checks"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ p = parameters(period).gov.states.me.tax.income.credits.relief_rebate
14
+ filing_status = tax_unit("filing_status", period)
15
+ federal_agi = tax_unit("adjusted_gross_income", period)
16
+ income_threshold = p.income_limit[filing_status]
17
+ return federal_agi < income_threshold
@@ -20,7 +20,11 @@ class mn_child_and_working_families_credits(Variable):
20
20
  # The credits are defined by separate legal code sections
21
21
  # but are calculated together in the tax forms.
22
22
  # Child Tax Credit computation:
23
- qualifying_children = tax_unit("ctc_qualifying_children", period)
23
+ qualifying_children = add(
24
+ tax_unit,
25
+ period,
26
+ ["mn_child_and_working_families_credits_ctc_eligible_child"],
27
+ )
24
28
  p = parameters(period).gov.states.mn.tax.income.credits.cwfc
25
29
  base_ctc_amount = qualifying_children * p.ctc.amount
26
30
  # Working Family Credit computation:
@@ -0,0 +1,24 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class mn_child_and_working_families_credits_ctc_eligible_child(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Minnesota child and working families credits child tax credit eligible child"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ reference = (
11
+ "https://www.revisor.mn.gov/statutes/cite/290.0661#stat.290.0661.4"
12
+ "https://www.revisor.mn.gov/statutes/cite/290.0671"
13
+ "https://www.revenue.state.mn.us/sites/default/files/2024-01/m1cwfc-23_1.pdf"
14
+ )
15
+ defined_for = StateCode.MN
16
+
17
+ def formula(person, period, parameters):
18
+ age = person("age", period)
19
+ meets_eitc_identification_requirements = person(
20
+ "meets_eitc_identification_requirements", period
21
+ )
22
+ p = parameters(period).gov.states.mn.tax.income.credits.cwfc.ctc
23
+ age_eligible = age < p.age_limit
24
+ return age_eligible & meets_eitc_identification_requirements
@@ -4,14 +4,13 @@ from policyengine_us.model_api import *
4
4
  class mt_income_tax_rebate(Variable):
5
5
  value_type = float
6
6
  entity = TaxUnit
7
- label = "Montana 2023 income tax rebate"
7
+ label = "Montana 2021 income tax rebate"
8
8
  unit = USD
9
9
  definition_period = YEAR
10
10
  reference = "https://archive.legmt.gov/bills/mca/title_0150/chapter_0300/part_0210/section_0910/0150-0300-0210-0910.html"
11
11
  defined_for = StateCode.MT
12
12
 
13
13
  # The rebate is based on 2021 income tax liability, but provided in 2023
14
- # we assume that the tax liability does not change between 2021 and 2023
15
14
  def formula(tax_unit, period, parameters):
16
15
  p = parameters(period).gov.states.mt.tax.income.credits.rebate
17
16
  filing_status = tax_unit("filing_status", period)
@@ -0,0 +1,29 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class sc_2022_rebate(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "South Carolina 2022 rebate"
8
+ defined_for = StateCode.SC
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://www.scstatehouse.gov/sess124_2021-2022/bills/1087.htm"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ tax_before_non_refundable_credits = tax_unit(
15
+ "sc_income_tax_before_non_refundable_credits", period
16
+ )
17
+ p = parameters(period).gov.states.sc.tax.income.credits
18
+ other_non_refundable_credits = 0
19
+ for credit in p.non_refundable:
20
+ if credit != "sc_2022_rebate":
21
+ other_non_refundable_credits += tax_unit(credit, period)
22
+ refundable_credits = tax_unit("sc_refundable_credits", period)
23
+ tax_after_credits = max_(
24
+ 0,
25
+ tax_before_non_refundable_credits
26
+ - other_non_refundable_credits
27
+ - refundable_credits,
28
+ )
29
+ return min_(tax_after_credits, p["2022_rebate"].amount)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.423.0
3
+ Version: 1.424.1
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE