policyengine-us 1.370.2__py3-none-any.whl → 1.372.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.

Potentially problematic release.


This version of policyengine-us might be problematic. Click here for more details.

Files changed (22) hide show
  1. policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml +2 -4
  2. policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml +1 -3
  3. policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml +2 -17
  4. policyengine_us/parameters/gov/hhs/uprating.yaml +4 -3
  5. policyengine_us/parameters/gov/irs/uprating.py +9 -23
  6. policyengine_us/parameters/gov/ssa/uprating.yaml +7 -4
  7. policyengine_us/parameters/gov/usda/snap/uprating.yaml +1 -0
  8. policyengine_us/parameters/uprating_extensions.py +144 -0
  9. policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration.yaml +1 -1
  10. policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_eligible.yaml +3 -3
  11. policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_amount_if_eligible.yaml +146 -0
  12. policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_claim_is_joint.yaml +116 -5
  13. policyengine_us/tests/policy/baseline/gov/ssa/ssi/uncapped_ssi.yaml +4 -18
  14. policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py +108 -0
  15. policyengine_us/variables/gov/ssa/ssi/is_ssi_eligible.py +9 -2
  16. policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py +13 -8
  17. policyengine_us/variables/gov/ssa/ssi/ssi_claim_is_joint.py +5 -12
  18. {policyengine_us-1.370.2.dist-info → policyengine_us-1.372.0.dist-info}/METADATA +1 -1
  19. {policyengine_us-1.370.2.dist-info → policyengine_us-1.372.0.dist-info}/RECORD +22 -19
  20. {policyengine_us-1.370.2.dist-info → policyengine_us-1.372.0.dist-info}/WHEEL +0 -0
  21. {policyengine_us-1.370.2.dist-info → policyengine_us-1.372.0.dist-info}/entry_points.txt +0 -0
  22. {policyengine_us-1.370.2.dist-info → policyengine_us-1.372.0.dist-info}/licenses/LICENSE +0 -0
@@ -304,14 +304,12 @@ values:
304
304
  2032-02-01: 203.1 # 2033 value.
305
305
  2033-02-01: 207.1 # 2034 value.
306
306
  2034-02-01: 211.2 # 2035 value.
307
- 2035-02-01: 215.4 # 2036 value (indexed by applying 2035 indexing rate (211.2/207.1) and multiplying it by 211.2).
307
+ # Values for 2035-2100 are set programmatically in uprating_extensions.py
308
308
  metadata:
309
+ economy: false
309
310
  unit: currency-USD
310
311
  label: Chained CPI-U
311
- economy: false
312
312
  reference:
313
- - title: "su.data.0.Current (SUUR0000SA0)"
314
- href: https://download.bls.gov/pub/time.series/su/su.data.0.Current
315
313
  - title: CBO | Tax Parameters and Effective Marginal Tax Rates | June 2024
316
314
  # Source: https://www.cbo.gov/data/budget-economic-data#10
317
315
  # Row: 159
@@ -1359,14 +1359,12 @@ values:
1359
1359
  2032-02-01: 372.7 # 2033 value.
1360
1360
  2033-02-01: 381.0 # 2034 value.
1361
1361
  2034-02-01: 389.6 # 2035 value.
1362
- 2035-02-01: 398.7 # (indexed by applying 2035 indexing rate (389.6/381.0) and multiplying it by 389.6).
1362
+ # Values for 2035-2100 are set programmatically in uprating_extensions.py
1363
1363
  metadata:
1364
1364
  unit: currency-USD
1365
1365
  label: CPI-U
1366
1366
  economy: false
1367
1367
  reference:
1368
- - title: BLS Data Viewer | Consumer Price Index for All Urban Consumers (CPI-U)
1369
- href: https://beta.bls.gov/dataViewer/view/timeseries/CUUR0000SA0
1370
1368
  - title: CBO | Tax Parameters and Effective Marginal Tax Rates | June 2024
1371
1369
  # Source: https://www.cbo.gov/data/budget-economic-data#10
1372
1370
  # Row: 158
@@ -1386,27 +1386,12 @@ values:
1386
1386
  2033-08-01: 377.038 # 2033Q3: 384.9 * 309.141 / 315.587
1387
1387
  2033-11-01: 379.193 # 2033Q4: 387.1 * 309.141 / 315.587
1388
1388
  2034-02-01: 381.250 # 2034Q1: 389.2 * 309.141 / 315.587
1389
- 2034-05-01: 383.405 # 2034Q2: 391.4 * 309.141 / 315.587
1390
- 2034-08-01: 385.561 # 2034Q3: 393.6 * 309.141 / 315.587
1391
- 2034-11-01: 387.716 # 2034Q4: 395.8 * 309.141 / 315.587
1392
- 2035-02-01: 389.871 # 2035Q1: 398.0 * 309.141 / 315.587
1393
- 2035-05-01: 392.026 # 2035Q2: 400.2 * 309.141 / 315.587
1394
- 2035-08-01: 394.279 # 2035Q3: 402.5 * 309.141 / 315.587
1395
- 2035-11-01: 396.434 # 2035Q4: 404.7 * 309.141 / 315.587
1396
-
1389
+ # Values for 2035-2100 are set programmatically in uprating_extensions.py
1397
1390
  metadata:
1398
1391
  unit: currency-USD
1399
1392
  label: CPI-W
1400
1393
  economy: false
1401
1394
  reference:
1402
- - title: BLS Data Viewer | Consumer Price Index for Urban Wage Earners and Clerical Workers (CPI-W)
1403
- href: https://beta.bls.gov/dataViewer/view/timeseries/CWUR0000SA0
1404
- - title: CBO | Tax Parameters and Effective Marginal Tax Rates | June 2024
1405
- # Source: https://www.cbo.gov/data/budget-economic-data#10
1406
- # Quarterly: Row 51
1407
- href: https://www.cbo.gov/system/files/2024-06/51135-2024-06-Economic-Projections.xlsx
1408
- - title: CBO | Tax Parameters and Effective Marginal Tax Rates | January 2025
1409
- # Source: https://www.cbo.gov/data/budget-economic-data#10
1395
+ - title: CBO | Economic and Budget Projections | January 2025
1410
1396
  # Quarterly: Row 51
1411
1397
  href: https://www.cbo.gov/system/files/2025-01/51135-2025-01-Economic-Projections.xlsx
1412
-
@@ -16,10 +16,11 @@ values:
16
16
  2033-01-01: 383.9
17
17
  2034-01-01: 392.5
18
18
  2035-01-01: 401.3
19
+ # Values for 2036-2100 are set programmatically in uprating_extensions.py
19
20
  metadata:
20
- unit: currency-USD
21
- label: Poverty line uprating
22
21
  economy: false
22
+ unit: currency-USD
23
+ label: HHS uprating
23
24
  reference:
24
25
  - title: 2025 Annual Update of the HHS Poverty Guidelines
25
26
  href: https://www.govinfo.gov/app/details/FR-2025-01-17/2025-01377
@@ -27,4 +28,4 @@ metadata:
27
28
  href: https://www.federalregister.gov/documents/2024/01/17/2024-00796/annual-update-of-the-hhs-poverty-guidelines
28
29
  - title: CBO Budget and Economic Outlook | 2024 to 2034
