policyengine-us 1.439.0__py3-none-any.whl → 1.458.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.
Files changed (314) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/in_effect.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/threshold.yaml +9 -0
  4. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/amount.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/in_effect.yaml +9 -0
  6. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/rate.yaml +9 -0
  7. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/threshold.yaml +23 -0
  8. policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml +9 -0
  9. policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
  10. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
  11. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  14. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  15. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  16. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  17. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  18. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  19. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  20. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  21. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  22. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  23. policyengine_us/parameters/gov/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
  24. policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
  25. policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
  26. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
  27. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
  28. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
  29. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
  30. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
  31. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
  32. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
  33. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  34. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
  35. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
  36. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
  37. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
  38. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
  39. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
  40. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
  41. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
  42. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
  43. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  44. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
  45. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
  46. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
  47. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
  48. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
  49. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
  50. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
  51. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
  52. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
  53. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
  54. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
  55. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
  56. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
  57. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
  58. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
  59. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
  60. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
  61. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
  62. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
  63. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
  64. policyengine_us/parameters/gov/irs/deductions/qbi/max/reit_ptp_rate.yaml +13 -0
  65. policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
  66. policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
  67. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  68. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  69. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  70. policyengine_us/parameters/gov/states/ca/chhs/medi_cal_enrollment_freeze/in_effect.yaml +12 -0
  71. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/{single.yaml → non_joint.yaml} +2 -2
  72. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/{single.yaml → non_joint.yaml} +2 -2
  73. policyengine_us/parameters/gov/states/il/dhs/aabd/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +3 -5
  74. policyengine_us/parameters/gov/states/il/dhs/tanf/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +2 -2
  75. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  76. policyengine_us/parameters/gov/states/il/hfs/bcc/eligibility/age.yaml +12 -0
  77. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/household_size.yaml +14 -0
  78. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/income_limit.yaml +15 -0
  79. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  80. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  81. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  82. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  83. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  84. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  85. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  86. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  87. policyengine_us/parameters/gov/states/il/hfs/mpe/eligibility/income_limit.yaml +13 -0
  88. policyengine_us/parameters/gov/states/il/hfs/qualified_noncitizen_statuses.yaml +17 -0
  89. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  90. policyengine_us/parameters/gov/states/nj/tax/income/additions.yaml +12 -0
  91. policyengine_us/parameters/gov/states/nj/tax/income/gross_income_sources.yaml +32 -0
  92. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/amount.yaml +4 -0
  93. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_agi.yaml +6 -2
  94. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_child_age.yaml +6 -2
  95. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/parent_max_earnings.yaml +6 -2
  96. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/amount.yaml +4 -0
  97. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/child_age_threshold.yaml +4 -0
  98. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/rate.yaml +4 -0
  99. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/start.yaml +4 -0
  100. policyengine_us/parameters/gov/states/ut/tax/income/credits/earned_income/rate.yaml +4 -0
  101. policyengine_us/parameters/gov/states/ut/tax/income/credits/military_retirement/rate.yaml +26 -0
  102. policyengine_us/parameters/gov/states/ut/tax/income/credits/non_refundable.yaml +5 -0
  103. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/birth_year.yaml +4 -0
  104. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/max.yaml +4 -0
  105. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/rate.yaml +4 -0
  106. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/threshold.yaml +4 -0
  107. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/rate.yaml +4 -0
  108. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/threshold.yaml +4 -0
  109. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/in_effect.yaml +2 -0
  110. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/personal_exemption.yaml +5 -0
  111. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/rate.yaml +5 -1
  112. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/threshold.yaml +9 -0
  113. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/rate.yaml +4 -0
  114. policyengine_us/parameters/gov/states/ut/tax/income/rate.yaml +3 -0
  115. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  116. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  117. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  118. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  119. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  120. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  121. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  122. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  123. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  124. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  125. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  126. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  127. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  128. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  129. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
  130. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -0
  131. policyengine_us/parameters/simulation/disabled_programs.yaml +0 -1
  132. policyengine_us/reforms/local/ny/__init__.py +4 -0
  133. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  134. policyengine_us/reforms/reforms.py +21 -0
  135. policyengine_us/reforms/state_dependent_exemptions/repeal_state_dependent_exemptions.py +1 -1
  136. policyengine_us/reforms/states/de/__init__.py +3 -0
  137. policyengine_us/reforms/states/de/dependent_credit/de_dependent_credit_reform.py +165 -0
  138. policyengine_us/reforms/states/ut/__init__.py +3 -0
  139. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
  140. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/medicaid_enrolled.yaml +105 -0
  141. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  142. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  143. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  144. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  145. policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/qbid/qbid_amount.yaml +75 -3
  146. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
  147. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -0
  148. policyengine_us/tests/policy/baseline/gov/local/ca/la/general_relief/eligible/immigration/la_general_relief_immigration_status_eligible_person.yaml +2 -2
  149. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  150. policyengine_us/tests/policy/baseline/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.yaml +59 -5
  151. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  152. policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.yaml +2 -10
  153. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.yaml +39 -0
  154. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.yaml +95 -0
  155. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.yaml +35 -0
  156. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_eligible.yaml +35 -0
  157. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_level.yaml +27 -0
  158. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/integration.yaml +116 -0
  159. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  160. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  161. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  162. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  163. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  164. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  165. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  166. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  167. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  168. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  169. policyengine_us/tests/policy/baseline/gov/states/il/hfs/il_hfs_immigration_status_eligible.yaml +47 -0
  170. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml +39 -0
  171. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_income_eligible.yaml +23 -0
  172. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml +138 -0
  173. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/eligibility/il_smib_eligible.yaml +88 -0
  174. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/integration.yaml +73 -0
  175. policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/credits/family_size_tax_credit/ky_family_size_tax_credit_rate.yaml +8 -8
  176. policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
  177. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  178. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_a.yaml +2 -2
  179. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_b.yaml +1 -1
  180. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_c.yaml +1 -1
  181. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  182. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/eitc/nj_eitc.yaml +8 -3
  183. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integration.yaml +137 -0
  184. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/taxable_income/nj_agi.yaml +7 -8
  185. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  186. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +82 -0
  187. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +1 -1
  188. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.yaml +89 -0
  189. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.yaml +50 -0
  190. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  191. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  192. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  193. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  194. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  195. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  196. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  197. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  198. policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.yaml +10 -6
  199. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  200. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  201. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  202. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  203. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  204. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  205. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
  206. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
  207. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
  208. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
  209. policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
  210. policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
  211. policyengine_us/tests/policy/baseline/gov/usda/snap/snap_min_allotment.yaml +3 -3
  212. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  213. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  214. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  215. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  216. policyengine_us/tests/policy/baseline/household/expense/health/has_bcc_qualifying_coverage.yaml +12 -0
  217. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  218. policyengine_us/tests/policy/contrib/state_dependent_exemptions/repeal_state_dependent_exemptions.yaml +25 -1
  219. policyengine_us/tests/policy/contrib/states/de/dependent_credit_reform_test.yaml +210 -0
  220. policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
  221. policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
  222. policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_group.py +2 -2
  223. policyengine_us/variables/gov/hhs/medicaid/receives_medicaid.py +17 -0
  224. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  225. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  226. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  227. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  228. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  229. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  230. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  231. policyengine_us/variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qbid_amount.py +16 -6
  232. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
  233. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
  234. policyengine_us/variables/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.py +25 -4
  235. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  236. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  237. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +1 -1
  238. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +1 -1
  239. policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_immigration_status_eligible_person.py +1 -1
  240. policyengine_us/variables/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.py +1 -1
  241. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.py +15 -0
  242. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.py +27 -0
  243. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.py +29 -0
  244. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_eligible.py +40 -0
  245. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_income_eligible.py +18 -0
  246. policyengine_us/variables/gov/states/il/hfs/fpp/il_fpp_income_level.py +29 -0
  247. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  248. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  249. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  250. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  251. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  252. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  253. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  254. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  255. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  256. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  257. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  258. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  259. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  260. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  261. policyengine_us/variables/gov/states/il/hfs/il_hfs_immigration_status_eligible.py +23 -0
  262. policyengine_us/variables/gov/states/il/hfs/mpe/eligibility/il_mpe_income_eligible.py +15 -0
  263. policyengine_us/variables/gov/states/il/hfs/mpe/il_mpe_eligible.py +15 -0
  264. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_categorical_eligible.py +26 -0
  265. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_eligible.py +28 -0
  266. policyengine_us/variables/gov/states/il/hfs/smib/il_smib.py +21 -0
  267. policyengine_us/variables/gov/states/il/hfs/smib/il_smib_person.py +24 -0
  268. policyengine_us/variables/gov/states/ky/tax/income/credits/family_size_credit/ky_family_size_tax_credit_rate.py +1 -1
  269. policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
  270. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  271. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_additions.py +8 -3
  272. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_gross_income.py +17 -0
  273. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_total_income.py +12 -6
  274. policyengine_us/variables/gov/states/nj/tax/income/credits/eitc/nj_eitc.py +7 -1
  275. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  276. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.py +20 -0
  277. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.py +22 -0
  278. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  279. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  280. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  281. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  282. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  283. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  284. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  285. policyengine_us/variables/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.py +1 -1
  286. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  287. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  288. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  289. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  290. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +9 -0
  291. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  292. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  293. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +6 -0
  294. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
  295. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
  296. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
  297. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
  298. policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
  299. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  300. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  301. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  302. policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
  303. policyengine_us/variables/household/expense/health/has_bcc_qualifying_coverage.py +16 -0
  304. policyengine_us/variables/household/income/person/dividends/qualified_reit_and_ptp_income.py +1 -1
  305. policyengine_us/variables/household/income/spm_unit/spm_unit_tenure_type.py +17 -0
  306. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/METADATA +2 -2
  307. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/RECORD +312 -138
  308. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/WHEEL +1 -1
  309. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  310. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +0 -57
  311. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  312. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  313. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/entry_points.txt +0 -0
  314. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,118 @@
