policyengine-us 1.439.0__py3-none-any.whl → 1.449.6__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 (214) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
  4. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
  5. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  6. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  7. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  8. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  9. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  10. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  11. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  14. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  15. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  16. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  17. policyengine_us/parameters/gov/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
  18. policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
  19. policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
  20. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
  21. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
  22. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
  23. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
  24. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
  25. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
  26. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
  27. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  28. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
  29. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
  30. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
  31. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
  32. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
  33. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
  34. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
  35. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
  36. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
  37. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  38. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
  39. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
  40. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
  41. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
  42. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
  43. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
  44. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
  45. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
  46. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
  47. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
  48. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
  49. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
  50. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
  51. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
  52. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
  53. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
  54. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
  55. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
  56. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
  57. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
  58. policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
  59. policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
  60. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  61. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  62. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  63. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/{single.yaml → non_joint.yaml} +2 -2
  64. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/{single.yaml → non_joint.yaml} +2 -2
  65. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  66. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  67. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  68. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  69. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  70. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  71. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  72. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +21 -0
  73. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  74. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  75. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  76. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  77. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  78. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  79. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  80. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  81. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  82. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  83. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  84. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  85. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  86. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  87. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  88. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  89. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  90. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
  91. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -0
  92. policyengine_us/parameters/simulation/disabled_programs.yaml +0 -1
  93. policyengine_us/reforms/local/ny/__init__.py +4 -0
  94. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  95. policyengine_us/reforms/reforms.py +14 -0
  96. policyengine_us/reforms/states/ut/__init__.py +3 -0
  97. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
  98. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  99. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  100. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  101. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  102. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
  103. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -0
  104. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  105. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  106. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  107. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  108. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  109. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  110. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  111. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  112. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +47 -0
  113. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  114. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  115. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  116. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  117. policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
  118. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  119. 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
  120. 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
  121. 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
  122. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  123. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  124. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +82 -0
  125. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  126. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  127. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  128. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  129. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  130. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  131. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  132. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  133. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  134. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  135. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  136. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  137. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  138. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  139. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
  140. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
  141. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
  142. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
  143. policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
  144. policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
  145. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  146. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  147. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  148. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  149. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  150. policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
  151. policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
  152. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  153. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  154. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  155. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  156. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  157. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  158. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  159. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
  160. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
  161. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  162. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  163. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +1 -1
  164. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +1 -1
  165. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  166. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  167. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  168. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  169. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  170. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  171. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.py +26 -0
  172. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  173. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  174. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  175. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  176. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  177. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  178. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  179. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  180. policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
  181. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  182. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  183. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  184. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  185. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  186. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  187. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  188. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  189. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  190. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  191. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  192. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  193. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  194. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +9 -0
  195. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  196. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  197. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +6 -0
  198. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
  199. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
  200. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
  201. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
  202. policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
  203. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  204. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  205. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  206. policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
  207. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/METADATA +1 -1
  208. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/RECORD +213 -90
  209. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/WHEEL +1 -1
  210. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  211. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  212. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  213. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/entry_points.txt +0 -0
  214. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/licenses/LICENSE +0 -0
@@ -15,7 +15,7 @@ class co_care_worker_credit_eligible(Variable):
15
15
  joint = tax_unit("tax_unit_is_joint", period)
16
16
  agi = tax_unit("adjusted_gross_income", period)
17
17
  income_limit = where(
18
- joint, p.income_limit.joint, p.income_limit.single
18
+ joint, p.income_limit.joint, p.income_limit.non_joint
19
19
  )
20
20
  income_eligible = agi <= income_limit