29
30
  # Jan 2025 Economic Projections | 2. Calendar Year | Row 51
30
- href: https://www.cbo.gov/data/budget-economic-data#4
31
+ href: https://www.cbo.gov/data/budget-economic-data#4
@@ -1,26 +1,12 @@
1
- from policyengine_us.model_api import *
2
- from policyengine_core.periods import instant
1
+ """IRS uprating parameter setup.
3
2
 
3
+ This module imports the unified uprating extension functionality.
4
+ The actual extension logic is in parameters/uprating_extensions.py.
5
+ """
4
6
 
5
- def get_irs_cpi(parameters: ParameterNode, year: int) -> float:
6
- cpi = parameters.gov.bls.cpi.c_cpi_u
7
- end = instant(f"{year}-08-01")
8
- start = end.offset(-MONTHS_IN_YEAR, MONTH)
9
- monthly_cpi_values = []
10
- for month in range(MONTHS_IN_YEAR):
11
- monthly_cpi_values += [cpi(start.offset(month, MONTH))]
12
- return sum(monthly_cpi_values) / MONTHS_IN_YEAR
7
+ from policyengine_us.parameters.uprating_extensions import (
8
+ set_all_uprating_parameters as set_irs_uprating_parameter,
9
+ )
13
10
 
14
-
15
- def set_irs_uprating_parameter(parameters: ParameterNode) -> ParameterNode:
16
-
17
- IRS_UPRATING_START_YEAR = 2010
18
- IRS_UPRATING_END_YEAR = 2035
19
-
20
- uprating_index: Parameter = parameters.gov.irs.uprating
21
- # Note: range is inclusive of start and exclusive of end, so we add 1
22
- for year in range(IRS_UPRATING_START_YEAR, IRS_UPRATING_END_YEAR + 1):
23
- irs_cpi = get_irs_cpi(parameters, year - 1)
24
- uprating_index.update(period=f"year:{year}-01-01:1", value=irs_cpi)
25
- uprating_index.update(start=instant(f"{year}-01-01"), value=irs_cpi)
26
- return parameters
11
+ # For backward compatibility, we keep the same function name
12
+ # but it now calls the unified function that handles all uprating parameters
@@ -4,8 +4,8 @@ values:
4
4
  2022-01-01: 268.421 # 2021Q3: (267.789 + 268.387 + 269.086) / 3
5
5
  2023-01-01: 291.901 # 2022Q3: (292.219 + 291.629 + 291.854) / 3
6
6
  2024-01-01: 301.236 # 2023Q3: (299.899 + 301.551 + 302.257) / 3
7
+ 2025-01-01: 308.767 # 2024Q3: 2.5% COLA announced by SSA
7
8
  # Forecasts from marrying CPI-W actuals with CBO's CPI-U forecast.
8
- 2025-01-01: 310.866 # 2024Q3: 315.6 * 306.199 / 310.989
9
9
  2026-01-01: 318.155 # 2025Q3: 323.0 * 306.199 / 310.989
10
10
  2027-01-01: 326.149 # 2026Q3: 330.1 * 306.199 / 310.989
11
11
  2028-01-01: 332.241 # 2027Q3: 337.3 * 306.199 / 310.989
@@ -16,10 +16,13 @@ values:
16
16
  2033-01-01: 370.656 # 2032Q3: 376.3 * 306.199 / 310.989
17
17
  2034-01-01: 379.028 # 2033Q3: 384.8 * 306.199 / 310.989
18
18
  2035-01-01: 387.598 # 2034Q3: 393.5 * 306.199 / 310.989
19
+ # Values for 2036-2100 are set programmatically in uprating_extensions.py
19
20
  metadata:
21
+ economy: false
20
22
  unit: currency-USD
21
23
  label: SSA uprating
22
- economy: false
23
24
  reference:
24
- - title: Social Security Latest Cost-of-Living Adjustments
25
- href: https://www.ssa.gov/oact/cola/latestCOLA.html
25
+ - title: Historical values
26
+ href: https://www.ssa.gov/oact/cola/colaseries.html
27
+ - title: CBO Economic Projections, February 2024.
28
+ href: https://www.cbo.gov/publication/59710
@@ -17,6 +17,7 @@ values:
17
17
  2032-10-01: 374.3 # 2032Q2
18
18
  2033-10-01: 382.7 # 2033Q2
19
19
  2034-10-01: 391.3 # 2034Q2
20
+ # Values for 2035-2100 are set programmatically in uprating.py
20
21
  metadata:
21
22
  unit: currency-USD
22
23
  label: SNAP uprating