1
+ from policyengine_us.model_api import *
2
+ from policyengine_core.periods import period as period_
3
+
4
+
5
+ def create_ut_refundable_eitc() -> Reform:
6
+ class ut_has_qualifying_child_for_refundable_eitc(Variable):
7
+ value_type = bool
8
+ entity = TaxUnit
9
+ label = "Utah tax unit has qualifying child for refundable EITC"
10
+ defined_for = StateCode.UT
11
+ definition_period = YEAR
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ person = tax_unit.members
15
+ p = parameters(period).gov.contrib.states.ut.eitc
16
+ age = person("age", period)
17
+ is_dependent = person("is_tax_unit_dependent", period)
18
+ is_qualifying_child = (age <= p.max_age) & is_dependent
19
+ return tax_unit.any(is_qualifying_child)
20
+
21
+ class ut_refundable_eitc(Variable):
22
+ value_type = float
23
+ entity = TaxUnit
24
+ label = "Utah refundable EITC"
25
+ unit = USD
26
+ definition_period = YEAR
27
+ defined_for = "ut_has_qualifying_child_for_refundable_eitc"
28
+
29
+ adds = ["ut_eitc"]
30
+
31
+ class ut_eitc(Variable):
32
+ value_type = float
33
+ entity = TaxUnit
34
+ label = "Utah Earned Income Tax Credit"
35
+ unit = USD
36
+ documentation = "This credit is a fraction of the federal EITC."
37
+ definition_period = YEAR
38
+ defined_for = StateCode.UT
39
+ reference = "https://le.utah.gov/xcode/Title59/Chapter10/59-10-S1044.html?v=C59-10-S1044_2022050420220504"
40
+
41
+ def formula(tax_unit, period, parameters):
42
+ p = parameters(
43
+ period
44
+ ).gov.states.ut.tax.income.credits.earned_income
45
+ federal_eitc = tax_unit("eitc", period)
46
+ return p.rate * federal_eitc
47
+
48
+ class ut_non_refundable_eitc(Variable):
49
+ value_type = float
50
+ entity = TaxUnit
51
+ label = "Utah non-refundable EITC"
52
+ unit = USD
53
+ definition_period = YEAR
54
+ defined_for = StateCode.UT
55
+
56
+ adds = ["ut_eitc"]
57
+ subtracts = ["ut_refundable_eitc"]
58
+
59
+ class ut_non_refundable_credits(Variable):
60
+ value_type = float
61
+ entity = TaxUnit
62
+ label = "Utah non-refundable tax credits"
63
+ unit = USD
64
+ definition_period = YEAR
65
+ defined_for = StateCode.UT
66
+
67
+ adds = [
68
+ "ut_non_refundable_eitc",
69
+ "ut_retirement_credit",
70
+ "ut_ss_benefits_credit",
71
+ "ut_at_home_parent_credit",
72
+ "ut_ctc",
73
+ ]
74
+
75
+ class ut_refundable_credits(Variable):
76
+ value_type = float
77
+ entity = TaxUnit
78
+ label = "Utah refundable credits"
79
+ unit = USD
80
+ definition_period = YEAR
81
+ defined_for = StateCode.UT
82
+
83
+ adds = ["ut_refundable_eitc"]
84
+
85
+ class reform(Reform):
86
+ def apply(self):
87
+ self.update_variable(ut_has_qualifying_child_for_refundable_eitc)
88
+ self.update_variable(ut_refundable_eitc)
89
+ self.update_variable(ut_non_refundable_eitc)
90
+ self.update_variable(ut_eitc)
91
+ self.update_variable(ut_non_refundable_credits)
92
+ self.update_variable(ut_refundable_credits)
93
+
94
+ return reform
95
+
96
+
97
+ def create_ut_refundable_eitc_reform(parameters, period, bypass: bool = False):
98
+ if bypass:
99
+ return create_ut_refundable_eitc()
100
+
101
+ p = parameters.gov.contrib.states.ut.eitc
102
+
103
+ reform_active = False
104
+ current_period = period_(period)
105
+
106
+ for i in range(5):
107
+ if p(current_period).in_effect:
108
+ reform_active = True
109
+ break
110
+ current_period = current_period.offset(1, "year")
111
+
112
+ if reform_active:
113
+ return create_ut_refundable_eitc()
114
+ else:
115
+ return None
116
+
117
+
118
+ ut_refundable_eitc = create_ut_refundable_eitc_reform(None, None, bypass=True)
@@ -0,0 +1,105 @@
1
+ # Integration tests for medicaid_enrolled variable
2
+ # Tests compare CA undocumented immigrant eligibility before/after 2026 rule change
3
+ # Existing enrollees retain coverage by setting receives_medicaid: true as input
4
+
5
+ - name: Case 1, undocumented adult in CA 2026 existing enrollee retains coverage.
6
+ period: 2026
7
+ input:
8
+ people:
9
+ person1:
10
+ age: 35
11
+ employment_income: 15_000
12
+ immigration_status: UNDOCUMENTED
13
+ receives_medicaid: true
14
+ tax_units:
15
+ tax_unit:
16
+ members: [person1]
17
+ spm_units:
18
+ spm_unit:
19
+ members: [person1]
20
+ households:
21
+ household:
22
+ members: [person1]
23
+ state_code: CA
24
+ output:
25
+ # Existing enrollees retain coverage via continuous coverage provision
26
+ # receives_medicaid: true signals this person was enrolled before the freeze
27
+ receives_medicaid: [true]
28
+ is_ca_medicaid_immigration_status_eligible: [true]
29
+ is_medicaid_eligible: [true]
30
+ medicaid_enrolled: [true]
31
+ medicaid: [6_439.11]
32
+
33
+ - name: Case 2, undocumented adult in CA 2024 enrolled and eligible.
34
+ period: 2024
35
+ input:
36
+ people:
37
+ person1:
38
+ age: 35
39
+ employment_income: 15_000
40
+ immigration_status: UNDOCUMENTED
41
+ receives_medicaid: true
42
+ tax_units:
43
+ tax_unit:
44
+ members: [person1]
45
+ spm_units:
46
+ spm_unit:
47
+ members: [person1]
48
+ households:
49
+ household:
50
+ members: [person1]
51
+ state_code: CA
52
+ output:
53
+ # In 2024, undocumented adults age 26-49 are eligible in CA
54
+ is_medicaid_eligible: [true]
55
+
56
+ - name: Case 3, undocumented adult in CA 2026 not existing enrollee.
57
+ period: 2026
58
+ input:
59
+ people:
60
+ person1:
61
+ age: 35
62
+ employment_income: 15_000
63
+ immigration_status: UNDOCUMENTED
64
+ # receives_medicaid defaults to false - new applicant blocked by freeze
65
+ tax_units:
66
+ tax_unit:
67
+ members: [person1]
68
+ spm_units:
69
+ spm_unit:
70
+ members: [person1]
71
+ households:
72
+ household:
73
+ members: [person1]
74
+ state_code: CA
75
+ output:
76
+ # New applicants are blocked by the 2026 enrollment freeze
77
+ receives_medicaid: [false]
78
+ is_ca_medicaid_immigration_status_eligible: [false]
79
+ is_medicaid_eligible: [false]
80
+ medicaid_enrolled: [false]
81
+
82
+ - name: Case 4, undocumented adult in CA 2025 computed enrollment.
83
+ period: 2025
84
+ input:
85
+ people:
86
+ person1:
87
+ age: 35
88
+ employment_income: 15_000
89
+ immigration_status: UNDOCUMENTED
90
+ # receives_medicaid not set - using computed enrollment
91
+ tax_units:
92
+ tax_unit:
93
+ members: [person1]
94
+ spm_units:
95
+ spm_unit:
96
+ members: [person1]
97
+ households:
98
+ household:
99
+ members: [person1]
100
+ state_code: CA
101
+ output:
102
+ # In 2025, undocumented adults are still eligible in CA
103
+ is_medicaid_eligible: [true]
104
+ medicaid_enrolled: [true]
105
+ takes_up_medicaid_if_eligible: [true]
@@ -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
@@ -27,12 +27,14 @@
27
27
  w2_wages_from_qualified_business: 8_000
