policyengine-us 1.448.0__py3-none-any.whl → 1.449.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.
Files changed (31) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  3. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  4. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  5. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  6. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  7. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  8. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  9. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  10. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  11. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  14. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  15. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  16. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  17. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  18. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  19. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  20. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  21. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  22. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  23. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  24. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  25. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  26. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  27. {policyengine_us-1.448.0.dist-info → policyengine_us-1.449.1.dist-info}/METADATA +1 -1
  28. {policyengine_us-1.448.0.dist-info → policyengine_us-1.449.1.dist-info}/RECORD +31 -7
  29. {policyengine_us-1.448.0.dist-info → policyengine_us-1.449.1.dist-info}/WHEEL +0 -0
  30. {policyengine_us-1.448.0.dist-info → policyengine_us-1.449.1.dist-info}/entry_points.txt +0 -0
  31. {policyengine_us-1.448.0.dist-info → policyengine_us-1.449.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,12 @@
1
+ description: Average Medicare spending per enrolled beneficiary (national average). Represents the annual value of Medicare coverage including Part A and Part B.
2
+ values:
3
+ 2021-01-01: 11_080 # Traditional Medicare (Part A and/or Part B) per KFF
4
+ 2025-01-01: 14_500 # Estimated - update with official Centers for Medicare & Medicaid Services (CMS) data when available
5
+ metadata:
6
+ label: Medicare per capita cost
7
+ unit: currency-USD
8
+ period: year
9
+ reference:
10
+ - title: KFF Medicare Spending Per Beneficiary (2021)
11
+ href: https://www.kff.org/medicare/state-indicator/per-beneficiary/
12
+ - title: Note - 2024 value is estimated and should be updated with official Centers for Medicare & Medicaid Services (CMS) data
@@ -0,0 +1,13 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) requires this annual deductible for Medicare Part A inpatient hospital coverage.
2
+ metadata:
3
+ unit: currency-USD
4
+ period: year
5
+ label: Medicare Part A deductible
6
+ reference:
7
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
8
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
9
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
11
+ values:
12
+ 2024-01-01: 1_632
13
+ 2025-01-01: 1_676
@@ -0,0 +1,10 @@
1
+ description: Most people have this many quarters of Medicare-covered employment and qualify for premium-free Part A.
2
+ metadata:
3
+ unit: quarters
4
+ period: year
5
+ label: Default Medicare quarters of coverage
6
+ reference:
7
+ - title: Medicare.gov - Part A costs
8
+ href: https://www.medicare.gov/basics/costs/medicare-costs/part-a-costs
9
+ values:
10
+ 2000-01-01: 40 # Standard for premium-free Part A
@@ -0,0 +1,13 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) charges this monthly premium for Medicare Part A coverage to individuals with fewer than 30 quarters of Medicare-covered employment.
2
+ metadata:
3
+ unit: currency-USD
4
+ period: month
5
+ label: Medicare Part A full premium
6
+ reference:
7
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
8
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
9
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
11
+ values:
12
+ 2024-01-01: 505
13
+ 2025-01-01: 518
@@ -0,0 +1,10 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) requires this many quarters of Medicare-covered employment for beneficiaries to qualify for premium-free Part A coverage.
2
+ metadata:
3
+ unit: quarters
4
+ period: year
5
+ label: Premium-free Part A quarters threshold
6
+ reference:
7
+ - title: Medicare.gov - Part A costs
8
+ href: https://www.medicare.gov/basics/costs/medicare-costs/part-a-costs
9
+ values:
10
+ 2000-01-01: 40
@@ -0,0 +1,13 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) charges this monthly premium for Medicare Part A coverage to individuals with 30-39 quarters of Medicare-covered employment.
2
+ metadata:
3
+ unit: currency-USD
4
+ period: month
5
+ label: Medicare Part A reduced premium
6
+ reference:
7
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
8
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
9
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
11
+ values:
12
+ 2024-01-01: 278
13
+ 2025-01-01: 285
@@ -0,0 +1,10 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) requires this many quarters of Medicare-covered employment for beneficiaries to qualify for reduced (rather than full) Part A premium.
2
+ metadata:
3
+ unit: quarters
4
+ period: year
5
+ label: Reduced Part A premium quarters threshold
6
+ reference:
7
+ - title: Medicare.gov - Part A costs
8
+ href: https://www.medicare.gov/basics/costs/medicare-costs/part-a-costs
9
+ values:
10
+ 2000-01-01: 30
@@ -0,0 +1,16 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) sets this as the standard monthly premium for Medicare Part B coverage.
2
+ metadata:
3
+ unit: currency-USD
4
+ period: month
5
+ label: Medicare Part B base premium
6
+ reference:
7
+ - title: 2021 Medicare Parts A & B Premiums and Deductibles
8
+ href: https://www.cms.gov/newsroom/fact-sheets/2021-medicare-parts-b-premiums-and-deductibles
9
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
11
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
12
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
13
+ values:
14
+ 2021-01-01: 148.50
15
+ 2024-01-01: 174.70
16
+ 2025-01-01: 185
@@ -0,0 +1,50 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) charges these Income-Related Monthly Adjustment Amount (IRMAA) surcharges for Medicare Part B to head of household filers, based on modified adjusted gross income (MAGI) from two years prior.
2
+ metadata:
3
+ threshold_unit: currency-USD
4
+ type: single_amount
5
+ amount_unit: currency-USD
6
+ period: month
7
+ label: Medicare Part B income brackets for head of household filers
8
+ reference:
9
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
11
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
12
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
13
+ brackets:
14
+ - threshold:
15
+ 2024-01-01: 0
16
+ 2025-01-01: 0
17
+ amount:
18
+ 2024-01-01: 0
19
+ 2025-01-01: 0
20
+ - threshold:
21
+ 2024-01-01: 103_001
22
+ 2025-01-01: 106_001
23
+ amount:
24
+ 2024-01-01: 69.90
25
+ 2025-01-01: 74
26
+ - threshold:
27
+ 2024-01-01: 129_001
28
+ 2025-01-01: 133_001
29
+ amount:
30
+ 2024-01-01: 174.70
31
+ 2025-01-01: 185
32
+ - threshold:
33
+ 2024-01-01: 161_001
34
+ 2025-01-01: 167_001
35
+ amount:
36
+ 2024-01-01: 279.50
37
+ 2025-01-01: 295.9
38
+ - threshold:
39
+ 2024-01-01: 193_001
40
+ 2025-01-01: 200_001
41
+ amount:
42
+ 2024-01-01: 384.30
43
+ 2025-01-01: 406.9
44
+ - threshold:
45
+ 2024-01-01: 500_000
46
+ 2025-01-01: 500_000
47
+ amount:
48
+ 2024-01-01: 419.30
49
+ 2025-01-01: 443.9
50
+
@@ -0,0 +1,49 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) charges these Income-Related Monthly Adjustment Amount (IRMAA) surcharges for Medicare Part B to joint filers, based on modified adjusted gross income (MAGI) from two years prior.
2
+ metadata:
3
+ threshold_unit: currency-USD
4
+ amount_unit: currency-USD
5
+ period: month
6
+ type: single_amount
7
+ label: Medicare Part B income brackets for joint filers
8
+ reference:
9
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
11
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
12
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
13
+ brackets:
14
+ - threshold:
15
+ 2024-01-01: 0
16
+ 2025-01-01: 0
17
+ amount:
18
+ 2024-01-01: 0
19
+ 2025-01-01: 0
20
+ - threshold:
21
+ 2024-01-01: 206_001
22
+ 2025-01-01: 212_001
23
+ amount:
24
+ 2024-01-01: 69.90
25
+ 2025-01-01: 74
26
+ - threshold:
27
+ 2024-01-01: 258_001
28
+ 2025-01-01: 266_001
29
+ amount:
30
+ 2024-01-01: 174.70
31
+ 2025-01-01: 185
32
+ - threshold:
33
+ 2024-01-01: 322_001
34
+ 2025-01-01: 334_001
35
+ amount:
36
+ 2024-01-01: 279.50
37
+ 2025-01-01: 295.9
38
+ - threshold:
39
+ 2024-01-01: 386_001
40
+ 2025-01-01: 400_001
41
+ amount:
42
+ 2024-01-01: 384.30
43
+ 2025-01-01: 406.9
44
+ - threshold:
45
+ 2024-01-01: 750_000
46
+ 2025-01-01: 750_000
47
+ amount:
48
+ 2024-01-01: 419.30
49
+ 2025-01-01: 443.9
@@ -0,0 +1,30 @@
1
+ description: Income-Related Monthly Adjustment Amount (IRMAA) surcharges for Medicare Part B for married filing separately, based on modified adjusted gross income (MAGI) from two years prior.
2
+ metadata:
3
+ threshold_unit: currency-USD
4
+ amount_unit: currency-USD
5
+ period: month
6
+ label: Medicare Part B income brackets for married filing separately
7
+ reference:
8
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
9
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
10
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
11
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
12
+ brackets:
13
+ - threshold:
14
+ 2024-01-01: 0
15
+ 2025-01-01: 0
16
+ amount:
17
+ 2024-01-01: 0
18
+ 2025-01-01: 0
19
+ - threshold:
20
+ 2024-01-01: 103_001
21
+ 2025-01-01: 106_001
22
+ amount:
23
+ 2024-01-01: 384.30
24
+ 2025-01-01: 406.9
25
+ - threshold:
26
+ 2024-01-01: 397_000
27
+ 2025-01-01: 394_000
28
+ amount:
29
+ 2024-01-01: 419.30
30
+ 2025-01-01: 443.9
@@ -0,0 +1,50 @@
1
+ description: The Centers for Medicare & Medicaid Services (CMS) charges these Income-Related Monthly Adjustment Amount (IRMAA) surcharges for Medicare Part B to single filers, based on modified adjusted gross income (MAGI) from two years prior.
2
+ metadata:
3
+ threshold_unit: currency-USD
4
+ amount_unit: currency-USD
5
+ period: month
6
+ type: single_amount
7
+ label: Medicare Part B income brackets for single filers
8
+ reference:
9
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
11
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
12
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
13
+ brackets:
14
+ - threshold:
15
+ 2024-01-01: 0
16
+ 2025-01-01: 0
17
+ amount:
18
+ 2024-01-01: 0
19
+ 2025-01-01: 0
20
+ - threshold:
21
+ 2024-01-01: 103_001
22
+ 2025-01-01: 106_001
23
+ amount:
24
+ 2024-01-01: 69.90
25
+ 2025-01-01: 74
26
+ - threshold:
27
+ 2024-01-01: 129_001
28
+ 2025-01-01: 133_001
29
+ amount:
30
+ 2024-01-01: 174.70
31
+ 2025-01-01: 185
32
+ - threshold:
33
+ 2024-01-01: 161_001
34
+ 2025-01-01: 167_001
35
+ amount:
36
+ 2024-01-01: 279.50
37
+ 2025-01-01: 295.9
38
+ - threshold:
39
+ 2024-01-01: 193_001
40
+ 2025-01-01: 200_001
41
+ amount:
42
+ 2024-01-01: 384.30
43
+ 2025-01-01: 406.9
44
+ - threshold:
45
+ 2024-01-01: 500_000
46
+ 2025-01-01: 500_000
47
+ amount:
48
+ 2024-01-01: 419.30
49
+ 2025-01-01: 443.9
50
+
@@ -0,0 +1,49 @@
1
+ description: Income-Related Monthly Adjustment Amount (IRMAA) surcharges for Medicare Part B for surviving spouse filers, based on modified adjusted gross income (MAGI) from two years prior.
2
+ metadata:
3
+ threshold_unit: currency-USD
4
+ amount_unit: currency-USD
5
+ type: single_amount
6
+ period: month
7
+ label: Medicare Part B income brackets for surviving spouse filers
8
+ reference:
9
+ - title: 2024 Medicare Parts A & B Premiums and Deductibles
10
+ href: https://www.cms.gov/newsroom/fact-sheets/2024-medicare-parts-b-premiums-and-deductibles
11
+ - title: 2025 Medicare Parts A & B Premiums and Deductibles
12
+ href: https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles
13
+ brackets:
14
+ - threshold:
15
+ 2024-01-01: 0
16
+ 2025-01-01: 0
17
+ amount:
18
+ 2024-01-01: 0
19
+ 2025-01-01: 0
20
+ - threshold:
21
+ 2024-01-01: 103_001
22
+ 2025-01-01: 106_001
23
+ amount:
24
+ 2024-01-01: 69.90
25
+ 2025-01-01: 74
26
+ - threshold:
27
+ 2024-01-01: 129_001
28
+ 2025-01-01: 133_001
29
+ amount:
30
+ 2024-01-01: 174.70
31
+ 2025-01-01: 185
32
+ - threshold:
33
+ 2024-01-01: 161_001
34
+ 2025-01-01: 167_001
35
+ amount:
36
+ 2024-01-01: 279.50
37
+ 2025-01-01: 295.9
38
+ - threshold:
39
+ 2024-01-01: 193_001
40
+ 2025-01-01: 200_001
41
+ amount:
42
+ 2024-01-01: 384.30
43
+ 2025-01-01: 406.9
44
+ - threshold:
45
+ 2024-01-01: 500_000
46
+ 2025-01-01: 500_000
47
+ amount:
48
+ 2024-01-01: 419.30
49
+ 2025-01-01: 443.9
@@ -0,0 +1,65 @@
1
+ - name: unit test 1 - enrolled, premium-free Part A
2
+ period: 2025
3
+ input:
4
+ age: 65
5
+ is_medicare_eligible: true
6
+ medicare_enrolled: true
7
+ medicare_quarters_of_coverage: 40
8
+ adjusted_gross_income:
9
+ 2023: 50_000 # IRMAA uses income from 2 years prior
10
+ tax_exempt_interest_income:
11
+ 2023: 0
12
+ output:
13
+ medicare_cost: 12_280 # $14,500 spending - $2,220 Part B premium (2025)
14
+
15
+ - name: unit test 2 - enrolled, pays full Part A premium
16
+ period: 2025
17
+ input:
18
+ age: 65
19
+ is_medicare_eligible: true
20
+ medicare_enrolled: true
21
+ medicare_quarters_of_coverage: 20
22
+ adjusted_gross_income:
23
+ 2023: 50_000 # IRMAA uses income from 2 years prior
24
+ tax_exempt_interest_income:
25
+ 2023: 0
26
+ output:
27
+ medicare_cost: 6_064 # $14,500 - $6,216 Part A - $2,220 Part B (2025)
28
+
29
+ - name: unit test 3 - enrolled with IRMAA
30
+ period: 2025
31
+ input:
32
+ age: 65
33
+ is_medicare_eligible: true
34
+ medicare_enrolled: true
35
+ medicare_quarters_of_coverage: 40
36
+ adjusted_gross_income:
37
+ 2023: 500_000 # IRMAA uses income from 2 years prior
38
+ tax_exempt_interest_income:
39
+ 2023: 0
40
+ filing_status: SINGLE
41
+ output:
42
+ medicare_cost: 6_953.2 # $14,500 - $7,546.80 Part B with IRMAA (2025)
43
+
44
+ - name: unit test 4 - eligible but not enrolled
45
+ period: 2025
46
+ input:
47
+ age: 65
48
+ is_medicare_eligible: true
49
+ medicare_enrolled: false
50
+ output:
51
+ medicare_cost: 0
52
+
53
+ - name: unit test 5 - 2021 data, premium-free
54
+ period: 2021
55
+ input:
56
+ age: 70
57
+ is_medicare_eligible: true
58
+ medicare_enrolled: true
59
+ medicare_quarters_of_coverage: 40
60
+ adjusted_gross_income:
61
+ 2019: 50_000 # IRMAA uses income from 2 years prior
62
+ tax_exempt_interest_income:
63
+ 2019: 0
64
+ output:
65
+ medicare_cost: 9_298 # $11,080 - $1,782 Part B (2021: $148.50*12)
@@ -0,0 +1,35 @@
1
+ - name: unit test 1 - premium-free Part A (40+ quarters)
2
+ period: 2025
3
+ input:
4
+ age: 65
5
+ is_medicare_eligible: true
6
+ medicare_quarters_of_coverage: 40
7
+ output:
8
+ base_part_a_premium: 0 # Premium-free with 40+ quarters
9
+
10
+ - name: unit test 2 - reduced premium (30-39 quarters)
11
+ period: 2025
12
+ input:
13
+ age: 65
14
+ is_medicare_eligible: true
15
+ medicare_quarters_of_coverage: 35
16
+ output:
17
+ base_part_a_premium: 3_420 # $285 * 12 months
18
+
19
+ - name: unit test 3 - full premium (<30 quarters)
20
+ period: 2025
21
+ input:
22
+ age: 65
23
+ is_medicare_eligible: true
24
+ medicare_quarters_of_coverage: 20
25
+ output:
26
+ base_part_a_premium: 6_216 # $518 * 12 months
27
+
28
+ - name: unit test 4 - not Medicare eligible
29
+ period: 2025
30
+ input:
31
+ age: 65
32
+ is_medicare_eligible: false
33
+ medicare_quarters_of_coverage: 40
34
+ output:
35
+ base_part_a_premium: 0
@@ -0,0 +1,15 @@
1
+ - name: unit test 1 - eligible
2
+ period: 2025
3
+ input:
4
+ age: 65
5
+ is_medicare_eligible: true
6
+ output:
7
+ base_part_b_premium: 2_220 # $185 * 12 months
8
+
9
+ - name: unit test 2 - not eligible
10
+ period: 2025
11
+ input:
12
+ age: 65
13
+ is_medicare_eligible: false
14
+ output:
15
+ base_part_b_premium: 0
@@ -0,0 +1,77 @@
1
+ - name: unit test 1 - surviving spouse, no extra premium
2
+ period: 2025
3
+ input:
4
+ age: 65
5
+ filing_status: SURVIVING_SPOUSE
6
+ adjusted_gross_income:
7
+ 2023: 80_000 # IRMAA uses income from 2 years prior
8
+ tax_exempt_interest_income:
9
+ 2023: 0
10
+ is_medicare_eligible: true
11
+ output:
12
+ income_adjusted_part_b_premium: 2_220 # $185 * 12 months
13
+
14
+ - name: unit test 2 - married, extra premium
15
+ period: 2025
16
+ input:
17
+ age: 65
18
+ filing_status: JOINT
19
+ adjusted_gross_income:
20
+ 2023: 266_001 # IRMAA uses income from 2 years prior
21
+ tax_exempt_interest_income:
22
+ 2023: 0
23
+ is_medicare_eligible: true
24
+ output:
25
+ income_adjusted_part_b_premium: 4_440 # $370 * 12 months
26
+
27
+ - name: unit test 3 - single, extra premium
28
+ period: 2025
29
+ input:
30
+ age: 65
31
+ filing_status: SINGLE
32
+ adjusted_gross_income:
33
+ 2023: 500_000 # IRMAA uses income from 2 years prior
34
+ tax_exempt_interest_income:
35
+ 2023: 0
36
+ is_medicare_eligible: true
37
+ output:
38
+ income_adjusted_part_b_premium: 7_546.8 # $628.90 * 12 months
39
+
40
+ - name: unit test 4 - HOH, extra premium
41
+ period: 2025
42
+ input:
43
+ age: 65
44
+ filing_status: SURVIVING_SPOUSE
45
+ adjusted_gross_income:
46
+ 2023: 106_002 # IRMAA uses income from 2 years prior
47
+ tax_exempt_interest_income:
48
+ 2023: 0
49
+ is_medicare_eligible: true
50
+ output:
51
+ income_adjusted_part_b_premium: 3_108 # $259 * 12 months
52
+
53
+ - name: unit test 5 - married, no extra premium
54
+ period: 2025
55
+ input:
56
+ age: 65
57
+ filing_status: JOINT
58
+ adjusted_gross_income:
59
+ 2023: 200_000 # IRMAA uses income from 2 years prior
60
+ tax_exempt_interest_income:
61
+ 2023: 0
62
+ is_medicare_eligible: true
63
+ output:
64
+ income_adjusted_part_b_premium: 2_220 # $185 * 12 months
65
+
66
+ - name: unit test 6 - married, extra premium, rich
67
+ period: 2025
68
+ input:
69
+ age: 65
70
+ filing_status: JOINT
71
+ adjusted_gross_income:
72
+ 2023: 1_000_000 # IRMAA uses income from 2 years prior
73
+ tax_exempt_interest_income:
74
+ 2023: 0
75
+ is_medicare_eligible: true
76
+ output:
77
+ income_adjusted_part_b_premium: 7_546.8 # $628.90 * 12 months
@@ -11,3 +11,24 @@
11
11
  state_code: AK