@@ -0,0 +1,144 @@
1
+ """Unified script to extend all uprating factors through 2100."""
2
+
3
+ from policyengine_us.model_api import *
4
+ from policyengine_core.periods import instant
5
+
6
+
7
+ def get_irs_cpi(parameters: ParameterNode, year: int) -> float:
8
+ """Calculate IRS CPI based on Chained CPI-U average from Sep to Aug."""
9
+ cpi = parameters.gov.bls.cpi.c_cpi_u
10
+ end = instant(f"{year}-08-01")
11
+ start = end.offset(-MONTHS_IN_YEAR, MONTH)
12
+ monthly_cpi_values = []
13
+ for month in range(MONTHS_IN_YEAR):
14
+ monthly_cpi_values += [cpi(start.offset(month, MONTH))]
15
+ return sum(monthly_cpi_values) / MONTHS_IN_YEAR
16
+
17
+
18
+ def extend_parameter_values(
19
+ parameter: Parameter,
20
+ last_projected_year: int,
21
+ end_year: int,
22
+ period_month: int = 1,
23
+ period_day: int = 1,
24
+ ) -> None:
25
+ """
26
+ Extend a parameter's values from last_projected_year to end_year using
27
+ the growth rate from the last two years of projections.
28
+
29
+ Args:
30
+ parameter: The parameter to extend
31
+ last_projected_year: The last year with actual/projected values
32
+ end_year: The year to extend values through
33
+ period_month: The month for the period (default 1 for January)
34
+ period_day: The day for the period (default 1)
35
+ """
36
+ # Calculate the growth rate from the last two years of projections
37
+ date_format = f"-{period_month:02d}-{period_day:02d}"
38
+ second_to_last_value = parameter(f"{last_projected_year - 1}{date_format}")
39
+ last_value = parameter(f"{last_projected_year}{date_format}")
40
+ growth_rate = last_value / second_to_last_value
41
+
42
+ # Apply growth rate for years beyond projections
43
+ for year in range(last_projected_year + 1, end_year + 1):
44
+ previous_value = parameter(f"{year - 1}{date_format}")
45
+ new_value = previous_value * growth_rate
46
+ parameter.update(period=f"year:{year}{date_format}:1", value=new_value)
47
+
48
+ # Set the final value for periods after the last year
49
+ final_value = parameter(f"{end_year}{date_format}")
50
+ parameter.update(
51
+ start=instant(f"{end_year}{date_format}"), value=final_value
52
+ )
53
+
54
+
55
+ def set_all_uprating_parameters(parameters: ParameterNode) -> ParameterNode:
56
+ """
57
+ Extend all uprating parameters through 2100.
58
+
59
+ This function programmatically extends various uprating factors used
60
+ throughout the US tax and benefit system, including:
61
+ - IRS uprating (based on Chained CPI-U)
62
+ - SNAP uprating (October values)
63
+ - SSA uprating (January values)
64
+ - HHS poverty guideline uprating (January values)
65
+ """
66
+ END_YEAR = 2100
67
+
68
+ # IRS uprating - special case that computes from CPI
69
+ IRS_UPRATING_START_YEAR = 2010
70
+ IRS_LAST_PROJECTED_YEAR = 2035
71
+
72
+ uprating_index = parameters.gov.irs.uprating
73
+
74
+ # Calculate the growth rate from the last two years of CPI projections
75
+ cpi_second_to_last = get_irs_cpi(parameters, IRS_LAST_PROJECTED_YEAR - 2)
76
+ cpi_last = get_irs_cpi(parameters, IRS_LAST_PROJECTED_YEAR - 1)
77
+ growth_rate = cpi_last / cpi_second_to_last
78
+
79
+ # Apply IRS uprating
80
+ for year in range(IRS_UPRATING_START_YEAR, END_YEAR + 1):
81
+ if year <= IRS_LAST_PROJECTED_YEAR:
82
+ # Use actual CPI values through the last projected year
83
+ irs_cpi = get_irs_cpi(parameters, year - 1)
84
+ else:
85
+ # For all years after LAST_PROJECTED_YEAR, apply the constant growth rate
86
+ irs_cpi = uprating_index(f"{year - 1}-01-01") * growth_rate
87
+ uprating_index.update(period=f"year:{year}-01-01:1", value=irs_cpi)
88
+ uprating_index.update(start=instant(f"{END_YEAR}-01-01"), value=irs_cpi)
89
+
90
+ # SNAP uprating (October values, last projection year 2034)
91
+ extend_parameter_values(
92
+ parameters.gov.usda.snap.uprating,
93
+ last_projected_year=2034,
94
+ end_year=END_YEAR,
95
+ period_month=10,
96
+ period_day=1,
97
+ )
98
+
99
+ # SSA uprating (January values, last projection year 2035)
100
+ extend_parameter_values(
101
+ parameters.gov.ssa.uprating,
102
+ last_projected_year=2035,
103
+ end_year=END_YEAR,
104
+ period_month=1,
105
+ period_day=1,
106
+ )
107
+
108
+ # HHS poverty guideline uprating (January values, last projection year 2035)
109
+ extend_parameter_values(
110
+ parameters.gov.hhs.uprating,
111
+ last_projected_year=2035,
112
+ end_year=END_YEAR,
113
+ period_month=1,
114
+ period_day=1,
115
+ )
116
+
117
+ # CPI-U (February values, last projection year 2034)
118
+ extend_parameter_values(
119
+ parameters.gov.bls.cpi.cpi_u,
120
+ last_projected_year=2034,
121
+ end_year=END_YEAR,
122
+ period_month=2,
123
+ period_day=1,
124
+ )
125
+
126
+ # Chained CPI-U (February values, last projection year 2034)
127
+ extend_parameter_values(
128
+ parameters.gov.bls.cpi.c_cpi_u,
129
+ last_projected_year=2034,
130
+ end_year=END_YEAR,
131
+ period_month=2,
132
+ period_day=1,
133
+ )
134
+
135
+ # CPI-W (February values, last projection year 2034)
136
+ extend_parameter_values(
137
+ parameters.gov.bls.cpi.cpi_w,
138
+ last_projected_year=2034,
139
+ end_year=END_YEAR,
140
+ period_month=2,
141
+ period_day=1,
142
+ )
143
+
144
+ return parameters
@@ -55,4 +55,4 @@
55
55
  is_ssi_eligible_individual: [true, true, false, true, false]
56
56
 
57
57
  # Joint claim status
58
- ssi_claim_is_joint: [false, true, false, true, false]
58
+ ssi_claim_is_joint: [false, true, true, false, false]
@@ -2,7 +2,7 @@
2
2
  period: 2022
3
3
  input:
4
4
  meets_ssi_resource_test: true
5
- is_ssi_eligible_individual: true
5
+ is_ssi_aged_blind_disabled: true
6
6
  output:
7
7
  is_ssi_eligible: true
8
8
 
@@ -10,7 +10,7 @@
10
10
  period: 2022
11
11
  input:
12
12
  meets_ssi_resource_test: false
13
- is_ssi_eligible_individual: true
13
+ is_ssi_aged_blind_disabled: true
14
14
  output:
15
15
  is_ssi_eligible: false
16
16
 
@@ -18,6 +18,6 @@
18
18
  period: 2022
19
19
  input:
20
20
  meets_ssi_resource_test: true
21
- is_ssi_eligible_individual: false
21
+ is_ssi_aged_blind_disabled: false
22
22
  output:
23
23
  is_ssi_eligible: false
@@ -0,0 +1,146 @@
1
+ - name: Case A, single disabled parent with non eligible dependent child.
2
+ period: 2025-01
3
+ input:
4
+ people:
5
+ person1:
6
+ age: 30
7
+ is_disabled: true
8
+ person2:
9
+ age: 4
10
+ is_tax_unit_dependent: true
11
+ spm_units:
12
+ spm_unit:
13
+ members: [person1, person2]
14
+ households:
15
+ household:
16
+ members: [person1, person2]
17
+ output:
18
+ ssi_amount_if_eligible: [967, 0]
19
+
20
+ - name: Case A1, single disabled parent with a disabled child.
21
+ period: 2025-01
22
+ input:
23
+ people:
24
+ person1:
25
+ age: 30
26
+ is_disabled: true
27
+ is_tax_unit_head: true
28
+ person2:
29
+ age: 4
30
+ is_tax_unit_dependent: true
31
+ is_disabled: true
32
+ spm_units:
33
+ spm_unit:
34
+ members: [person1, person2]
35
+ households:
36
+ household:
37
+ members: [person1, person2]
38
+ output:
39
+ ssi_amount_if_eligible: [967, 967]
40
+
41
+ - name: Case A2, single healthy parent with a disabled child.
42
+ period: 2025-01
43
+ input:
44
+ people:
45
+ person1:
46
+ age: 30
47
+ is_tax_unit_head: true
48
+ person2:
49
+ age: 4
50
+ is_tax_unit_dependent: true
51
+ is_disabled: true
52
+ spm_units:
53
+ spm_unit:
54
+ members: [person1, person2]
55
+ households:
56
+ household:
57
+ members: [person1, person2]
58
+ output:
59
+ ssi_amount_if_eligible: [0, 967]
60
+
61
+ - name: Case B, joint filers, one of them is disabled.
62
+ period: 2025-01
63
+ input:
64
+ people:
65
+ person1:
66
+ age: 30
67
+ is_disabled: true
68
+ person2:
69
+ age: 22
70
+ spm_units:
71
+ spm_unit:
72
+ members: [person1, person2]
73
+ households:
74
+ household:
75
+ members: [person1, person2]
76
+ output:
77
+ ssi_amount_if_eligible: [967, 0]
78
+
79
+ - name: Case B1, joint filers, both of them are disabled.
80
+ period: 2025-01
81
+ input:
82
+ people:
83
+ person1:
84
+ age: 30
85
+ is_disabled: true
86
+ is_tax_unit_head: true
87
+ person2:
88
+ age: 22
89
+ is_disabled: true
90
+ is_tax_unit_spouse: true
91
+ spm_units:
92
+ spm_unit:
93
+ members: [person1, person2]
94
+ households:
95
+ household:
96
+ members: [person1, person2]
97
+ output:
98
+ ssi_amount_if_eligible: [725, 725]
99
+
100
+ - name: Case C, two adults, one eligible and the other ineligible, and a eligible child.
101
+ period: 2025-01
102
+ input:
103
+ people:
104
+ person1:
105
+ age: 30
106
+ is_disabled: true
107
+ is_tax_unit_head: true
108
+ person2:
109
+ age: 22
110
+ person3:
111
+ age: 5
112
+ is_disabled: true
113
+ is_tax_unit_dependent: true
114
+ spm_units:
115
+ spm_unit:
116
+ members: [person1, person2, person3]
117
+ households:
118
+ household:
119
+ members: [person1, person2, person3]
120
+ output:
121
+ ssi_amount_if_eligible: [967, 0, 967]
122
+
123
+ - name: Case C1, joint filers, both head and spouse eligible, and a eligible child.
124
+ period: 2025-01
125
+ input:
126
+ people:
127
+ person1:
128
+ age: 30
129
+ is_disabled: true
130
+ is_tax_unit_head: true
131
+ person2:
132
+ age: 22
133
+ is_disabled: true
134
+ is_tax_unit_spouse: true
135
+ person3:
136
+ age: 5
137
+ is_disabled: true
138
+ is_tax_unit_dependent: true
139
+ spm_units:
140
+ spm_unit:
141
+ members: [person1, person2, person3]
142
+ households:
143
+ household:
144
+ members: [person1, person2, person3]
145
+ output:
146
+ ssi_amount_if_eligible: [725, 725, 967]
@@ -1,21 +1,21 @@
1
- - name: SSI claim is joint
1
+ - name: Case 1, SSI claim is joint.
2
2
  period: 2023