28
28
  unadjusted_basis_qualified_property: 50_000
29
29
  taxable_income_less_qbid: 400_100
30
+ qualified_reit_and_ptp_income: 1_000
30
31
  business_is_sstb: False
31
32
  filing_status: JOINT
32
33
  output:
33
- # Calculation: QBI component is $8,800. REIT component is 0.20 * 1k = $200.
34
- # Total = $8,800
35
- qbid_amount: 8_800
34
+ # Calculation: QBI component is $8,800 (same as Entity 1).
35
+ # REIT/PTP component = 0.20 * 1k = $200.
36
+ # Total = $8,800 + $200 = $9,000.
37
+ qbid_amount: 9_000
36
38
 
37
39
  - name: Non-SSTB above phase-in range (Entity 2 from Appendix A)
38
40
  period: 2022
@@ -127,3 +129,73 @@
127
129
  # The final taxable income cap (at 24k) is applied at the
128
130
  # tax-unit level, outside the scope of this business-level function.
129
131
  qbid_amount: 40_000
132
+
133
+ # REIT/PTP Income Tests - Form 8995 Lines 6-9
134
+ # REIT/PTP income gets 20% deduction WITHOUT W-2 wage or UBIA limitations
135
+
136
+ - name: REIT/PTP only - no QBI (Form 8995 simplified path)
137
+ period: 2022
138
+ input:
139
+ qualified_business_income: 0
140
+ w2_wages_from_qualified_business: 0
141
+ unadjusted_basis_qualified_property: 0
142
+ taxable_income_less_qbid: 100_000
143
+ qualified_reit_and_ptp_income: 10_000
144
+ business_is_sstb: False
145
+ filing_status: SINGLE
146
+ output:
147
+ # No QBI, so QBI component = $0.
148
+ # REIT/PTP component = 0.20 * 10k = $2,000.
149
+ # Total = $2,000.
150
+ qbid_amount: 2_000
151
+
152
+ - name: REIT/PTP with SSTB - REIT/PTP not affected by SSTB phase-out
153
+ period: 2022
154
+ input:
155
+ qualified_business_income: 110_000
156
+ w2_wages_from_qualified_business: 60_000
157
+ unadjusted_basis_qualified_property: 6_000
158
+ taxable_income_less_qbid: 460_100
159
+ qualified_reit_and_ptp_income: 50_000
160
+ business_is_sstb: True
161
+ filing_status: JOINT
162
+ output:
163
+ # SSTB above phase-in range, so QBI component = $0 (fully phased out).
164
+ # REIT/PTP is NOT subject to SSTB rules, so:
165
+ # REIT/PTP component = 0.20 * 50k = $10,000.
166
+ # Total = $0 + $10,000 = $10,000.
167
+ qbid_amount: 10_000
168
+
169
+ - name: REIT/PTP above wage limitation - no wage cap applies
170
+ period: 2022
171
+ input:
172
+ qualified_business_income: 0
173
+ w2_wages_from_qualified_business: 0
174
+ unadjusted_basis_qualified_property: 0
175
+ taxable_income_less_qbid: 500_000
176
+ qualified_reit_and_ptp_income: 100_000
177
+ business_is_sstb: False
178
+ filing_status: JOINT
179
+ output:
180
+ # No QBI, so QBI component = $0.
181
+ # Even though taxable income is above threshold and W-2 wages are $0,
182
+ # REIT/PTP is NOT subject to W-2 wage limitations.
183
+ # REIT/PTP component = 0.20 * 100k = $20,000.
184
+ qbid_amount: 20_000
185
+
186
+ - name: Combined QBI and REIT/PTP - below threshold
187
+ period: 2024
188
+ input:
189
+ qualified_business_income: 50_000
190
+ w2_wages_from_qualified_business: 30_000
191
+ unadjusted_basis_qualified_property: 0
192
+ taxable_income_less_qbid: 150_000
193
+ qualified_reit_and_ptp_income: 25_000
194
+ business_is_sstb: False
195
+ filing_status: SINGLE
196
+ output:
197
+ # Below threshold ($191,950 single in 2024), so no W-2/UBIA limit.
198
+ # QBI component = 0.20 * 50k = $10,000.
199
+ # REIT/PTP component = 0.20 * 25k = $5,000.
200
+ # Total = $15,000.
201
+ qbid_amount: 15_000
@@ -0,0 +1,68 @@
1
+ - name: No phase-out, no kiddie tax
2
+ period: 2022
3
+ input:
4
+ amt_income: 200_000
5
+ amt_kiddie_tax_applies: false
6
+ filer_adjusted_earnings: 400_000
7
+ filing_status: SINGLE
8
+ output:
9
+ # Base exemption for SINGLE in 2022 is 75,900
10
+ # income_excess = max(0, 200,000 - 539,900) = 0
11
+ # No phase-out, full exemption of 75,900
12
+ amt_exemption: 75_900
13
+
14
+ - name: No phase-out, kiddie tax applies with low earnings
15
+ period: 2022
16
+ input:
17
+ amt_income: 200_000
18
+ amt_kiddie_tax_applies: true
19
+ filer_adjusted_earnings: 10_000
20
+ filing_status: SINGLE
21
+ output:
22
+ # Base exemption for SINGLE in 2022 is 75,900
23
+ # reduced_exemption = 75,900 (no phase-out)
24
+ # exemption_cap = 10,000 + 8,200 (child amount) = 18,200
25
+ # amt_exemption = min(75,900, 18,200) = 18,200
26
+ amt_exemption: 18_200
27
+
28
+ - name: Full phase-out at high income
29
+ period: 2022
30
+ input:
31
+ amt_income: 1_000_000
32
+ amt_kiddie_tax_applies: false
33
+ filer_adjusted_earnings: 400_000
34
+ filing_status: SINGLE
35
+ output:
36
+ # Base exemption for SINGLE in 2022 is 75,900
37
+ # income_excess = max(0, 1,000,000 - 539,900) = 460,100
38
+ # exemption_phase_out = 0.25 * 460,100 = 115,025
39
+ # reduced_exemption = max(0, 75,900 - 115,025) = 0
40
+ amt_exemption: 0
41
+
42
+ - name: Partial phase-out
43
+ period: 2022
44
+ input:
45
+ amt_income: 600_000
46
+ amt_kiddie_tax_applies: false
47
+ filer_adjusted_earnings: 400_000
48
+ filing_status: SINGLE
49
+ output:
50
+ # Base exemption for SINGLE in 2022 is 75,900
51
+ # income_excess = max(0, 600,000 - 539,900) = 60,100
52
+ # exemption_phase_out = 0.25 * 60,100 = 15,025
53
+ # reduced_exemption = max(0, 75,900 - 15,025) = 60,875
54
+ amt_exemption: 60_875
55
+
56
+ - name: Joint filers, no phase-out
57
+ period: 2022
58
+ input:
59
+ amt_income: 500_000
60
+ amt_kiddie_tax_applies: false
61
+ filer_adjusted_earnings: 400_000
62
+ filing_status: JOINT
63
+ output:
64
+ # Base exemption for JOINT in 2022 is 118,100
65
+ # Phase-out starts at 1,079,800
66
+ # income_excess = max(0, 500,000 - 1,079,800) = 0
67
+ # Full exemption of 118,100
68
+ amt_exemption: 118_100
@@ -0,0 +1,26 @@
1
+ # Integration test from GitHub issue #1279
2
+ # Validates AMT calculation against TAXSIM35
3
+ - name: Issue 1279 - Joint filers with employment income and capital gains
4
+ period: 2021
5
+ absolute_error_margin: 1
6
+ input:
7
+ people:
8
+ person1:
9
+ age: 55
10
+ employment_income: 177_000
11
+ long_term_capital_gains: 100_000
12
+ person2:
13
+ age: 58
14
+ employment_income: 176_000
15
+ tax_units:
16
+ tax_unit:
17
+ members: [person1, person2]
18
+ households:
19
+ household:
20
+ members: [person1, person2]
21
+ state_code: TX
22
+ output:
23
+ # TAXSIM35 and USI-Tax-Analyzer both produce zero AMT for this case
24
+ alternative_minimum_tax: 0
25
+ # Expected income tax from TAXSIM35
26
+ income_tax: 85_538
@@ -6,11 +6,11 @@
6
6
  output:
