From 7eede792b798cf4b5f78b8092919f5356ea9fc9a Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 15 Jan 2025 11:59:39 -0500 Subject: [PATCH 01/13] New York Inflation Rebates 2025 Fixes #5429 Co-authored-by: Pavel Makarchuk --- changelog_entry.yaml | 2 +- .../head_of_household.yaml | 21 ++++++++ .../credits/2025_inflation_rebates/joint.yaml | 21 ++++++++ .../2025_inflation_rebates/separate.yaml | 21 ++++++++ .../2025_inflation_rebates/single.yaml | 21 ++++++++ .../surviving_spouse.yaml | 21 ++++++++ .../credits/ny_2025_inflation_rebates.yaml | 53 +++++++++++++++++++ .../credits/ny_2025_inflation_rebates.py | 33 ++++++++++++ 8 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml create mode 100644 policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c6c436d605f..9d96db3fe27 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - References for New Jersey 2024 state income tax. + - 2025 New York Inflation Rebates. diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml new file mode 100644 index 00000000000..85df7e2840a --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml @@ -0,0 +1,21 @@ +description: New York provides the following 2025 Inflation Rebate amount for head of household filers, based on state adjusted gross income. + +brackets: + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 300 + - threshold: + 2025-01-01: 150_000 + amount: + 2025-01-01: 0 + + +metadata: + type: single_amount + amount_unit: currency-USD + threshold_unit: currency-USD + label: New York 2025 Inflaton Rebate head of household amount + reference: + - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund \ No newline at end of file diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml new file mode 100644 index 00000000000..5f16e219bea --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml @@ -0,0 +1,21 @@ +description: New York provides the following 2025 Inflation Rebate amount for joint filers, based on state adjusted gross income. + +brackets: + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 500 + - threshold: + 2025-01-01: 300_000 + amount: + 2025-01-01: 0 + + +metadata: + type: single_amount + amount_unit: currency-USD + threshold_unit: currency-USD + label: New York 2025 Inflaton Rebate joint amount + reference: + - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml new file mode 100644 index 00000000000..301ebc76f2e --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml @@ -0,0 +1,21 @@ +description: New York provides the following 2025 Inflation Rebate amount for separate filers, based on state adjusted gross income. + +brackets: + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 250 + - threshold: + 2025-01-01: 150_000 + amount: + 2025-01-01: 0 + + +metadata: + type: single_amount + amount_unit: currency-USD + threshold_unit: currency-USD + label: New York 2025 Inflaton Rebate separate amount + reference: + - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund \ No newline at end of file diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml new file mode 100644 index 00000000000..6d6147a46f1 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml @@ -0,0 +1,21 @@ +description: New York provides the following 2025 Inflation Rebate amount for single filers, based on state adjusted gross income. + +brackets: + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 300 + - threshold: + 2025-01-01: 150_000 + amount: + 2025-01-01: 0 + + +metadata: + type: single_amount + amount_unit: currency-USD + threshold_unit: currency-USD + label: New York 2025 Inflaton Rebate single amount + reference: + - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml new file mode 100644 index 00000000000..bdef4d5cb68 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml @@ -0,0 +1,21 @@ +description: New York provides the following 2025 Inflation Rebate amount for surviving spouses, based on state adjusted gross income. + +brackets: + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 500 + - threshold: + 2025-01-01: 300_000 + amount: + 2025-01-01: 0 + + +metadata: + type: single_amount + amount_unit: currency-USD + threshold_unit: currency-USD + label: New York 2025 Inflaton Rebate surviving spouse amount + reference: + - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml new file mode 100644 index 00000000000..a705f9568b7 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml @@ -0,0 +1,53 @@ +- name: Single person, eligible + period: 2025 + input: + state_code: NY + ny_agi: 150_000 + filing_status: SINGLE + output: + ny_2025_inflation_rebates: 300 + +- name: Single person, ineligible + period: 2025 + input: + state_code: NY + ny_agi: 150_001 + filing_status: SINGLE + output: + ny_2025_inflation_rebates: 0 + +- name: Separate person, eligible + period: 2025 + input: + state_code: NY + ny_agi: 150_000 + filing_status: SEPARATE + output: + ny_2025_inflation_rebates: 250 + +- name: Separate person, ineligible + period: 2025 + input: + state_code: NY + ny_agi: 150_001 + filing_status: SEPARATE + output: + ny_2025_inflation_rebates: 0 + +- name: Joint couple, eligible + period: 2025 + input: + state_code: NY + ny_agi: 300_000 + filing_status: JOINT + output: + ny_2025_inflation_rebates: 500 + +- name: Joint couple, ineligible + period: 2025 + input: + state_code: NY + ny_agi: 150_001 + filing_status: JOINT + output: + ny_2025_inflation_rebates: 0 diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py new file mode 100644 index 00000000000..a6518653c03 --- /dev/null +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py @@ -0,0 +1,33 @@ +from policyengine_us.model_api import * + + +class ny_2025_inflation_rebates(Variable): + value_type = float + entity = TaxUnit + label = "New York 2025 inflation rebates" + unit = USD + definition_period = YEAR + reference = "https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund" + defined_for = StateCode.NY + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.ny.tax.income.credits["2025_inflation_rebates"] + agi = tax_unit("ny_agi", period) + filing_status = tax_unit("filing_status", period) + filing_statuses = filing_status.possible_values + return select( + [ + filing_status == filing_statuses.SINGLE, + filing_status == filing_statuses.JOINT, + filing_status == filing_statuses.HEAD_OF_HOUSEHOLD, + filing_status == filing_statuses.SEPARATE, + filing_status == filing_statuses.SURVIVING_SPOUSE, + ], + [ + p.single.calc(agi, right= True), + p.separate.calc(agi, right= True), + p.joint.calc(agi, right= True), + p.head_of_household.calc(agi, right= True), + p.surviving_spouse.calc(agi, right= True), + ], + ) From 27094fdc1aadeae64934419bf916d570ab249961 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 15 Jan 2025 12:01:41 -0500 Subject: [PATCH 02/13] update changelog_entry.yaml --- changelog_entry.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..9d96db3fe27 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - 2025 New York Inflation Rebates. From 5797809d5bb6424aabb4e0e727e82205d7887d5f Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Wed, 15 Jan 2025 18:04:38 +0100 Subject: [PATCH 03/13] format --- .../head_of_household.yaml | 2 +- .../2025_inflation_rebates/separate.yaml | 2 +- .../credits/ny_2025_inflation_rebates.py | 32 ++++++++++--------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml index 85df7e2840a..5913129d7ab 100644 --- a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml @@ -18,4 +18,4 @@ metadata: label: New York 2025 Inflaton Rebate head of household amount reference: - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State - href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund \ No newline at end of file + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml index 301ebc76f2e..7025753e455 100644 --- a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml @@ -18,4 +18,4 @@ metadata: label: New York 2025 Inflaton Rebate separate amount reference: - title: New York State Governor Hochul Proposes Sending 8.6 Million New Yorkers an Inflation Refund Check as First Proposal of 2025 State of the State - href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund \ No newline at end of file + href: https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py index a6518653c03..1491c090864 100644 --- a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py @@ -11,23 +11,25 @@ class ny_2025_inflation_rebates(Variable): defined_for = StateCode.NY def formula(tax_unit, period, parameters): - p = parameters(period).gov.states.ny.tax.income.credits["2025_inflation_rebates"] + p = parameters(period).gov.states.ny.tax.income.credits[ + "2025_inflation_rebates" + ] agi = tax_unit("ny_agi", period) filing_status = tax_unit("filing_status", period) filing_statuses = filing_status.possible_values return select( - [ - filing_status == filing_statuses.SINGLE, - filing_status == filing_statuses.JOINT, - filing_status == filing_statuses.HEAD_OF_HOUSEHOLD, - filing_status == filing_statuses.SEPARATE, - filing_status == filing_statuses.SURVIVING_SPOUSE, - ], - [ - p.single.calc(agi, right= True), - p.separate.calc(agi, right= True), - p.joint.calc(agi, right= True), - p.head_of_household.calc(agi, right= True), - p.surviving_spouse.calc(agi, right= True), - ], + [ + filing_status == filing_statuses.SINGLE, + filing_status == filing_statuses.JOINT, + filing_status == filing_statuses.HEAD_OF_HOUSEHOLD, + filing_status == filing_statuses.SEPARATE, + filing_status == filing_statuses.SURVIVING_SPOUSE, + ], + [ + p.single.calc(agi, right=True), + p.separate.calc(agi, right=True), + p.joint.calc(agi, right=True), + p.head_of_household.calc(agi, right=True), + p.surviving_spouse.calc(agi, right=True), + ], ) From 422866c465bad2fbc1e570492c44ef7b0f748f5e Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Wed, 15 Jan 2025 18:07:52 +0100 Subject: [PATCH 04/13] test fix --- .../states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml | 2 +- .../states/ny/tax/income/credits/ny_2025_inflation_rebates.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml index a705f9568b7..3d842d401e0 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml @@ -47,7 +47,7 @@ period: 2025 input: state_code: NY - ny_agi: 150_001 + ny_agi: 300_001 filing_status: JOINT output: ny_2025_inflation_rebates: 0 diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py index 1491c090864..478d41bd1c6 100644 --- a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py @@ -27,9 +27,9 @@ def formula(tax_unit, period, parameters): ], [ p.single.calc(agi, right=True), - p.separate.calc(agi, right=True), p.joint.calc(agi, right=True), p.head_of_household.calc(agi, right=True), + p.separate.calc(agi, right=True), p.surviving_spouse.calc(agi, right=True), ], ) From ed1bc9913596522f451890f5e1257790d0d1822d Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 15 Jan 2025 12:22:28 -0500 Subject: [PATCH 05/13] adds in_effect file --- .../income/credits/2025_inflation_rebates/in_effect.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml new file mode 100644 index 00000000000..2d245e84612 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml @@ -0,0 +1,9 @@ +description: New York's inflation rebates are in effect if this is true. + +values: + 0000-01-01: false + +metadata: + unit: bool + period: year + label: New York inflation rebates in effect \ No newline at end of file From d05e61869aadd376daf2f9d4b5ad362625661b09 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 15 Jan 2025 12:23:11 -0500 Subject: [PATCH 06/13] Update in_effect.yaml --- .../ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml index 2d245e84612..1ea3c1684b8 100644 --- a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml @@ -6,4 +6,4 @@ values: metadata: unit: bool period: year - label: New York inflation rebates in effect \ No newline at end of file + label: New York inflation rebates in effect From 756a68e790c5d2762396c33333e60a23910c3fb8 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 15 Jan 2025 14:47:38 -0500 Subject: [PATCH 07/13] New York Inflation Rebates 2025 Fixes #5429 --- .../states/ny}/2025_inflation_rebates/head_of_household.yaml | 0 .../states/ny/2025_inflation_rebates/in_effect}/in_effect.yaml | 0 .../states/ny}/2025_inflation_rebates/joint.yaml | 0 .../states/ny}/2025_inflation_rebates/separate.yaml | 0 .../states/ny}/2025_inflation_rebates/single.yaml | 0 .../states/ny}/2025_inflation_rebates/surviving_spouse.yaml | 0 .../states/ny/2025_inflation_rebates/ny_2025_inflation_rebates} | 0 .../credits => contrib/states/ny}/ny_2025_inflation_rebates.yaml | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits => contrib/states/ny}/2025_inflation_rebates/head_of_household.yaml (100%) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits/2025_inflation_rebates => contrib/states/ny/2025_inflation_rebates/in_effect}/in_effect.yaml (100%) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits => contrib/states/ny}/2025_inflation_rebates/joint.yaml (100%) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits => contrib/states/ny}/2025_inflation_rebates/separate.yaml (100%) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits => contrib/states/ny}/2025_inflation_rebates/single.yaml (100%) rename policyengine_us/parameters/gov/{states/ny/tax/income/credits => contrib/states/ny}/2025_inflation_rebates/surviving_spouse.yaml (100%) rename policyengine_us/{variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py => reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates} (100%) rename policyengine_us/tests/policy/{baseline/gov/states/ny/tax/income/credits => contrib/states/ny}/ny_2025_inflation_rebates.yaml (100%) diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/head_of_household.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/head_of_household.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/head_of_household.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/in_effect/in_effect.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/in_effect.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/in_effect/in_effect.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/joint.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/joint.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/joint.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/separate.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/separate.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/separate.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/single.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/single.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/single.yaml diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml b/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/surviving_spouse.yaml similarity index 100% rename from policyengine_us/parameters/gov/states/ny/tax/income/credits/2025_inflation_rebates/surviving_spouse.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/surviving_spouse.yaml diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py b/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates similarity index 100% rename from policyengine_us/variables/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.py rename to policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml b/policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml similarity index 100% rename from policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_2025_inflation_rebates.yaml rename to policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml From 62a562ed0aff2d91c355fc97758c29c294d4a230 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Thu, 16 Jan 2025 12:01:45 -0500 Subject: [PATCH 08/13] Update ny_2025_inflation_rebates --- .../states/ny/2025_inflation_rebates/ny_2025_inflation_rebates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates b/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates index 478d41bd1c6..6d30fe8a667 100644 --- a/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates +++ b/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates @@ -11,7 +11,7 @@ class ny_2025_inflation_rebates(Variable): defined_for = StateCode.NY def formula(tax_unit, period, parameters): - p = parameters(period).gov.states.ny.tax.income.credits[ + p = parameters(period).gov.contrib.states.ny[ "2025_inflation_rebates" ] agi = tax_unit("ny_agi", period) From 590676d3b7db248d05d28a98f5a341ca94f5307e Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Thu, 16 Jan 2025 14:02:05 -0500 Subject: [PATCH 09/13] New York Inflation Rebates 2025 Fixes #5429 --- .../{ny_2025_inflation_rebates => ny_2025_inflation_rebates.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename policyengine_us/reforms/states/ny/2025_inflation_rebates/{ny_2025_inflation_rebates => ny_2025_inflation_rebates.py} (100%) diff --git a/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates b/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py similarity index 100% rename from policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates rename to policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py From 089fc8adc700dfaff32cc7492bbf77e01cf0be2b Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Fri, 17 Jan 2025 15:36:45 +0100 Subject: [PATCH 10/13] reform structure and folder names --- .../head_of_household.yaml | 0 .../in_effect.yaml | 0 .../joint.yaml | 0 .../separate.yaml | 0 .../single.yaml | 0 .../surviving_spouse.yaml | 0 policyengine_us/reforms/reforms.py | 8 +++ .../ny_2025_inflation_rebates.py | 35 ---------- .../states/ny/inflation_rebates/__init__.py | 3 + .../ny_2025_inflation_rebates.py | 69 +++++++++++++++++++ .../states/ny/ny_2025_inflation_rebates.yaml | 12 ++++ 11 files changed, 92 insertions(+), 35 deletions(-) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates => inflation_rebates}/head_of_household.yaml (100%) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates/in_effect => inflation_rebates}/in_effect.yaml (100%) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates => inflation_rebates}/joint.yaml (100%) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates => inflation_rebates}/separate.yaml (100%) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates => inflation_rebates}/single.yaml (100%) rename policyengine_us/parameters/gov/contrib/states/ny/{2025_inflation_rebates => inflation_rebates}/surviving_spouse.yaml (100%) delete mode 100644 policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py create mode 100644 policyengine_us/reforms/states/ny/inflation_rebates/__init__.py create mode 100644 policyengine_us/reforms/states/ny/inflation_rebates/ny_2025_inflation_rebates.py diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/head_of_household.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/head_of_household.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/head_of_household.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/head_of_household.yaml diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/in_effect/in_effect.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/in_effect.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/in_effect/in_effect.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/in_effect.yaml diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/joint.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/joint.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/joint.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/joint.yaml diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/separate.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/separate.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/separate.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/separate.yaml diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/single.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/single.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/single.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/single.yaml diff --git a/policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/surviving_spouse.yaml b/policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/surviving_spouse.yaml similarity index 100% rename from policyengine_us/parameters/gov/contrib/states/ny/2025_inflation_rebates/surviving_spouse.yaml rename to policyengine_us/parameters/gov/contrib/states/ny/inflation_rebates/surviving_spouse.yaml diff --git a/policyengine_us/reforms/reforms.py b/policyengine_us/reforms/reforms.py index 02074a995ae..647fd8bac2f 100644 --- a/policyengine_us/reforms/reforms.py +++ b/policyengine_us/reforms/reforms.py @@ -74,6 +74,10 @@ ) from .states.dc.property_tax import create_dc_property_tax_credit_reform +from .states.ny.inflation_rebates import ( + create_ny_2025_inflation_rebates_reform, +) + from policyengine_core.reforms import Reform import warnings @@ -166,6 +170,9 @@ def create_structural_reforms_from_parameters(parameters, period): dc_property_tax_credit = create_dc_property_tax_credit_reform( parameters, period ) + ny_2025_inflation_rebates = create_ny_2025_inflation_rebates_reform( + parameters, period + ) reforms = [ afa_reform, @@ -201,6 +208,7 @@ def create_structural_reforms_from_parameters(parameters, period): abolish_snap_deductions, abolish_snap_net_income_test, dc_property_tax_credit, + ny_2025_inflation_rebates, ] reforms = tuple(filter(lambda x: x is not None, reforms)) diff --git a/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py b/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py deleted file mode 100644 index 6d30fe8a667..00000000000 --- a/policyengine_us/reforms/states/ny/2025_inflation_rebates/ny_2025_inflation_rebates.py +++ /dev/null @@ -1,35 +0,0 @@ -from policyengine_us.model_api import * - - -class ny_2025_inflation_rebates(Variable): - value_type = float - entity = TaxUnit - label = "New York 2025 inflation rebates" - unit = USD - definition_period = YEAR - reference = "https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund" - defined_for = StateCode.NY - - def formula(tax_unit, period, parameters): - p = parameters(period).gov.contrib.states.ny[ - "2025_inflation_rebates" - ] - agi = tax_unit("ny_agi", period) - filing_status = tax_unit("filing_status", period) - filing_statuses = filing_status.possible_values - return select( - [ - filing_status == filing_statuses.SINGLE, - filing_status == filing_statuses.JOINT, - filing_status == filing_statuses.HEAD_OF_HOUSEHOLD, - filing_status == filing_statuses.SEPARATE, - filing_status == filing_statuses.SURVIVING_SPOUSE, - ], - [ - p.single.calc(agi, right=True), - p.joint.calc(agi, right=True), - p.head_of_household.calc(agi, right=True), - p.separate.calc(agi, right=True), - p.surviving_spouse.calc(agi, right=True), - ], - ) diff --git a/policyengine_us/reforms/states/ny/inflation_rebates/__init__.py b/policyengine_us/reforms/states/ny/inflation_rebates/__init__.py new file mode 100644 index 00000000000..2c9990de238 --- /dev/null +++ b/policyengine_us/reforms/states/ny/inflation_rebates/__init__.py @@ -0,0 +1,3 @@ +from .ny_2025_inflation_rebates import ( + create_ny_2025_inflation_rebates_reform, +) diff --git a/policyengine_us/reforms/states/ny/inflation_rebates/ny_2025_inflation_rebates.py b/policyengine_us/reforms/states/ny/inflation_rebates/ny_2025_inflation_rebates.py new file mode 100644 index 00000000000..6bd97f9b28e --- /dev/null +++ b/policyengine_us/reforms/states/ny/inflation_rebates/ny_2025_inflation_rebates.py @@ -0,0 +1,69 @@ +from policyengine_us.model_api import * +from policyengine_core.periods import period as period_ + + +def create_ny_2025_inflation_rebates() -> Reform: + class ny_2025_inflation_rebates(Variable): + value_type = float + entity = TaxUnit + label = "New York 2025 inflation rebates" + unit = USD + definition_period = YEAR + reference = "https://www.governor.ny.gov/news/money-your-pockets-governor-hochul-proposes-sending-86-million-new-yorkers-inflation-refund" + defined_for = StateCode.NY + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.contrib.states.ny.inflation_rebates + agi = tax_unit("ny_agi", period) + filing_status = tax_unit("filing_status", period) + filing_statuses = filing_status.possible_values + return select( + [ + filing_status == filing_statuses.SINGLE, + filing_status == filing_statuses.JOINT, + filing_status == filing_statuses.HEAD_OF_HOUSEHOLD, + filing_status == filing_statuses.SEPARATE, + filing_status == filing_statuses.SURVIVING_SPOUSE, + ], + [ + p.single.calc(agi, right=True), + p.joint.calc(agi, right=True), + p.head_of_household.calc(agi, right=True), + p.separate.calc(agi, right=True), + p.surviving_spouse.calc(agi, right=True), + ], + ) + + class reform(Reform): + def apply(self): + self.update_variable(ny_2025_inflation_rebates) + + return reform + + +def create_ny_2025_inflation_rebates_reform( + parameters, period, bypass: bool = False +): + if bypass: + return create_ny_2025_inflation_rebates() + + p = parameters.gov.contrib.states.ny.inflation_rebates + + reform_active = False + current_period = period_(period) + + for i in range(5): + if p(current_period).in_effect: + reform_active = True + break + current_period = current_period.offset(1, "year") + + if reform_active: + return create_ny_2025_inflation_rebates() + else: + return None + + +ny_2025_inflation_rebates = create_ny_2025_inflation_rebates_reform( + None, None, bypass=True +) diff --git a/policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml b/policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml index 3d842d401e0..c14ac06ebb3 100644 --- a/policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml +++ b/policyengine_us/tests/policy/contrib/states/ny/ny_2025_inflation_rebates.yaml @@ -1,6 +1,8 @@ - name: Single person, eligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 150_000 filing_status: SINGLE @@ -9,7 +11,9 @@ - name: Single person, ineligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 150_001 filing_status: SINGLE @@ -18,7 +22,9 @@ - name: Separate person, eligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 150_000 filing_status: SEPARATE @@ -27,7 +33,9 @@ - name: Separate person, ineligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 150_001 filing_status: SEPARATE @@ -36,7 +44,9 @@ - name: Joint couple, eligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 300_000 filing_status: JOINT @@ -45,7 +55,9 @@ - name: Joint couple, ineligible period: 2025 + reforms: policyengine_us.reforms.states.ny.inflation_rebates.ny_2025_inflation_rebates.ny_2025_inflation_rebates input: + gov.contrib.states.ny.inflation_rebates.in_effect: true state_code: NY ny_agi: 300_001 filing_status: JOINT From d1a9209ffe82f38e8892ace5653483141941a8bf Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 20 Jan 2025 16:30:30 -0500 Subject: [PATCH 11/13] format reforms.py --- policyengine_us/reforms/reforms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policyengine_us/reforms/reforms.py b/policyengine_us/reforms/reforms.py index 708b3028449..99cfe25c758 100644 --- a/policyengine_us/reforms/reforms.py +++ b/policyengine_us/reforms/reforms.py @@ -176,7 +176,7 @@ def create_structural_reforms_from_parameters(parameters, period): ) ny_2025_inflation_rebates = create_ny_2025_inflation_rebates_reform( parameters, period - ) + ) limit_salt_deduction_to_property_taxes = ( create_limit_salt_deduction_to_property_taxes_reform( parameters, period From eb20a8c60ddaaa7909c90051ccfd9d7c5ccebdfb Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 20 Jan 2025 16:33:51 -0500 Subject: [PATCH 12/13] format reforms.py --- policyengine_us/reforms/reforms.py | 1 - 1 file changed, 1 deletion(-) diff --git a/policyengine_us/reforms/reforms.py b/policyengine_us/reforms/reforms.py index 99cfe25c758..6cd8da3be07 100644 --- a/policyengine_us/reforms/reforms.py +++ b/policyengine_us/reforms/reforms.py @@ -78,7 +78,6 @@ create_ny_2025_inflation_rebates_reform, ) - from .deductions.salt import ( create_limit_salt_deduction_to_property_taxes_reform, ) From 7b1d4b13df8c096edb73a8ea028ed79af5db2720 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 20 Jan 2025 16:45:13 -0500 Subject: [PATCH 13/13] format reforms.py --- policyengine_us/reforms/reforms.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/policyengine_us/reforms/reforms.py b/policyengine_us/reforms/reforms.py index 6cd8da3be07..223bee62f24 100644 --- a/policyengine_us/reforms/reforms.py +++ b/policyengine_us/reforms/reforms.py @@ -175,7 +175,7 @@ def create_structural_reforms_from_parameters(parameters, period): ) ny_2025_inflation_rebates = create_ny_2025_inflation_rebates_reform( parameters, period - ) + ) limit_salt_deduction_to_property_taxes = ( create_limit_salt_deduction_to_property_taxes_reform( parameters, period @@ -218,7 +218,6 @@ def create_structural_reforms_from_parameters(parameters, period): dc_property_tax_credit, ny_2025_inflation_rebates, limit_salt_deduction_to_property_taxes, - ] reforms = tuple(filter(lambda x: x is not None, reforms))