3
3
  input:
4
4
  people:
5
5
  # Single person in a marital unit
6
6
  person1:
7
- is_ssi_eligible_individual: true
7
+ is_disabled: true
8
8
  is_tax_unit_head: true
9
9
  # Two people in a marital unit, both SSI eligible
10
10
  person2:
11
- is_ssi_eligible_individual: true
11
+ is_disabled: true
12
12
  is_tax_unit_head: true
13
13
  person3:
14
- is_ssi_eligible_individual: true
14
+ is_disabled: true
15
15
  is_tax_unit_spouse: true
16
16
  # Person not eligible for SSI
17
17
  person4:
18
- is_ssi_eligible_individual: false
18
+ is_disabled: false
19
19
  is_tax_unit_head: true
20
20
  tax_units:
21
21
  tax_unit1:
@@ -33,3 +33,114 @@
33
33
  members: [person4]
34
34
  output:
35
35
  ssi_claim_is_joint: [false, true, true, false]
36
+
37
+ - name: Case 2, SSI claim is not joint.
38
+ period: 2023
39
+ input:
40
+ people:
41
+ # Single person in a marital unit
42
+ person1:
43
+ is_disabled: true
44
+ is_tax_unit_head: true
45
+ # Two people in a marital unit, only one SSI eligible
46
+ person2:
47
+ is_disabled: true
48
+ is_tax_unit_head: true
49
+ person3:
50
+ is_disabled: false
51
+ is_tax_unit_spouse: true
52
+ # Person not eligible for SSI
53
+ person4:
54
+ is_disabled: false
55
+ is_tax_unit_head: true
56
+ tax_units:
57
+ tax_unit1:
58
+ members: [person1]
59
+ tax_unit2:
60
+ members: [person2, person3]
61
+ tax_unit3:
62
+ members: [person4]
63
+ marital_units:
64
+ marital_unit1:
65
+ members: [person1]
66
+ marital_unit2:
67
+ members: [person2, person3]
68
+ marital_unit3:
69
+ members: [person4]
70
+ output:
71
+ ssi_claim_is_joint: [false, false, false, false]
72
+
73
+ - name: Case 3, eligible head with an eligible child, not joint.
74
+ period: 2023
75
+ input:
76
+ people:
77
+ person1:
78
+ is_disabled: true
79
+ is_tax_unit_head: true
80
+ person2:
81
+ age: 4
82
+ is_disabled: true
83
+ is_tax_unit_dependent: true
84
+ marital_units:
85
+ marital_unit:
86
+ members: [person1]
87
+ tax_units:
88
+ tax_unit:
89
+ members: [person1, person2]
90
+ output:
91
+ ssi_claim_is_joint: [false, false]
92
+
93
+ - name: Case 4, two adults, one eligible and the other is not, and a eligible child.
94
+ period: 2025-01
95
+ input:
96
+ people:
97
+ person1:
98
+ age: 30
99
+ is_disabled: true
100
+ is_tax_unit_head: true
101
+ person2:
102
+ age: 22
103
+ is_tax_unit_spouse: true
104
+ person3:
105
+ age: 5
106
+ is_disabled: true
107
+ is_tax_unit_dependent: true
108
+ marital_units:
109
+ marital_unit:
110
+ members: [person1, person2]
111
+ spm_units:
112
+ spm_unit:
113
+ members: [person1, person2, person3]
114
+ households:
115
+ household:
116
+ members: [person1, person2, person3]
117
+ output:
118
+ ssi_claim_is_joint: [false, false, false]
119
+
120
+ - name: Case 5, martial unit, both head and spouse eligible, and a eligible child.
121
+ period: 2025-01
122
+ input:
123
+ people:
124
+ person1:
125
+ age: 30
126
+ is_disabled: true
127
+ is_tax_unit_head: true
128
+ person2:
129
+ age: 22
130
+ is_disabled: true
131
+ is_tax_unit_spouse: true
132
+ person3:
133
+ age: 5
134
+ is_disabled: true
135
+ is_tax_unit_dependent: true
136
+ marital_units:
137
+ marital_unit:
138
+ members: [person1, person2]
139
+ spm_units:
140
+ spm_unit:
141
+ members: [person1, person2, person3]
142
+ households:
143
+ household:
144
+ members: [person1, person2, person3]
145
+ output:
146
+ ssi_claim_is_joint: [true, true, false]
@@ -2,8 +2,7 @@
2
2
  period: 2022
3
3
  input:
4
4
  ssi_amount_if_eligible: 100
5
- meets_ssi_resource_test: true
6
- is_ssi_eligible_individual: true
5
+ is_ssi_eligible: true
7
6
  ssi_countable_income: 0
8
7
  output:
9
8
  uncapped_ssi: 100
@@ -12,8 +11,7 @@
12
11
  period: 2022
13
12
  input:
14
13
  ssi_amount_if_eligible: 100
15
- meets_ssi_resource_test: true
16
- is_ssi_eligible_individual: true
14
+ is_ssi_eligible: true
17
15
  ssi_countable_income: 99
18
16
  output:
19
17
  uncapped_ssi: 1
@@ -22,28 +20,16 @@
22
20
  period: 2022
23
21
  input:
24
22
  ssi_amount_if_eligible: 100
25
- meets_ssi_resource_test: true
26
- is_ssi_eligible_individual: true
23
+ is_ssi_eligible: true
27
24
  ssi_countable_income: 101
28
25
  output:
29
26
  uncapped_ssi: -1
30
27
 