12
12
  output:
13
13
  state_group: AK
14
+
15
+ - name: Contiguous state does not cause empty array indexing error
16
+ period: 2024
17
+ input:
18
+ state_code: TX
19
+ output:
20
+ state_group: CONTIGUOUS_US
21
+
22
+ - name: Hawaii
23
+ period: 2024
24
+ input:
25
+ state_code: HI
26
+ output:
27
+ state_group: HI
28
+
29
+ - name: Puerto Rico
30
+ period: 2024
31
+ input:
32
+ state_code: PR
33
+ output:
34
+ state_group: PR
@@ -0,0 +1,30 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicare_cost(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare cost"
8
+ documentation = (
9
+ "Annual value of Medicare benefits received. Calculated as total "
10
+ "Medicare spending on behalf of the beneficiary minus premiums paid. "
11
+ "This represents the net benefit value of Medicare coverage."
12
+ )
13
+ unit = USD
14
+ definition_period = YEAR
15
+ reference = "https://www.cms.gov/medicare"
16
+ defined_for = "medicare_enrolled"
17
+
18
+ def formula(person, period, parameters):
19
+ # Total Medicare spending on behalf of beneficiary
20
+ per_capita_spending = parameters(
21
+ period
22
+ ).calibration.gov.hhs.medicare.per_capita_cost
23
+
24
+ # Premiums paid by beneficiary
25
+ part_a_premium = person("base_part_a_premium", period)
26
+ part_b_premium = person("income_adjusted_part_b_premium", period)
27
+ total_premiums = part_a_premium + part_b_premium
28
+
29
+ # Net benefit = spending - premiums
30
+ return max_(per_capita_spending - total_premiums, 0)
@@ -0,0 +1,14 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicare_enrolled(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Medicare enrolled"
8
+ documentation = (
9
+ "Whether the person is enrolled in Medicare (Part A and/or Part B)"
10
+ )
11
+ definition_period = YEAR
12
+ reference = "https://www.cms.gov/medicare"
13
+ defined_for = "is_medicare_eligible"
14
+ default_value = True # Most Medicare-eligible people are enrolled
@@ -0,0 +1,32 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class base_part_a_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part A Base Premium"
8
+ unit = USD
9
+ documentation = (
10
+ "Annual Medicare Part A premium. Most people (99%) qualify for "
11
+ "premium-free Part A with 40+ quarters of Medicare-covered employment. "
12
+ "Those with 30-39 quarters pay a reduced premium, and those with "
13
+ "fewer than 30 quarters pay the full premium."
14
+ )
15
+ definition_period = YEAR
16
+ reference = "https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles"
17
+ defined_for = "is_medicare_eligible"
18
+
19
+ def formula(person, period, parameters):
20
+ p = parameters(period).gov.hhs.medicare.part_a
21
+ quarters_covered = person("medicare_quarters_of_coverage", period)
22
+
23
+ premium_free_part_a = person("is_premium_free_part_a", period)
24
+ quarters_above_reduced_premium_threshold = (
25
+ quarters_covered >= p.reduced_premium_quarters_threshold
26
+ )
27
+ premium_amount = where(
28
+ quarters_above_reduced_premium_threshold,
29
+ p.reduced_premium,
30
+ p.full_premium,
31
+ )
32
+ return where(premium_free_part_a, 0, premium_amount) * MONTHS_IN_YEAR
@@ -0,0 +1,22 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class is_premium_free_part_a(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Qualifies for premium-free Part A"
8
+ documentation = (
9
+ "Whether the person qualifies for premium-free Medicare Part A "
10
+ "based on having 40 or more quarters of Medicare-covered employment. "
11
+ "Approximately 99% of Medicare beneficiaries qualify for premium-free Part A."
12
+ )
13
+ definition_period = YEAR
14
+ reference = (
15
+ "https://www.medicare.gov/basics/costs/medicare-costs/part-a-costs"
16
+ )
17
+ defined_for = "is_medicare_eligible"
18
+
19
+ def formula(person, period, parameters):
20
+ p = parameters(period).gov.hhs.medicare.part_a
21
+ quarters = person("medicare_quarters_of_coverage", period)
22
+ return quarters >= p.premium_free_quarters_threshold
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicare_quarters_of_coverage(Variable):
5
+ value_type = int
6
+ entity = Person
7
+ label = "Medicare quarters of coverage"
8
+ documentation = (
9
+ "Number of quarters of Medicare-covered employment. Most people have "
10
+ "40+ quarters and qualify for premium-free Part A. Those with 30-39 "
11
+ "quarters pay a reduced premium, and those with fewer than 30 quarters "
12
+ "pay the full premium."
13
+ )
14
+ definition_period = YEAR
15
+
16
+ adds = "gov.hhs.medicare.part_a.default_quarters_of_coverage"
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class base_part_b_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part B Base Premium"
8
+ unit = USD
9
+ documentation = "Medicare Part B Premium."
10
+ definition_period = YEAR
11
+ defined_for = "is_medicare_eligible"
12
+
13
+ def formula(person, period, parameters):
14
+ p = parameters(period).gov.hhs.medicare.part_b
15
+ # base_premium is a monthly amount, multiply by MONTHS_IN_YEAR for annual
16
+ return p.base_premium * MONTHS_IN_YEAR
@@ -0,0 +1,55 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class income_adjusted_part_b_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part B premium (income-adjusted)"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ defined_for = "is_medicare_eligible"
11
+ reference = "https://www.medicare.gov/your-medicare-costs/part-b-costs"
12
+ documentation = "Medicare Part B premium adjusted for income (IRMAA). Based on modified adjusted gross income from 2 years prior."
13
+
14
+ def formula(person, period, parameters):
15
+
16
+ tax_unit = person.tax_unit
17
+ filing_status = tax_unit("filing_status", period)
18
+ # Medicare Part B IRMAA is based on MAGI from 2 years prior
19
+ # MAGI = AGI + tax-exempt interest
20
+ prior_period = period.offset(-2, "year")
21
+ agi = tax_unit("adjusted_gross_income", prior_period)
22
+ tax_exempt_interest = tax_unit(
23
+ "tax_exempt_interest_income", prior_period
24
+ )
25
+ magi = agi + tax_exempt_interest
26
+ base = person("base_part_b_premium", period)
27
+
28
+ # Build boolean masks for each status
29
+ status = filing_status.possible_values
30
+ statuses = [
31
+ status.SINGLE,
32
+ status.JOINT,
33
+ status.HEAD_OF_HOUSEHOLD,
34
+ status.SURVIVING_SPOUSE,
35
+ status.SEPARATE,
36
+ ]
37
+ in_status = [filing_status == s for s in statuses]
38
+
39
+ p = parameters(period).gov.hhs.medicare.part_b.irmaa
40
+
41
+ irmaa_amount = select(
42
+ in_status,
43
+ [
44
+ p.single.calc(magi),
45
+ p.joint.calc(magi),
46
+ p.head_of_household.calc(magi),
47
+ p.surviving_spouse.calc(magi),
48
+ p.separate.calc(magi),
49
+ ],
50
+ )
51
+
52
+ # IRMAA amounts are monthly, multiply by MONTHS_IN_YEAR to get annual
53
+ # Base is already annual
54
+ annual_irmaa = irmaa_amount * MONTHS_IN_YEAR
55
+ return base + annual_irmaa
@@ -22,8 +22,11 @@ class state_group(Variable):
22
22
  def formula(household, period, parameters):
23
23
  NON_CONTIGUOUS_STATES = ("AK", "HI", "GU", "PR", "VI")
24
24
  state_code = household("state_code", period).decode_to_str()
25
- return where(
26
- np.isin(state_code, NON_CONTIGUOUS_STATES),
27
- StateGroup.encode(state_code).decode(),
28
- StateGroup.CONTIGUOUS_US,
29
- )
25
+ is_non_contiguous = np.isin(state_code, NON_CONTIGUOUS_STATES)
26
+ encoded = np.empty(state_code.shape, dtype=object)
27
+ encoded[:] = StateGroup.CONTIGUOUS_US
28
+ if is_non_contiguous.any():
29
+ encoded[is_non_contiguous] = StateGroup.encode(
30
+ state_code[is_non_contiguous]
31
+ ).decode()
32
+ return encoded
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.448.0
3
+ Version: 1.449.1
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -52,6 +52,7 @@ policyengine_us/parameters/calibration/gov/hhs/medicaid/spending/totals/state.ya
52
52
  policyengine_us/parameters/calibration/gov/hhs/medicaid/totals/enrollment.yaml,sha256=MV0HQ_KmTLKBW-tZcuzcgl1E-HHubFINIJA3f1keO9E,7972
53
53
  policyengine_us/parameters/calibration/gov/hhs/medicaid/totals/per_capita.yaml,sha256=tXmEcFyUqmSr8jKxNjiyYkFaGdxueH2jIQvT4bHJf5A,654
54
54
  policyengine_us/parameters/calibration/gov/hhs/medicaid/totals/spending.yaml,sha256=1gCUYxk1Zc7WUSYqAbZsqpyw8tQpp_-OYnjR6J4tXpQ,7200
55
+ policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml,sha256=sKK5q6tC8cyzbjxAfVcWndbX6jFQg2l9-HMXod_rmnI,727
55
56
  policyengine_us/parameters/calibration/gov/irs/soi/alimony_income.yaml,sha256=qj4ONvyLZlpBAmuxA_5yc0AHzxmHx7guy0CR575Q_1A,469
56
57
  policyengine_us/parameters/calibration/gov/irs/soi/employment_income.yaml,sha256=lndcNuGPwaXC55SvqIbuHWfVuVKETvdNWZjeCKyrCQU,500
57
58
  policyengine_us/parameters/calibration/gov/irs/soi/farm_income.yaml,sha256=47mopnxqk8P3kefzFqxAQ84YFdiZ8-5whC2D1o5RMf4,518
@@ -471,6 +472,18 @@ policyengine_us/parameters/gov/hhs/medicaid/geography/second_lowest_silver_plan_
471
472
  policyengine_us/parameters/gov/hhs/medicaid/income/modification.yaml,sha256=3dMoQkxMj6X8Gj3EqETqWuj55eG4OKIpOZ_GIhZECpk,617
472
473
  policyengine_us/parameters/gov/hhs/medicare/eligibility/min_age.yaml,sha256=ol8dje5hQ6h13xcuQT5yvihQYD-XHMZmPrAXb-XV3To,278
473
474
  policyengine_us/parameters/gov/hhs/medicare/eligibility/min_months_receiving_social_security_disability.yaml,sha256=iLbZ2JbrZ5JBfk0f0MbdlUuiaK2EcTv7ZTsGxlQxd6E,369
475
+ policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml,sha256=HBCDo69Vw7DiXQVgCRrf0bY5i-IBpoVwJUJvWRib4Lk,616
476
+ policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml,sha256=7VDZ-tnK0lnXqGQSQAvkOfpbJoEsFLRg2P0cZmTRAoE,399
477
+ policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml,sha256=A43CtV95aCGDcmukOvAOMUZg4lX5ZSURGGiwIyYMeJw,667
478
+ policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml,sha256=n12QNoqVdxbQdKx0lD8PsCQTbfUtyMmtlncK_bR-ZqU,433
479
+ policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml,sha256=TcrtXeGapYrsCo3WzOfOqKzi_7dGygcCddA6hqI9_e8,662
480
+ policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml,sha256=yKxe-tahXy8ffHXGbsjYcONsqSzP0ATVAf3OGtNfW_Y,449
481
+ policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml,sha256=-iRj3aJ-RAOXbiAZ5a05m-jB3wfC5ORPI6U_6H9yyW0,794
482
+ policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml,sha256=kf2yux4PP50mz89ogPN5P_76k37UNDoEw31gCBaS28s,1526
483
+ policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml,sha256=X7Qp4b0xwtGo5BuIlAyU1LaiHrFkixwBbQMzTSks46g,1501
484
+ policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml,sha256=pSmaNjhUDnHMrFVhRm8zzMLfDaL90b6WIFM00BykLSE,1063
485
+ policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml,sha256=IbGDjsaXzMDD7H6tcWEJzG2XvjRRjJzvTJCTh6AWKqY,1510
486
+ policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml,sha256=n_IMsSzWKxPtuZXCxg7slsqAmpt3Bx0XTHtRScDuBEA,1459
474
487
  policyengine_us/parameters/gov/hhs/smi/README.md,sha256=endWP8ndL1VaPkxLJKQczxXpV6ntSLfsnvk6avD5ryQ,28
475
488
  policyengine_us/parameters/gov/hhs/smi/amount.yaml,sha256=e_itIpx6ENq7Cuim__uz1lqzy0GaKmt3PmYCZz4PPZg,7130
476
489
  policyengine_us/parameters/gov/hhs/smi/household_size_adjustment.yaml,sha256=sRvI5yxBFTH6HWTaW-V9JclrwuzBH8spJOgn6TSfvqs,510
@@ -3548,6 +3561,10 @@ policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is
3548
3561
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_in_medicaid_medically_needy_category.yaml,sha256=DoifRYYyDQ6EK_ras8ZajcBwyFueXiCmHNlGArjM-wc,353
3549
3562
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml,sha256=2vU8xZuYNwKwRLJv_P0FANWEZD5XVbsGemfE4lu2ddU,609
3550
3563
  policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml,sha256=hUKzyVUIey3zrgtFGkYc4fzb3U83b5MubRHQEw7rHYY,1653
3564
+ policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml,sha256=KYreQyVhdIzilDTMCXa9dYzqY8e3ccbxpikz3l3NlUA,1801
3565
+ policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml,sha256=y801yOQl0syS10WTP51B2jaWEMA2he66qtWZaW0vMwk,860
3566
+ policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml,sha256=ZXFbqPSCakYNiJ9-Zatm2SBMHsYux_oBHotwU24wzN8,302
3567
+ policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml,sha256=g1X_y2WrBk239gJbuowYfaD3TU0Y3_5GDWpnknZXQDk,2112
3551
3568
  policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/is_medicare_eligible.yaml,sha256=QwfUTRIC6TXTIpgUTtybVnwoInAcTpk-0ZhzOg09u84,601
3552
3569
  policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_fpg.yaml,sha256=3noKFraBglks9gjxlqKj8fZSm_NFUs49JzBmOgQfZcM,1191
3553
3570
  policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_person.yaml,sha256=CU_Mlc0yyFMi2mOHUxQGz9lR7tkndxCxypD8z1muFzw,437
@@ -5510,7 +5527,7 @@ policyengine_us/tests/policy/baseline/household/demographic/age/is_wa_adult.yaml
5510
5527
  policyengine_us/tests/policy/baseline/household/demographic/age/monthly_age.yaml,sha256=P6X40TifnTdtuG4kAkWhxN53nrh672A12sbsa54hkh4,100
5511
5528
  policyengine_us/tests/policy/baseline/household/demographic/geographic/in_nyc.yaml,sha256=5YCwV7xV3ltHomN3-feZLcIrkMomX1oWvlz0-NAqh9U,320
5512
5529
  policyengine_us/tests/policy/baseline/household/demographic/geographic/lives_in_vehicle.yaml,sha256=TaFZl3mSZl7wcuQvfCy-mmhBCzAfNZ2EXnMAPs0ZErw,585
5513
- policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml,sha256=Is1iFAICyaT7gTxOFth7iFHoAM8uaGWM-Sg-OrpMG3A,192
5530
+ policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml,sha256=8MwFGdWOBNt3tdM3jgDJW3AmEolO1jN-3600ZOjatMQ,527
5514
5531
  policyengine_us/tests/policy/baseline/household/demographic/geographic/state_name.yaml,sha256=wv0gP9Cp0tOAWapOYFCZL2nLPRgs2BmTp9xnelFPFGo,154
5515
5532
  policyengine_us/tests/policy/baseline/household/demographic/geographic/county/county.yaml,sha256=hMg6qJf_W6WkIXPJXPS0orEhIMIfLhcEnsrMJkPUCPk,1344
5516
5533
  policyengine_us/tests/policy/baseline/household/demographic/geographic/county/first_county_in_state.yaml,sha256=cLAyzsr2ztmvZwwPjtR06dc-IK1ZN3krMtKTFe5Wkek,446
@@ -5856,8 +5873,15 @@ policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/young_child/is
5856
5873
  policyengine_us/variables/gov/hhs/medicaid/income/medicaid_income_level.py,sha256=1HU_moE9TJepVWssS9k-4hr_X5XoN-2iYqchIIQL1sU,440
5857
5874
  policyengine_us/variables/gov/hhs/medicaid/income/medicaid_magi.py,sha256=c0S4mXjXzMZVc5JyDx85ikUiPYUH7i58n_Kv7WfxQIY,753
5858
5875
  policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py,sha256=PlZ5aklsZA-JbDjgKaFycg6ask1eU2alVCzBfLz0Ggo,1521
5876
+ policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py,sha256=Ek2bWOIeKglso4eC-z-2YID2iGpWxr1NA2SGlakRj-c,1086
5877
+ policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py,sha256=JJNseI7yfsDBEFuLlsnMDj1cDIk7cf0jG18t9JFSnTY,443
5859
5878
  policyengine_us/variables/gov/hhs/medicare/eligibility/is_medicare_eligible.py,sha256=69w6eUXkfeKSVjWFgdNCTIkkOHRJlMMyMqPiRC_YGNU,1012
5860
5879
  policyengine_us/variables/gov/hhs/medicare/eligibility/months_receiving_social_security_disability.py,sha256=utW5DqF5odq2-GaZk8b6twhXJ3cnSVpCvKl8eacfQQY,251
5880
+ policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py,sha256=ednL28-kjGpVO8HjZkWlPUlIwlEvkIzgdXGCKgElq7M,1281
5881
+ policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py,sha256=uaXupZVOYoGabiAhmU667t4FJqeQH6347cVEeDJGHog,838
5882
+ policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py,sha256=UiEIBQ5eOgJnuDDr0sBAHmbCWvL8vVqV1SiD10RtWy4,568
5883
+ policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py,sha256=QvFYOBXlvYUHyN2gbKUZDia8MbUkqqDB0Np092kk_ns,527
5884
+ policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py,sha256=NOyDTkWqvVE6T8XjgA7x2Vn099j6okIgPZDNXAdfPns,1950
5861
5885
  policyengine_us/variables/gov/hhs/tanf/tanf_fpg.py,sha256=32dAmEnxgvMPbDeI9GLv5ykrihX-DF7OZyeFhyw3p78,1036
5862
5886
  policyengine_us/variables/gov/hhs/tanf/cash/tanf.py,sha256=WyQ73G4lUUYzmIWl0E_Yfqi29t_9rD9Vr6sACXQG49g,914
5863
5887
  policyengine_us/variables/gov/hhs/tanf/cash/tanf_person.py,sha256=le2OSSvI7ZJ7fvvfOWoXQs4VO_rCubUg6wMRxzi91oM,419
@@ -8497,7 +8521,7 @@ policyengine_us/variables/household/demographic/geographic/lives_in_vehicle.py,s
8497
8521
  policyengine_us/variables/household/demographic/geographic/safmr_used_for_hcv.py,sha256=13bT4Px5P1eZwg4G3PPAtfno6Mw9O7wamHe_dtV5Cn8,250
8498
8522
  policyengine_us/variables/household/demographic/geographic/state_code.py,sha256=y0AR7Lk0PnCulq-v40uQAYgGrX82Y7FF5MEGk27Ani4,1322
8499
8523
  policyengine_us/variables/household/demographic/geographic/state_code_str.py,sha256=xTXajj8A7c-316HJUpChvnpjoRvpRmwqQ0-xF7vaH9s,355
8500
- policyengine_us/variables/household/demographic/geographic/state_group.py,sha256=Xxydn99zsB2VTqyCUMB2S0_NrBLgKJU-oKUB67f0Uyo,809
8524
+ policyengine_us/variables/household/demographic/geographic/state_group.py,sha256=qQRPxnIOdtZOBQbjW0ZAo1M-mDyCGysUxTxbm4vNi-0,995
8501
8525
  policyengine_us/variables/household/demographic/geographic/state_group_str.py,sha256=YVapmNgz-QhCZXVfVnU72_G_fijilHLJ1kBDThX9IUE,359
8502
8526
  policyengine_us/variables/household/demographic/geographic/state_name.py,sha256=tfpURwlCmHRJkk4m0_NVPInByKbWY0Upq7sbZUobZIs,1495
8503
8527
  policyengine_us/variables/household/demographic/geographic/tax_unit_state.py,sha256=yQCj1TgJplNL7EGOx59C9av7isbHsyThaWheZMCjSFg,282
@@ -8961,8 +8985,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8961
8985
  policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
8962
8986
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8963
8987
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8964
- policyengine_us-1.448.0.dist-info/METADATA,sha256=Q6cgGebH1chtmiA7A5N5ym_7ilt3Q6Z5m6QIAbEHn0U,1649
8965
- policyengine_us-1.448.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
8966
- policyengine_us-1.448.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8967
- policyengine_us-1.448.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8968
- policyengine_us-1.448.0.dist-info/RECORD,,
8988
+ policyengine_us-1.449.1.dist-info/METADATA,sha256=FuzWLlDDXUWpvffyWJgKt2cjdSQp8PE68PfmrnGSg1U,1649
8989
+ policyengine_us-1.449.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
8990
+ policyengine_us-1.449.1.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8991
+ policyengine_us-1.449.1.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8992
+ policyengine_us-1.449.1.dist-info/RECORD,,