7
7
  la_general_relief_immigration_status_eligible_person: true
8
8
 
9
- - name: Residents are eligible
9
+ - name: Legal Permanent Residents are eligible
10
10
  period: 2022
11
11
  input:
12
12
  in_la: true
13
- immigration_status: RESIDENT
13
+ immigration_status: LEGAL_PERMANENT_RESIDENT
14
14
  output:
15
15
  la_general_relief_immigration_status_eligible_person: true
16
16
 
@@ -197,3 +197,38 @@
197
197
  state_fips: 5
198
198
  output:
199
199
  ar_income_tax: 1_085
200
+
201
+ - name: 3864-AR.yaml
202
+ absolute_error_margin: 2
203
+ period: 2024
204
+ input:
205
+ people:
206
+ person1:
207
+ age: 40
208
+ employment_income: 93904.383
209
+ ssi: 0
210
+ wic: 0
211
+ head_start: 0
212
+ early_head_start: 0
213
+ commodity_supplemental_food_program: 0
214
+ taxable_interest_income: 2514.2869
215
+ is_tax_unit_head: true
216
+ tax_units:
217
+ tax_unit:
218
+ members: [person1]
219
+ premium_tax_credit: 0
220
+ local_income_tax: 0
221
+ state_sales_tax: 0
222
+ spm_units:
223
+ spm_unit:
224
+ members: [person1]
225
+ snap: 0
226
+ tanf: 0
227
+ free_school_meals: 0
228
+ reduced_price_school_meals: 0
229
+ households:
230
+ household:
231
+ members: [person1]
232
+ state_fips: 5
233
+ output:
234
+ ar_income_tax: 3_410