31
- - name: Fails resource test
32
- period: 2022
33
- input:
34
- ssi_amount_if_eligible: 100
35
- meets_ssi_resource_test: false
36
- is_ssi_eligible_individual: true
37
- ssi_countable_income: 0
38
- output:
39
- uncapped_ssi: 0
40
-
41
28
  - name: Not eligible
42
29
  period: 2022
43
30
  input:
44
31
  ssi_amount_if_eligible: 100
45
- meets_ssi_resource_test: true
46
- is_ssi_eligible_individual: false
32
+ is_ssi_eligible: false
47
33
  ssi_countable_income: 0
48
34
  output:
49
35
  uncapped_ssi: 0
@@ -0,0 +1,108 @@
1
+ """Test unified uprating extensions through 2100."""
2
+
3
+
4
+ def test_all_uprating_factors_extend_to_2100():
5
+ """Test that all uprating factors extend through 2100 with consistent growth rates."""
6
+ from policyengine_us import Microsimulation
7
+
8
+ sim = Microsimulation()
9
+ parameters = sim.tax_benefit_system.parameters
10
+
11
+ # Define all uprating parameters to test with their specific periods
12
+ uprating_params = [
13
+ ("IRS", parameters.gov.irs.uprating, "-01-01"),
14
+ ("SNAP", parameters.gov.usda.snap.uprating, "-10-01"),
15
+ ("SSA", parameters.gov.ssa.uprating, "-01-01"),
16
+ ("HHS", parameters.gov.hhs.uprating, "-01-01"),
17
+ ("CPI-U", parameters.gov.bls.cpi.cpi_u, "-02-01"),
18
+ ("Chained CPI-U", parameters.gov.bls.cpi.c_cpi_u, "-02-01"),
19
+ ("CPI-W", parameters.gov.bls.cpi.cpi_w, "-02-01"),
20
+ ]
21
+
22
+ for name, param, date_suffix in uprating_params:
23
+ # Test that values exist and are positive for future years
24
+ test_years = [2035, 2050, 2075, 2100]
25
+ values = []
26
+
27
+ for year in test_years:
28
+ value = param(f"{year}{date_suffix}")
29
+ assert (
30
+ value > 0
31
+ ), f"No positive {name} uprating value for year {year}"
32
+ values.append(value)
33
+
34
+ # Test that values are monotonically increasing
35
+ for i in range(1, len(values)):
36
+ assert (
37
+ values[i] > values[i - 1]
38
+ ), f"{name} uprating should increase from {test_years[i-1]} to {test_years[i]}"
39
+
40
+ # Test that growth is consistent in the extended period
41
+ # Use years after the projection period ends
42
+ year1, year2, year3 = 2040, 2041, 2042
43
+ val1 = param(f"{year1}{date_suffix}")
44
+ val2 = param(f"{year2}{date_suffix}")
45
+ val3 = param(f"{year3}{date_suffix}")
46
+
47
+ growth_rate_1 = val2 / val1
48
+ growth_rate_2 = val3 / val2
49
+
50
+ # Growth rates should be approximately equal (within 0.1%)
51
+ assert (
52
+ abs(growth_rate_1 - growth_rate_2) < 0.001
53
+ ), f"{name} growth rate should be consistent: {growth_rate_1:.5f} vs {growth_rate_2:.5f}"
54
+
55
+
56
+ def test_uprating_growth_rates_are_reasonable():
57
+ """Test that all uprating growth rates are within reasonable bounds."""
58
+ from policyengine_us import Microsimulation
59
+
60
+ sim = Microsimulation()
61
+ parameters = sim.tax_benefit_system.parameters
62
+
63
+ # Annual growth rates should be between 0.5% and 5% for inflation measures
64
+ min_annual_growth = 1.005
65
+ max_annual_growth = 1.05
66
+
67
+ # Test all uprating parameters
68
+ uprating_params = [
69
+ ("IRS", parameters.gov.irs.uprating, "-01-01"),
70
+ ("SNAP", parameters.gov.usda.snap.uprating, "-10-01"),
71
+ ("SSA", parameters.gov.ssa.uprating, "-01-01"),
72
+ ("HHS", parameters.gov.hhs.uprating, "-01-01"),
73
+ ("CPI-U", parameters.gov.bls.cpi.cpi_u, "-02-01"),
74
+ ("Chained CPI-U", parameters.gov.bls.cpi.c_cpi_u, "-02-01"),
75
+ ("CPI-W", parameters.gov.bls.cpi.cpi_w, "-02-01"),
76
+ ]
77
+
78
+ year1, year2 = 2050, 2051
79
+
80
+ for name, param, date_suffix in uprating_params:
81
+ value_year1 = param(f"{year1}{date_suffix}")
82
+ value_year2 = param(f"{year2}{date_suffix}")
83
+ growth_rate = value_year2 / value_year1
84
+
85
+ assert (
86
+ min_annual_growth <= growth_rate <= max_annual_growth
87
+ ), f"{name} growth rate {growth_rate:.4f} outside reasonable bounds [{min_annual_growth:.3f}, {max_annual_growth:.3f}]"
88
+
89
+
90
+ def test_cpi_relationships():
91
+ """Test that CPI indices maintain expected relationships."""
92
+ from policyengine_us import Microsimulation
93
+
94
+ sim = Microsimulation()
95
+ parameters = sim.tax_benefit_system.parameters
96
+
97
+ # Test a few years to ensure relationships are maintained
98
+ test_years = [2040, 2060, 2080, 2100]
99
+
100
+ for year in test_years:
101
+ cpi_u = parameters.gov.bls.cpi.cpi_u(f"{year}-02-01")
102
+ c_cpi_u = parameters.gov.bls.cpi.c_cpi_u(f"{year}-02-01")
103
+
104
+ # Chained CPI-U typically grows slower than regular CPI-U
105
+ # due to substitution effects, but not always
106
+ # Just verify both exist and are positive
107
+ assert cpi_u > 0, f"CPI-U should be positive in {year}"
108
+ assert c_cpi_u > 0, f"Chained CPI-U should be positive in {year}"
@@ -8,6 +8,13 @@ class is_ssi_eligible(Variable):
8
8
  definition_period = YEAR
9
9
 
10
10
  def formula(person, period, parameters):
11
+ abd_person = person("is_ssi_aged_blind_disabled", period)
11
12
  meets_resource_test = person("meets_ssi_resource_test", period)
12
- eligible = person("is_ssi_eligible_individual", period)
13
- return meets_resource_test & eligible
13
+ is_qualified_noncitizen = person("is_ssi_qualified_noncitizen", period)
14
+ immigration_status = person("immigration_status", period)
15
+ is_citizen = (
16
+ immigration_status == immigration_status.possible_values.CITIZEN
17
+ )
18
+ meets_immigration_status = is_qualified_noncitizen | is_citizen
19
+
20
+ return abd_person & meets_resource_test & meets_immigration_status
@@ -8,14 +8,19 @@ class ssi_amount_if_eligible(Variable):
8
8
  unit = USD
9
9
  definition_period = YEAR
10
10
  reference = "https://www.law.cornell.edu/uscode/text/42/1382#b"
11
+ defined_for = "is_ssi_eligible"
11
12
 
12
13
  def formula(person, period, parameters):