21
21
  eligible_care_worker_present = (
@@ -0,0 +1,34 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_countable_assets(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = Person
8
+ label = "Illinois Health Benefits for Workers with Disabilities countable assets"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.381",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ # HBWD exempt assets per § 120.381:
19
+ # - Primary residence (homestead)
20
+ # - Personal effects and household goods
21
+ # - One vehicle (full exemption if essential, $4,500 if not)
22
+ # - Life insurance ≤$1,500
23
+ # - Burial resources
24
+ # - Retirement accounts inaccessible before age 59.5
25
+ # - Medical savings accounts (26 USC 220)
26
+ # Currently only implementing vehicle exemption
27
+ # § 120.381 and § 113.141 have identical vehicle exemption rules,
28
+ # so using AABD vehicle calculation
29
+ cash_assets = person.spm_unit("spm_unit_cash_assets", period.this_year)
30
+ vehicle_value = person.spm_unit(
31
+ "il_aabd_countable_vehicle_value", period
32
+ )
33
+ # TODO: Implement homestead, retirement account, burial, and other exemptions
34
+ return cash_assets + vehicle_value
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_age_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = (
8
+ "Illinois Health Benefits for Workers with Disabilities age eligible"
9
+ )
10
+ definition_period = MONTH
11
+ reference = (
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
19
+ age = person("monthly_age", period)
20
+ return p.age.calc(age)
@@ -0,0 +1,21 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_asset_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = (
8
+ "Illinois Health Benefits for Workers with Disabilities asset eligible"
9
+ )
10
+ definition_period = MONTH
11
+ reference = (
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
19
+ # Check countable assets against $25,000 limit
20
+ countable_assets = person("il_hbwd_countable_assets", period)
21
+ return countable_assets <= p.asset.limit
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_disability_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities disability eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ # Must meet Social Security Administration's definition of disability
17
+ is_ssi_disabled = person("is_ssi_disabled", period)
18
+ # Or currently receiving SSDI
19
+ receives_ssdi = person("social_security_disability", period) > 0
20
+ return is_ssi_disabled | receives_ssdi
@@ -0,0 +1,33 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
12
+ "https://hfs.illinois.gov/medicalprograms/hbwd.html",
13
+ )
14
+ defined_for = StateCode.IL
15
+
16
+ def formula(person, period, parameters):
17
+ age_eligible = person("il_hbwd_age_eligible", period)
18
+ disability_eligible = person("il_hbwd_disability_eligible", period)
19
+ employment_eligible = person("il_hbwd_employment_eligible", period)
20
+ income_eligible = person("il_hbwd_income_eligible", period)
21
+ asset_eligible = person("il_hbwd_asset_eligible", period)
22
+ immigration_eligible = person(
23
+ "il_hbwd_immigration_status_eligible", period
24
+ )
25
+
26
+ return (
27
+ age_eligible
28
+ & disability_eligible
29
+ & employment_eligible
30
+ & income_eligible
31
+ & asset_eligible
32
+ & immigration_eligible
33
+ )
@@ -0,0 +1,25 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_employment_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities employment eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ # Per § 120.510(l)(1), employment is verified by current payment
17
+ # under FICA or IMRF. We use earned income as a proxy for
18
+ # employment with FICA contributions.
19
+ #
20
+ # Not currently modeled:
21
+ # - § 120.510(l)(2)(A): Future employment exception (60 days)
22
+ # - § 120.510(l)(2)(B): Medical inability grace period (90 days)
23
+ # - § 120.510(l)(2)(C): Job loss grace period (30 days)
24
+ earned_income = person("il_hbwd_gross_earned_income", period)
25
+ return earned_income > 0
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_immigration_status_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities immigration status eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.310",
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
17
+ immigration_status = person("immigration_status", period)
18
+ is_citizen = (
19
+ immigration_status == immigration_status.possible_values.CITIZEN
20
+ )
21
+ immigration_status_str = immigration_status.decode_to_str()
22
+ has_qualifying_status = np.isin(
23
+ immigration_status_str,
24
+ p.qualified_noncitizen_statuses,
25
+ )
26
+ return has_qualifying_status | is_citizen
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities income eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
17
+ # Income limit is 350% of FPL
18
+ fpg = person.spm_unit("spm_unit_fpg", period)
19
+ income_limit = fpg * p.income.limit
20
+ # Check household countable income against limit
21
+ # Per § 120.510(f), counts individual + spouse income
22
+ countable_income = person.spm_unit("il_hbwd_countable_income", period)
23
+ return countable_income <= income_limit
@@ -0,0 +1,17 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Illinois Health Benefits for Workers with Disabilities"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd.html",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/about.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ adds = ["il_hbwd_person"]
@@ -0,0 +1,24 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_person(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities per person"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd.html",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ )
14
+ defined_for = "il_hbwd_eligible"
15
+
16
+ def formula(person, period, parameters):
17
+ # HBWD provides comprehensive healthcare coverage
18
+ # Could model as:
19
+ # 1. Negative premium (cost to individual)
20
+ # 2. Imputed healthcare value minus premium
21
+ # 3. Healthcare coverage indicator
22
+ # For now, return negative premium as cost
23
+ premium = person("il_hbwd_premium", period)
24
+ return -premium
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities monthly premium"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/premiums.html",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ )
14
+ defined_for = "il_hbwd_eligible"
15
+
16
+ def formula(person, period, parameters):
17
+ p = parameters(period).gov.states.il.hfs.hbwd.premium
18
+
19
+ earned = person("il_hbwd_countable_earned_income", period)
20
+ unearned = person("il_hbwd_countable_unearned_income", period)
21
+
22
+ # Lookup premium components from bracket parameters
23
+ return p.earned.calc(earned) + p.unearned.calc(unearned)
@@ -0,0 +1,24 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_countable_earned_income(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = Person
8
+ label = "Illinois Health Benefits for Workers with Disabilities countable earned income"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.360",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.362",
13
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.370",
14
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
15
+ )
16
+ defined_for = StateCode.IL
17
+
18
+ adds = ["il_aabd_earned_income_after_exemption_person"]
19
+ # HBWD uses the same earned income calculation as AABD per
20
+ # 89 Ill. Admin. Code § 120.510(i) referencing § 120.362 and § 120.370
21
+ # § 120.362 and § 113.120 have identical exemption amounts:
22
+ # - $25 flat exemption (§ 120.362(a) / § 113.120(a))
23
+ # - $20 + 50% of next $60 for disabled workers (§ 120.362(b)(1) / § 113.120(b))
24
+ # § 120.370 references AABD MANG work expense deductions
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_gross_earned_income(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = Person
8
+ label = "Illinois Health Benefits for Workers with Disabilities gross earned income"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.360",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ )
14
+ defined_for = StateCode.IL
15
+
16
+ adds = "gov.states.il.hfs.hbwd.eligibility.income.sources.earned"
@@ -0,0 +1,21 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_countable_income(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = SPMUnit
8
+ label = "Illinois Health Benefits for Workers with Disabilities countable income"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
12
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
13
+ )
14
+ defined_for = "is_tax_unit_head_or_spouse"
15
+
16
+ adds = [
17
+ "il_aabd_earned_income_after_exemption_person",
18
+ "il_hbwd_countable_unearned_income",
19
+ ]
20
+ # Per § 120.510(f), count income of individual AND spouse
21
+ # Adds automatically sums across SPM unit members
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_countable_unearned_income(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = Person
8
+ label = "Illinois Health Benefits for Workers with Disabilities countable unearned income"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.330",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ )
14
+ defined_for = StateCode.IL
15
+
16
+ adds = "gov.states.il.hfs.hbwd.eligibility.income.sources.unearned"
@@ -6,6 +6,7 @@ class ma_state_supplement(Variable):
6
6
  entity = Person
7
7
  label = "Massachusetts State Supplement payment amount"
8
8
  definition_period = YEAR
9
+ defined_for = StateCode.MA
9
10
  exhaustive_parameter_dependencies = "gov.states.ma.dta.ssp"
10
11
  reference = (
11
12
  "https://www.law.cornell.edu/regulations/massachusetts/106-CMR-327-330"
@@ -15,11 +15,12 @@ class mt_itemized_deductions_indiv(Variable):
15
15
  defined_for = StateCode.MT
16
16
 
17
17
  def formula(person, period, parameters):
18
- p = parameters(period).gov.irs.deductions
18
+ p = parameters(period).gov.states.mt.tax.income.deductions.itemized
19
19
  # Since we only compute the federal charitable deduction at the tax unit level,
20
20
  # we will split the value between each spouse
21
21
  charitable_deduction = (
22
- person.tax_unit("charitable_deduction", period) * 0.5
22
+ person.tax_unit("charitable_deduction", period)
23
+ * p.spouse_allocation_rate
23
24
  )
24
25
  head_or_spouse = person("is_tax_unit_head_or_spouse", period)
25
26
  # The interest deduction is the sum of mortagage and investment interest expenses
@@ -13,6 +13,10 @@ class oh_joint_filing_credit_qualifying_income(Variable):
13
13
  )
14
14
  defined_for = StateCode.OH
15
15
 
16
- adds = ["oh_agi_person"]
17
-
18
- subtracts = ["oh_joint_filing_credit_agi_subtractions"]
16
+ def formula(person, period, parameters):
17
+ agi = person("oh_agi_person", period)
18
+ # Prevent negative subtractions from acting as additions
19
+ subtractions = max_(
20
+ 0, person("oh_joint_filing_credit_agi_subtractions", period)
21
+ )
22
+ return agi - subtractions
@@ -0,0 +1,22 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf_payment_standard(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Washington TANF payment standard"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://app.leg.wa.gov/wac/default.aspx?cite=388-478-0020"
11
+ defined_for = StateCode.WA
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ # Get payment standard by family size per WAC 388-478-0020
15
+ p = parameters(period).gov.states.wa.dshs.tanf
16
+
17
+ # Get assistance unit size, capped at maximum table value (10)
18
+ size = spm_unit("spm_unit_size", period)
19
+ size_capped = min_(size, p.maximum_family_size)
20
+
21
+ # Look up payment standard for this family size
22
+ return p.payment_standard.amount[size_capped]
@@ -0,0 +1,42 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Washington TANF eligible"
8
+ definition_period = MONTH
9
+ reference = "https://app.leg.wa.gov/wac/default.aspx?cite=388-400-0005"
10
+ defined_for = StateCode.WA
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ person = spm_unit.members
14
+
15
+ # Must meet demographic requirements (minor child with deprived parent
16
+ # OR pregnant woman)
17
+ # Per WAC 388-400-0005, eligibility follows federal TANF demographic rules
18
+ demographic_eligible = spm_unit("is_demographic_tanf_eligible", period)
19
+
20
+ # Must have at least one U.S. citizen or qualified immigrant
21
+ # Per WAC 388-424-0001, follows federal immigration eligibility
22
+ has_citizen = spm_unit.any(
23
+ person("is_citizen_or_legal_immigrant", period)
24
+ )
25
+
26
+ # Must meet income eligibility (gross earned income < limit)
27
+ # Per WAC 388-478-0035
28
+ income_eligible = spm_unit("wa_tanf_income_eligible", period)
29
+
30
+ # Must meet resource eligibility (countable resources <= $6,000)
31
+ # Per WAC 388-470-0045
32
+ resources_eligible = spm_unit(
33
+ "wa_tanf_resources_eligible", period.this_year
34
+ )
35
+
36
+ # All requirements must be met
37
+ return (
38
+ demographic_eligible
39
+ & has_citizen
40
+ & income_eligible
41
+ & resources_eligible
42
+ )
@@ -0,0 +1,31 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Washington TANF income eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://app.leg.wa.gov/wac/default.aspx?cite=388-478-0035",
11
+ "https://app.leg.wa.gov/wac/default.aspx?cite=388-450-0170",
12
+ )
13
+ defined_for = StateCode.WA
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ # Get gross earned income from federal TANF variable
17
+ gross_earned = add(spm_unit, period, ["tanf_gross_earned_income"])
18
+
19
+ # Get maximum earned income limits by family size
20
+ # Per WAC 388-478-0035, these limits "include the $500 family
21
+ # earnings deduction" in their calculation
22
+ p = parameters(period).gov.states.wa.dshs.tanf
23
+
24
+ # Get household size, capped at maximum for which limits are defined
25
+ size = spm_unit("spm_unit_size", period)
26
+ size_capped = min_(size, p.maximum_family_size)
27
+
28
+ # Gross earned income must be at or below the limit
29
+ # Note: Unlike some states, WA tests GROSS income (not countable)
30
+ # against published limits that already factor in the $500 disregard
31
+ return gross_earned <= p.income.limit[size_capped]
@@ -0,0 +1,33 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf_countable_earned_income(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Washington TANF countable earned income"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://app.leg.wa.gov/wac/default.aspx?cite=388-450-0170"
11
+ defined_for = StateCode.WA
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ # Get gross earned income from federal TANF variable
15
+ gross_earned = add(spm_unit, period, ["tanf_gross_earned_income"])
16
+
17
+ # Apply earned income disregard per WAC 388-450-0170:
18
+ # "We start by deducting the first $500 of the total household's
19
+ # earned income. We then subtract 50% of the remaining monthly
20
+ # gross earned income."
21
+ p = parameters(
22
+ period
23
+ ).gov.states.wa.dshs.tanf.income.deductions.earned_income_disregard
24
+
25
+ # Step 1: Deduct flat $500 family earnings disregard
26
+ remainder = max_(gross_earned - p.amount, 0)
27
+
28
+ # Step 2: Subtract (disregard) 50% of remaining income
29
+ # Per WAC 388-450-0170(3): "subtract 50% of the remaining...income"
30
+ amount_disregarded = remainder * p.percentage_disregarded
31
+
32
+ # Countable earned income = remainder - amount disregarded
33
+ return remainder - amount_disregarded
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf_countable_income(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Washington TANF countable income"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://app.leg.wa.gov/wac/default.aspx?cite=388-450-0165"
11
+ defined_for = StateCode.WA
12
+
13
+ adds = [
14
+ "wa_tanf_countable_earned_income",
15
+ "tanf_gross_unearned_income",
16
+ ]
@@ -0,0 +1,34 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class wa_tanf(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Washington Temporary Assistance for Needy Families (TANF)"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://app.leg.wa.gov/wac/default.aspx?cite=388-478-0020",
12
+ "https://app.leg.wa.gov/wac/default.aspx?cite=388-450-0165",
13
+ )
14
+ defined_for = "wa_tanf_eligible"
15
+
16
+ def formula(spm_unit, period, parameters):
17
+ # Get payment standard based on assistance unit size
18
+ payment_standard = spm_unit("wa_tanf_payment_standard", period)
19
+
20
+ # Get countable income (after all disregards and deductions)
21
+ countable_income = spm_unit("wa_tanf_countable_income", period)
22
+
23
+ # Calculate benefit per WAC 388-450-0165:
24
+ # "The department calculates the amount of your cash assistance
25
+ # by subtracting your AU's countable income from the applicable
26
+ # payment standard."
27
+ grant_before_cap = max_(payment_standard - countable_income, 0)
28
+
29
+ # Apply maximum grant cap (unique to Washington)
30
+ # Per DSHS manual, grants cannot exceed $1,338
31
+ # regardless of family size (affects families of 8+)
32
+ p = parameters(period).gov.states.wa.dshs.tanf.payment_standard
33
+
34
+ return min_(grant_before_cap, p.maximum_amount)
@@ -6,9 +6,10 @@ class wa_tanf_resources_eligible(Variable):
6
6
  entity = SPMUnit
7
7
  label = "Washington TANF resources eligible"
8
8
  definition_period = YEAR
9
+ reference = "https://app.leg.wa.gov/wac/default.aspx?cite=388-470-0005"
9
10
  defined_for = StateCode.WA
10
11
 
11
12
  def formula(spm_unit, period, parameters):
12
- p = parameters(period).gov.states.wa.dshs.tanf.eligibility.resources
13
+ p = parameters(period).gov.states.wa.dshs.tanf
13
14
  countable_resources = spm_unit("wa_tanf_countable_resources", period)
14
- return countable_resources <= p.limit
15
+ return countable_resources <= p.resource_limit
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_gradual_adjustment_amount(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico gradual adjustment amount"
8
+ documentation = (
9
+ "An additional amount added to tax amount for high income filers."
10
+ )
11
+ unit = USD
12
+ definition_period = YEAR
13
+ defined_for = "pr_gradual_adjustment_eligible"
14
+ reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=3"
15
+
16
+ def formula(tax_unit, period, parameters):
17
+ p = parameters(period).gov.territories.pr.tax.income.gradual_adjustment
18
+ net_taxable_income = tax_unit("pr_net_taxable_income", period)
19
+ amount = (net_taxable_income - p.threshold) * p.rate
20
+ exemptions = tax_unit("pr_exemptions", period)
21
+ limit = p.adjustment_limit_basis + p.exemption_rate * exemptions
22
+
23
+ return min_(amount, limit)
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_gradual_adjustment_eligible(Variable):
5
+ value_type = bool
6
+ entity = TaxUnit
7
+ label = "Puerto Rico gradual adjustment eligibility"
8
+ definition_period = YEAR
9
+ defined_for = StateCode.PR
10
+ reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=3"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ p = parameters(period).gov.territories.pr.tax.income.gradual_adjustment
14
+ net_taxable_income = tax_unit("pr_net_taxable_income", period)
15
+
16
+ return net_taxable_income > p.threshold