13
- ssi = parameters(period).gov.ssa.ssi.amount
14
- return (
15
- where(
16
- person("ssi_claim_is_joint", period),
17
- ssi.couple,
18
- ssi.individual,
19
- )
20
- * MONTHS_IN_YEAR
14
+ p = parameters(period).gov.ssa.ssi.amount
15
+ is_dependent = person("is_tax_unit_dependent", period)
16
+ head_or_spouse_amount = where(
17
+ person("ssi_claim_is_joint", period),
18
+ p.couple / 2,
19
+ p.individual,
21
20
  )
21
+ # Adults amount is based on whether it is a joint claim
22
+ # Dependents always use individual amount.
23
+ ssi_per_month = where(
24
+ is_dependent, p.individual, head_or_spouse_amount
25
+ )
26
+ return ssi_per_month * MONTHS_IN_YEAR
@@ -6,17 +6,10 @@ class ssi_claim_is_joint(Variable):
6
6
  entity = Person
7
7
  label = "SSI claim is joint"
8
8
  definition_period = YEAR
9
- defined_for = "is_ssi_eligible_individual"
10
9
 
11
10
  def formula(person, period, parameters):
12
- # The simplest way: if you're in a marital_unit with 2 people,
13
- # and you are an SSI-eligible individual,
14
- # we say it's 'joint' no matter how much is actually deemed.
15
- #
16
- # Note: In the PolicyEngine codebase, marital units by definition only
17
- # include spouses (max of 2 people), not dependents or children.
18
- # Dependents would be in the same tax_unit or family, but not the same
19
- # marital_unit. Marital units are defined in entities.py as:
20
- # "An unmarried person, or a married and co-habiting couple."
21
- num_in_marriage = person.marital_unit.nb_persons()
22
- return num_in_marriage == 2
11
+ abd_person = person("is_ssi_aged_blind_disabled", period)
12
+ is_head_or_spouse = person("is_tax_unit_head_or_spouse", period)
13
+ eligible_person = abd_person & is_head_or_spouse
14
+
15
+ return person.marital_unit.sum(eligible_person) > 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.370.2
3
+ Version: 1.372.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -8,6 +8,7 @@ policyengine_us/typing.py,sha256=ixLAOFjSnepNEAZ63DhhBZHRw0rBgjH81y_z4hTjhEE,298
8
8
  policyengine_us/data/__init__.py,sha256=TuwzfG1RS1KzvMptMbpbEfiaRG5RPCXQK5gYBwzDkBc,47
9
9
  policyengine_us/data/zip_code_dataset.py,sha256=PvA4Jldyu21XEuJMGRAcNLxjlJnDSJ7iVTBdy2c1Mp8,337
10
10
  policyengine_us/parameters/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
11
+ policyengine_us/parameters/uprating_extensions.py,sha256=qK945oDjs2UxHVg5fWkVISghsaaqoDk0h_WRxN01hug,5070
11
12
  policyengine_us/parameters/calibration/gov/aca/enrollment/state.yaml,sha256=NjN2M7pJxG6q78KR3-I3cIZCVjDayrswc65RISZmetY,1794
12
13
  policyengine_us/parameters/calibration/gov/aca/spending/state.yaml,sha256=1kvJIiu-cYEbXPAaBQcOqSE3ShXfALag-1Pdw3sdEes,2018
13
14
  policyengine_us/parameters/calibration/gov/cbo/income_by_source.yaml,sha256=xuzSBHECTYR7XwFhVgNrAOy1ffEUO2W0mo6g3MzwU24,6719
@@ -106,9 +107,9 @@ policyengine_us/parameters/gov/aca/slcsp/max_child_age.yaml,sha256=H0zXuEv7vVUxd
106
107
  policyengine_us/parameters/gov/aca/spending/state.yaml,sha256=1kvJIiu-cYEbXPAaBQcOqSE3ShXfALag-1Pdw3sdEes,2018
107
108
  policyengine_us/parameters/gov/bls/README.md,sha256=mvQn4hzE0XxaeeC-1ifo6jfCYly_3kXBpGAOHIFtrEo,35
108
109
  policyengine_us/parameters/gov/bls/cpi/README.md,sha256=ch6EGah8vqYgD4eOPb5NaKp8jD8U00JG5_NxvgrHm-8,29
109
- policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml,sha256=fdV3E6PLxo9zRwZOQKbbeZ4jUwkyhMephWr1oiehMbs,7833
110
- policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml,sha256=mcbi7y9fPG9mFj2KsCtGV-bW5ViYStGajB2o4JzJnHI,27923
111
- policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml,sha256=ukBM2hvO8Y81-FlelLf1_raJtfFMLqeiEgfdaoY0Mok,30011
110
+ policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml,sha256=ahXQdHFJG4QTdG1PduWEwX9qeIfSy8Trb7KUKNLp_HQ,7671
111
+ policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml,sha256=tpi1qDrQC-Kl8tkQzn5gj17l-59gYTu-6cyzqpq94MQ,27737
112
+ policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml,sha256=Aiv9SIifEtIXEtNpNMWOFz3ELZ0nAJ4dsyaZE3oGmO4,29153
112
113
  policyengine_us/parameters/gov/contrib/README.md,sha256=6ug3-8sV30Mlz4uVQbO2nsQ3X0BfLRGpjRPXuD4aUkM,14
113
114
  policyengine_us/parameters/gov/contrib/dc_tax_threshold_joint_ratio.yaml,sha256=t-x2bZHeltkqwVZJXrMCOrqCSrRRzUunDOXBIgqAw6w,164
114
115
  policyengine_us/parameters/gov/contrib/additional_tax_bracket/bracket.yaml,sha256=QWzfPBK2MwVkNTaH_6q5ebdqanPdIB56iQepvKbKT5A,23686
@@ -360,7 +361,7 @@ policyengine_us/parameters/gov/fcc/lifeline/amount/standard.yaml,sha256=i94DV8Ow
360
361
  policyengine_us/parameters/gov/hhs/README.md,sha256=-K3nU8bLJDb5t222i9zQRp2LOhpqtszN_7-Zfi_3PH0,48
361
362
  policyengine_us/parameters/gov/hhs/fpg.yaml,sha256=O0GRTHiNjLvpS1kJBZRg5dZtDUwgijEJBZd9qpvp7nM,2619
362
363
  policyengine_us/parameters/gov/hhs/index.yaml,sha256=diih4UjZz-5dZSiO89js5pJ-G3PO3kWspE7ybH4kCqk,66
363
- policyengine_us/parameters/gov/hhs/uprating.yaml,sha256=CgiBGfZiYVPkGIhyBNDrKeXDBoOR_-LevCzUESEK8qg,1082
364
+ policyengine_us/parameters/gov/hhs/uprating.yaml,sha256=wy33MD3JtpWBCnq6aBjIA7ba-UjGmKCGgbDTxL9es6s,1148
364
365
  policyengine_us/parameters/gov/hhs/ccdf/README.md,sha256=5u4-bwFTCDWgj6711QBPRQMoJSUfXBp_o_1UTxITl8Y,37
365
366
  policyengine_us/parameters/gov/hhs/ccdf/age_limit.yaml,sha256=f4owI4F6qjaNtyZsjDwFXCfISEISR_piAjqxddc3fi0,293
366
367
  policyengine_us/parameters/gov/hhs/ccdf/amount.yaml,sha256=2a8QXjkSjyzj1lsAgno79XU8fngz8YpMxw0xAvp8QSA,17822
@@ -467,7 +468,7 @@ policyengine_us/parameters/gov/hud/total_tenant_payment/adjusted_income_share.ya
467
468
  policyengine_us/parameters/gov/hud/total_tenant_payment/income_share.yaml,sha256=9QlMKL43trmMBjsOCns9FTgpqonf3jyuTNsJ4wkOu1c,252
468
469
  policyengine_us/parameters/gov/hud/total_tenant_payment/index.yaml,sha256=rHA75ZOkRKkoYkd4zjChiGfJF_G--G2ZfwG3LZLIf6I,85
469
470
  policyengine_us/parameters/gov/irs/README.md,sha256=xVPG5PdyT2rCqyo7FYIWJh2RGmYi2iQg-4OM8tGnvuQ,33
470
- policyengine_us/parameters/gov/irs/uprating.py,sha256=50BDVFZFOIpITiaqWUW9wVvWKM3stWIullONY8m6KJA,1039
471
+ policyengine_us/parameters/gov/irs/uprating.py,sha256=jiteQOplsLRbiSw9AR53ZVnf5tPLNCips04jvC6UKA4,438
471
472
  policyengine_us/parameters/gov/irs/uprating.yaml,sha256=eWHiY-KVTNKaH4ls-TG0I9ZWX2T46x0kaTY-w55YLzA,167
472
473
  policyengine_us/parameters/gov/irs/ald/README.md,sha256=W2ghpaFkMCePzJkUcylIX_glYWcTGV4Cm_pfqU50JPE,28
473
474
  policyengine_us/parameters/gov/irs/ald/deductions.yaml,sha256=uRpDXeDB3DeGkXbmbW2VE1LOvvnzPdnLldXbpdpKgcY,2202
@@ -847,7 +848,7 @@ policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/in
847
848
  policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution.yaml,sha256=q3b4i70HTPpRPbKU95QCRxL0wVxzi9_PRqDhGznd7Cs,1869
848
849
  policyengine_us/parameters/gov/ssa/README.md,sha256=Rcxn6NYTRCJYhktw0-I4QxgcDsYYsqCKabBb7EJq4gw,39
849
850
  policyengine_us/parameters/gov/ssa/nawi.yaml,sha256=Dbb8NPv7AEmaKPhHgDsWA5D54Q2aJPkr0OSccgDR4bw,4197
850
- policyengine_us/parameters/gov/ssa/uprating.yaml,sha256=orf6KApySVUInjaGI2XlAM9WU8bUzkWS8cihOillIxk,1298
851
+ policyengine_us/parameters/gov/ssa/uprating.yaml,sha256=qR8giFlpvxYxaeOopHqy8BiGT1OQQEz2X09elmbLNl4,1447
851
852
  policyengine_us/parameters/gov/ssa/sga/READme.md,sha256=hQy92h15bvMGYcm66GgW2Q9S-dKjw3JAREixpeoIg4g,31
852
853
  policyengine_us/parameters/gov/ssa/sga/blind.yaml,sha256=Rta-kqpG9JNIwTOE7B35sM5IMHsF2yBYPmF4_ILuSBw,599
853
854
  policyengine_us/parameters/gov/ssa/sga/non_blind.yaml,sha256=6_3Rt5PEh66K7HJk1APn21cMo0xXBUKnF49o8RPifK8,1189
@@ -2996,7 +2997,7 @@ policyengine_us/parameters/gov/usda/snap/categorical_eligibility.yaml,sha256=P0R
2996
2997
  policyengine_us/parameters/gov/usda/snap/expected_contribution.yaml,sha256=G_KHyiV2FlSVEvbM50p4M9c1MqqRRxWXMWI0dD8QGNk,266
2997
2998
  policyengine_us/parameters/gov/usda/snap/max_allotment.yaml,sha256=ggXp6e-H_sLHTQEAn5-eFhh_h9rnN-iENMiQhZ8Ya3s,12065
2998
2999
  policyengine_us/parameters/gov/usda/snap/takeup_rate.yaml,sha256=7vhUcW-vYntaCgMDtUTejOLFIwB09DL8OXgF4XSpUZg,260
2999
- policyengine_us/parameters/gov/usda/snap/uprating.yaml,sha256=_MGg3_6AmfXf3h3nNDsijF0y58XCXCwl5D0w8Ix_vv8,963
3000
+ policyengine_us/parameters/gov/usda/snap/uprating.yaml,sha256=1IaszxANNLlV8niyVYmB1G7Y1tLaehRt3mMbelDDYuI,1028
3000
3001
  policyengine_us/parameters/gov/usda/snap/asset_test/limit.yaml,sha256=_50BAmu84RumiXPCgCM4YBjV2drD15QzwQX38A0lhww,3013
3001
3002
  policyengine_us/parameters/gov/usda/snap/emergency_allotment/allowed.yaml,sha256=F3wNVVVYi7YZ6R0i73854Dco26REbhMEfpy9HzpdYpw,631
3002
3003
  policyengine_us/parameters/gov/usda/snap/emergency_allotment/in_effect.yaml,sha256=scGNcKkui593vmvpQtKr7X6rR1r7QeZTQvIHLvmfByo,2155
@@ -3514,15 +3515,16 @@ policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/incom
3514
3515
  policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/labor_supply_behavioral_response.yaml,sha256=FqBkZcYs-EFj-pNtUAtW85ZyGn_riZ3_pH-8DP90ORU,1551
3515
3516
  policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/substitution_elasticity.yaml,sha256=Cfb3-vmZxtLJdDIimJsByRDqdYh1ds5lBCQVgShDDtQ,2032
3516
3517
  policyengine_us/tests/policy/baseline/gov/ssa/ss/never_eligible_for_social_security_benefits.yaml,sha256=-l0F8L_YCNpNfwBtZLxEfPOCPea4ZHfGNAHRw3ozkYk,587
3517
- policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration.yaml,sha256=rW-eqYbdxTpAGRQ4YpVIoQ6czCHcONXRh6IEQvHrgcs,1554
3518
+ policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration.yaml,sha256=q4L7elUM4WmlSF-J0i9rtNd_Cq3uhAvz17vpPooBfdw,1554
3518
3519
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_aged_blind_disabled.yaml,sha256=tyim2uGywNbV57pL2M6DO2kH1I2lXZS6P2Vab2zyIRA,470
3519
3520
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_disabled.yaml,sha256=6m105fmpjOism7pvcXSubXjHoiT8e7Lcfpu6NwzxuRo,1244
3520
- policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_eligible.yaml,sha256=_0JswcUwSGrlTVEpEL7CPy8v2cQbJz6kgeOyPSzjVio,474
3521
+ policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_eligible.yaml,sha256=atAjx9vbFCBWwl3zxzauS76WzE2l5YUo1szVrcC7GJY,474
3521
3522
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/is_ssi_qualified_noncitizen.yaml,sha256=QiRg3QvNVv8J1pOPzTjyWT7OBy3dkzHWMqs6Vlbincs,1124
3522
3523
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi.yaml,sha256=Ou49cO_GWSCbBGlFrN3b79Xk4wnUSLPA8fwrC7NSEhk,652
3523
- policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_claim_is_joint.yaml,sha256=XQyv2uwWamAJdEmFZJxIhj40CeMUNBzrMS-6uF6RLS0,935
3524
+ policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_amount_if_eligible.yaml,sha256=rDd7EeTMiS050o18i8gN5l-u1w1V1N3dh0Mcg31wWhg,3302
3525
+ policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_claim_is_joint.yaml,sha256=IxiCuu8BPiq2nT9AX63UCz9f5upZllr8vdb5Mwn8imE,3558
3524
3526
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/ssi_countable_income.yaml,sha256=m9kaOqgr1Unn9NiJIaPHhVRoKNh-FLyvIAITcM9hmp8,3412
3525
- policyengine_us/tests/policy/baseline/gov/ssa/ssi/uncapped_ssi.yaml,sha256=d6uo3EX9S_j7YgmRhP_XRHY1MayvZdf3Ei45b1fePng,1426
3527
+ policyengine_us/tests/policy/baseline/gov/ssa/ssi/uncapped_ssi.yaml,sha256=oWN1uCK22O9GIal10m4QqTNJmMOWWaY-zyv68so1PVg,1031
3526
3528
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/eligibility/ssi_marital_both_eligible.yaml,sha256=U2uTvOy9ycwiZc1jiH4jMHl9Rsh90GDAmlxLLZEZZxE,1176
3527
3529
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/eligibility/income/is_ssi_blind_or_disabled_working_student_exclusion_eligible.yaml,sha256=ac0Zi_A3GWTLlAQnyr5WC-8whjqLbqTUsN3PP3O6nLQ,944
3528
3530
  policyengine_us/tests/policy/baseline/gov/ssa/ssi/eligibility/income/ssi_blind_or_disabled_working_student_exclusion.yaml,sha256=zJjJKP8sn3nLxzwioPV3pi5lFJaBDGt3xJuO3gsv5KI,2006
@@ -5096,6 +5098,7 @@ policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_market_
5096
5098
  policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_net_income.yaml,sha256=lZorN8LQYPCNpHDriLdLbaJ8vg3kHHK_UIVcbo7tkdk,218
5097
5099
  policyengine_us/tests/policy/baseline/household/income/tax_unit/spouse_separate_adjusted_gross_income.yaml,sha256=zNhFBR3IFmCJjnScfTvpVfmUv3Xl-yIXKlFA3pNjwsg,373
5098
5100
  policyengine_us/tests/policy/baseline/income/spm_unit_income_decile.yaml,sha256=1wLKnDqXKVBadZKYVGYlA1NpsS8VgHAlnV9JU97IRf4,1263
5101
+ policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py,sha256=HVscmchTdhGQZDtIcPezVgQ8zc2b-7WVh8nQ07QcfQc,4253
5099
5102
  policyengine_us/tests/policy/contrib/dc_kccatc.yaml,sha256=v4woAJveF3mZH6d4W3xAYlejcTIHTEQZM4nnenGNq-8,1786
5100
5103
  policyengine_us/tests/policy/contrib/dc_single_joint_threshold_ratio.yaml,sha256=vDMmkKdvjCtR8uweKDptp1gt05OI78Pm7GoIL0Apxxg,632
5101
5104
  policyengine_us/tests/policy/contrib/reported_state_income_tax.yaml,sha256=697RFAYWbmvD4LdQA-RHnIJ8nuu9wwEc2IRejdJ4QAQ,232
@@ -5767,10 +5770,10 @@ policyengine_us/variables/gov/ssa/ss/social_security_dependents.py,sha256=WN5uln
5767
5770
  policyengine_us/variables/gov/ssa/ss/social_security_disability.py,sha256=1Jh83oHKbP_noFnOdDq9C6gqasbzed53YM_Ue0ExXDQ,264
5768
5771
  policyengine_us/variables/gov/ssa/ss/social_security_retirement.py,sha256=9ohBrN-yMIewjHJvxlz-3vdoqrVmmOqiomQJeqKTBqs,257
5769
5772
  policyengine_us/variables/gov/ssa/ss/social_security_survivors.py,sha256=8GuxrIPrHN-psTjkfzp3nvrJXEmbXisKiegkvenOzUg,257
5770
- policyengine_us/variables/gov/ssa/ssi/is_ssi_eligible.py,sha256=F6LlSCvhA9MLqckuXUmmAJIyusiQBA5pcfl0yEyWCE0,411
5773
+ policyengine_us/variables/gov/ssa/ssi/is_ssi_eligible.py,sha256=A6Cxz_7frbiSs9V7r95h3GSw0BkHPT5jN8YtvjyFRpI,771
5771
5774
  policyengine_us/variables/gov/ssa/ssi/ssi.py,sha256=5XIl0mU-LRa5FMzK2Dguan_FKZG6GLiT_xD1rkZBRWI,462
5772
- policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py,sha256=2Kz0OjeY9MzL0L5h9DhbMmHo3caJYusFdsfHbw1juHU,575
5773
- policyengine_us/variables/gov/ssa/ssi/ssi_claim_is_joint.py,sha256=faXB3kIr4HbyKWToRsXJUIVGz5ID3FzXrAxiUKCGPig,940
5775
+ policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py,sha256=uxKoHiPPDkUVHL-l6hF-1QzhMcrLv8TOHGA2B-azOvs,884
5776
+ policyengine_us/variables/gov/ssa/ssi/ssi_claim_is_joint.py,sha256=NYwR2LVLV2xf1vbFG0r9ZwhQFVlZ_gLnV_F00RUU6_Y,485
5774
5777
  policyengine_us/variables/gov/ssa/ssi/tax_unit_ssi.py,sha256=Gw8nl4n1c86m3gsEboYZ_52Mf8KurWnfnITFKRlMGCk,221
5775
5778
  policyengine_us/variables/gov/ssa/ssi/uncapped_ssi.py,sha256=pVr8WqBmSIA0ZcoRGOIV9QrcBcKE05uq8au_B6DMfoI,511
5776
5779
  policyengine_us/variables/gov/ssa/ssi/eligibility/income/_apply_ssi_exclusions.py,sha256=1aQNTEUuTVEEVWf_6wFN7-eCwSl4D6G9uyvzAnRBqXA,1806
@@ -8255,8 +8258,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8255
8258
  policyengine_us/variables/input/geography.py,sha256=XmBlgXhzBoLRKk6R8taVZHqUw1eU8MbNeGS9iJ7_l44,4506
8256
8259
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8257
8260
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8258
- policyengine_us-1.370.2.dist-info/METADATA,sha256=UN5NKnYjQDD3hl66gF272fF_53IvjcIE0C2QiSiSBVM,1649
8259
- policyengine_us-1.370.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8260
- policyengine_us-1.370.2.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8261
- policyengine_us-1.370.2.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8262
- policyengine_us-1.370.2.dist-info/RECORD,,
8261
+ policyengine_us-1.372.0.dist-info/METADATA,sha256=BMPMRc82wu6bbPBTxSkq_UmAGfvWH7jxlRdsNQ-weuk,1649
8262
+ policyengine_us-1.372.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8263
+ policyengine_us-1.372.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8264
+ policyengine_us-1.372.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8265
+ policyengine_us-1.372.0.dist-info/RECORD,,