policyengine-us 1.465.0__py3-none-any.whl → 1.471.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 (207) hide show
  1. policyengine_us/parameters/gov/hhs/medicaid/emergency_medicaid/enabled.yaml +14 -0
  2. policyengine_us/parameters/gov/hhs/medicaid/emergency_medicaid/uses_medicaid_income_thresholds.yaml +13 -0
  3. policyengine_us/parameters/gov/ssa/revenue/oasdi_share_of_gross_ss.yaml +13 -0
  4. policyengine_us/parameters/gov/states/il/isbe/age_threshold/teen_parent.yaml +15 -0
  5. policyengine_us/parameters/gov/states/il/isbe/income/countable_sources.yaml +28 -0
  6. policyengine_us/parameters/gov/states/il/isbe/income/income_limit_rate.yaml +13 -0
  7. policyengine_us/parameters/gov/states/il/isbe/pfa/benefit/amount.yaml +15 -0
  8. policyengine_us/parameters/gov/states/il/isbe/pfae/benefit/amount.yaml +15 -0
  9. policyengine_us/parameters/gov/states/il/isbe/pfae/eligibility/age_range.yaml +26 -0
  10. policyengine_us/parameters/gov/states/il/isbe/pfae/eligibility/income/deep_poverty_rate.yaml +10 -0
  11. policyengine_us/parameters/gov/states/il/isbe/pfae/eligibility/income/low_income_rate.yaml +10 -0
  12. policyengine_us/parameters/gov/states/il/isbe/pi/benefit/amount.yaml +16 -0
  13. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/age_threshold/child.yaml +13 -0
  14. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/age_threshold/young_parent.yaml +11 -0
  15. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/income/deep_poverty_rate.yaml +11 -0
  16. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/income/low_income_rate.yaml +11 -0
  17. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/income/poverty_rate.yaml +11 -0
  18. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/priority/geriatric_pregnancy_age.yaml +10 -0
  19. policyengine_us/parameters/gov/states/il/isbe/pi/eligibility/risk_factors/minimum_score.yaml +11 -0
  20. policyengine_us/parameters/gov/states/in/fssa/README.md +1 -0
  21. policyengine_us/parameters/gov/states/in/fssa/tanf/README.md +1 -0
  22. policyengine_us/parameters/gov/states/in/fssa/tanf/eligibility/continuing/fpg_rate.yaml +12 -0
  23. policyengine_us/parameters/gov/states/in/fssa/tanf/income/deductions/benefit/earned_income_disregard/rate.yaml +12 -0
  24. policyengine_us/parameters/gov/states/in/fssa/tanf/income/deductions/eligibility/earned_income_disregard/rate.yaml +12 -0
  25. policyengine_us/parameters/gov/states/in/fssa/tanf/income/deductions/eligibility/flat_disregard/amount.yaml +12 -0
  26. policyengine_us/parameters/gov/states/in/fssa/tanf/income/deductions/work_expense/amount.yaml +12 -0
  27. policyengine_us/parameters/gov/states/in/fssa/tanf/resources/limit/at_application/amount.yaml +12 -0
  28. policyengine_us/parameters/gov/states/in/fssa/tanf/resources/limit/while_receiving/amount.yaml +12 -0
  29. policyengine_us/parameters/gov/states/in/fssa/tanf/resources/vehicle_exemption/amount.yaml +12 -0
  30. policyengine_us/parameters/gov/states/in/fssa/tanf/standard_of_need/amount.yaml +34 -0
  31. policyengine_us/parameters/gov/states/in/fssa/tanf/standard_of_need/max_unit_size.yaml +12 -0
  32. policyengine_us/parameters/gov/states/mo/tax/income/minimum_taxable_income.yaml +3 -0
  33. policyengine_us/parameters/gov/states/mo/tax/income/rates.yaml +13 -4
  34. policyengine_us/parameters/gov/states/mo/tax/income/subtractions/agi_subtractions.yaml +18 -0
  35. policyengine_us/parameters/gov/states/mo/tax/income/subtractions/net_capital_gain/rate.yaml +14 -0
  36. policyengine_us/parameters/gov/states/oh/odjfs/owf/income/deductions/earned_income_disregard/flat_amount.yaml +14 -0
  37. policyengine_us/parameters/gov/states/oh/odjfs/owf/income/deductions/earned_income_disregard/percentage_of_disregard.yaml +16 -0
  38. policyengine_us/parameters/gov/states/oh/odjfs/owf/initial_eligibility/income_limit_rate.yaml +14 -0
  39. policyengine_us/parameters/gov/states/oh/odjfs/owf/payment_standard/additional_person_increment.yaml +14 -0
  40. policyengine_us/parameters/gov/states/oh/odjfs/owf/payment_standard/amounts.yaml +43 -0
  41. policyengine_us/parameters/gov/states/oh/odjfs/owf/payment_standard/max_group_size.yaml +12 -0
  42. policyengine_us/parameters/gov/states/or/odhs/tanf/age_threshold/minor_child.yaml +12 -0
  43. policyengine_us/parameters/gov/states/or/odhs/tanf/income/adjusted_income_limit/additional_person.yaml +12 -0
  44. policyengine_us/parameters/gov/states/or/odhs/tanf/income/adjusted_income_limit/amount.yaml +32 -0
  45. policyengine_us/parameters/gov/states/or/odhs/tanf/income/child_support_disregard/max.yaml +12 -0
  46. policyengine_us/parameters/gov/states/or/odhs/tanf/income/child_support_disregard/per_child.yaml +12 -0
  47. policyengine_us/parameters/gov/states/or/odhs/tanf/income/countable_income_limit/additional_person.yaml +12 -0
  48. policyengine_us/parameters/gov/states/or/odhs/tanf/income/countable_income_limit/amount.yaml +32 -0
  49. policyengine_us/parameters/gov/states/or/odhs/tanf/income/earned_income_disregard_rate.yaml +12 -0
  50. policyengine_us/parameters/gov/states/or/odhs/tanf/income/eli_multiplier.yaml +12 -0
  51. policyengine_us/parameters/gov/states/or/odhs/tanf/maximum_need_group_size.yaml +12 -0
  52. policyengine_us/parameters/gov/states/or/odhs/tanf/minimum_benefit.yaml +12 -0
  53. policyengine_us/parameters/gov/states/or/odhs/tanf/payment_standard/additional_person.yaml +12 -0
  54. policyengine_us/parameters/gov/states/or/odhs/tanf/payment_standard/amount.yaml +32 -0
  55. policyengine_us/parameters/gov/states/or/odhs/tanf/resources/limit/amount.yaml +12 -0
  56. policyengine_us/tests/microsimulation/test_microsim.py +46 -0
  57. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/emergency_medicaid/integration.yaml +667 -0
  58. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/emergency_medicaid/is_emergency_medicaid_eligible.yaml +376 -0
  59. policyengine_us/tests/policy/baseline/gov/ssa/revenue/employer_medicare_tax_income_tax_revenue.yaml +86 -0
  60. policyengine_us/tests/policy/baseline/gov/ssa/revenue/employer_ss_tax_income_tax_revenue.yaml +85 -0
  61. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_medicare_hi.yaml +40 -21
  62. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_oasdi.yaml +57 -14
  63. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_tier_split.yaml +17 -35
  64. policyengine_us/tests/policy/baseline/gov/states/il/isbe/eligibility/il_isbe_income_eligible.yaml +15 -0
  65. policyengine_us/tests/policy/baseline/gov/states/il/isbe/eligibility/il_isbe_was_teen_parent_at_first_birth.yaml +310 -0
  66. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/eligibility/il_pfae_age_eligible_child.yaml +39 -0
  67. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/eligibility/il_pfae_basic_eligible.yaml +26 -0
  68. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/eligibility/il_pfae_eligible.yaml +49 -0
  69. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/integration.yaml +102 -0
  70. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/priority/il_pfae_has_highest_priority_factor.yaml +31 -0
  71. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/priority/il_pfae_is_deep_poverty.yaml +15 -0
  72. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/priority/il_pfae_is_low_income.yaml +15 -0
  73. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pfae/priority/il_pfae_secondary_priority_factor_count.yaml +85 -0
  74. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/il_pi_basic_eligible.yaml +46 -0
  75. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/il_pi_demographic_eligible.yaml +48 -0
  76. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/il_pi_eligible.yaml +38 -0
  77. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/il_pi_risk_eligible.yaml +74 -0
  78. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/income/il_pi_is_deep_poverty.yaml +43 -0
  79. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/income/il_pi_is_low_income.yaml +43 -0
  80. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/income/il_pi_is_poverty.yaml +43 -0
  81. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_has_developmental_delay.yaml +75 -0
  82. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_has_geriatric_pregnancy.yaml +74 -0
  83. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_highest_priority_score.yaml +100 -0
  84. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_is_young_parent_family.yaml +91 -0
  85. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_lower_priority_score.yaml +102 -0
  86. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/eligibility/priority/il_pi_other_priority_score.yaml +160 -0
  87. policyengine_us/tests/policy/baseline/gov/states/il/isbe/pi/integration.yaml +187 -0
  88. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/benefit/in_tanf_payment_standard.yaml +58 -0
  89. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/eligibility/in_tanf_countable_income_eligible.yaml +163 -0
  90. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/eligibility/in_tanf_eligible.yaml +94 -0
  91. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/eligibility/in_tanf_income_eligible.yaml +74 -0
  92. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/eligibility/in_tanf_payment_eligible.yaml +63 -0
  93. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/in_tanf.yaml +64 -0
  94. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/income/in_tanf_countable_earned_income.yaml +83 -0
  95. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/income/in_tanf_countable_earned_income_for_eligibility.yaml +112 -0
  96. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/income/in_tanf_countable_income_for_payment.yaml +71 -0
  97. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/integration.yaml +249 -0
  98. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/resources/in_tanf_countable_resources.yaml +38 -0
  99. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/resources/in_tanf_resources_eligible.yaml +60 -0
  100. policyengine_us/tests/policy/baseline/gov/states/in/fssa/tanf/resources/integration_with_eligibility.yaml +78 -0
  101. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/subtractions/mo_agi_subtractions.yaml +176 -0
  102. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/subtractions/mo_capital_gains_subtraction.yaml +65 -0
  103. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  104. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/integration.yaml +152 -0
  105. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_countable_income.yaml +113 -0
  106. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_eligible.yaml +239 -0
  107. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_fpg.yaml +73 -0
  108. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_income_eligible.yaml +80 -0
  109. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_initial_income_eligible.yaml +160 -0
  110. policyengine_us/tests/policy/baseline/gov/states/oh/odjfs/owf/oh_owf_payment_standard.yaml +77 -0
  111. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/integration.yaml +363 -0
  112. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf.yaml +94 -0
  113. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_adjusted_income.yaml +77 -0
  114. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_adjusted_income_eligible.yaml +73 -0
  115. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_child_support_disregard.yaml +272 -0
  116. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_countable_income.yaml +70 -0
  117. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_countable_income_eligible.yaml +73 -0
  118. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_eli_eligible.yaml +47 -0
  119. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_eli_income_eligible.yaml +75 -0
  120. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_eligible.yaml +68 -0
  121. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_income_eligible.yaml +211 -0
  122. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_payment_standard.yaml +68 -0
  123. policyengine_us/tests/policy/baseline/gov/states/or/odhs/tanf/or_tanf_resources_eligible.yaml +37 -0
  124. policyengine_us/tests/run_selective_tests.py +5 -0
  125. policyengine_us/tests/test_batched.py +106 -11
  126. policyengine_us/variables/gov/hhs/medicaid/emergency_medicaid/has_emergency_medical_condition.py +16 -0
  127. policyengine_us/variables/gov/hhs/medicaid/emergency_medicaid/is_emergency_medicaid_eligible.py +33 -0
  128. policyengine_us/variables/gov/ssa/revenue/employer_medicare_tax_income_tax_revenue.py +58 -0
  129. policyengine_us/variables/gov/ssa/revenue/employer_ss_tax_income_tax_revenue.py +60 -0
  130. policyengine_us/variables/gov/ssa/revenue/tob_revenue_medicare_hi.py +51 -15
  131. policyengine_us/variables/gov/ssa/revenue/tob_revenue_oasdi.py +66 -15
  132. policyengine_us/variables/gov/ssa/revenue/tob_revenue_total.py +11 -6
  133. policyengine_us/variables/gov/states/il/isbe/eligibility/il_isbe_income_eligible.py +26 -0
  134. policyengine_us/variables/gov/states/il/isbe/eligibility/il_isbe_was_teen_parent_at_first_birth.py +32 -0
  135. policyengine_us/variables/gov/states/il/isbe/income/il_isbe_countable_income.py +13 -0
  136. policyengine_us/variables/gov/states/il/isbe/pfa/il_pfa.py +15 -0
  137. policyengine_us/variables/gov/states/il/isbe/pfa/il_pfa_eligible.py +18 -0
  138. policyengine_us/variables/gov/states/il/isbe/pfae/eligibility/il_pfae_age_eligible_child.py +23 -0
  139. policyengine_us/variables/gov/states/il/isbe/pfae/eligibility/il_pfae_basic_eligible.py +19 -0
  140. policyengine_us/variables/gov/states/il/isbe/pfae/eligibility/il_pfae_eligible.py +28 -0
  141. policyengine_us/variables/gov/states/il/isbe/pfae/il_pfae.py +19 -0
  142. policyengine_us/variables/gov/states/il/isbe/pfae/priority/il_pfae_has_highest_priority_factor.py +40 -0
  143. policyengine_us/variables/gov/states/il/isbe/pfae/priority/il_pfae_is_deep_poverty.py +23 -0
  144. policyengine_us/variables/gov/states/il/isbe/pfae/priority/il_pfae_is_low_income.py +21 -0
  145. policyengine_us/variables/gov/states/il/isbe/pfae/priority/il_pfae_secondary_priority_factor_count.py +65 -0
  146. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/il_pi_basic_eligible.py +17 -0
  147. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/il_pi_demographic_eligible.py +18 -0
  148. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/il_pi_risk_eligible.py +18 -0
  149. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/income/il_pi_is_deep_poverty.py +23 -0
  150. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/income/il_pi_is_low_income.py +21 -0
  151. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/income/il_pi_is_poverty.py +21 -0
  152. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_has_developmental_delay.py +16 -0
  153. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_has_geriatric_pregnancy.py +20 -0
  154. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_highest_priority_score.py +37 -0
  155. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_is_young_parent_family.py +21 -0
  156. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_lower_priority_score.py +36 -0
  157. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_other_priority_score.py +54 -0
  158. policyengine_us/variables/gov/states/il/isbe/pi/eligibility/priority/il_pi_priority_score.py +19 -0
  159. policyengine_us/variables/gov/states/il/isbe/pi/il_pi.py +15 -0
  160. policyengine_us/variables/gov/states/il/isbe/pi/il_pi_eligible.py +18 -0
  161. policyengine_us/variables/gov/states/in/fssa/tanf/eligibility/in_tanf_countable_income_eligible.py +31 -0
  162. policyengine_us/variables/gov/states/in/fssa/tanf/eligibility/in_tanf_eligible.py +36 -0
  163. policyengine_us/variables/gov/states/in/fssa/tanf/eligibility/in_tanf_income_eligible.py +21 -0
  164. policyengine_us/variables/gov/states/in/fssa/tanf/eligibility/in_tanf_payment_eligible.py +18 -0
  165. policyengine_us/variables/gov/states/in/fssa/tanf/eligibility/in_tanf_resources_eligible.py +25 -0
  166. policyengine_us/variables/gov/states/in/fssa/tanf/in_tanf.py +21 -0
  167. policyengine_us/variables/gov/states/in/fssa/tanf/in_tanf_payment_standard.py +19 -0
  168. policyengine_us/variables/gov/states/in/fssa/tanf/income/in_tanf_countable_earned_income.py +20 -0
  169. policyengine_us/variables/gov/states/in/fssa/tanf/income/in_tanf_countable_earned_income_for_eligibility.py +33 -0
  170. policyengine_us/variables/gov/states/in/fssa/tanf/income/in_tanf_countable_income_for_eligibility.py +19 -0
  171. policyengine_us/variables/gov/states/in/fssa/tanf/income/in_tanf_countable_income_for_payment.py +13 -0
  172. policyengine_us/variables/gov/states/in/fssa/tanf/resources/in_tanf_countable_resources.py +27 -0
  173. policyengine_us/variables/gov/states/mo/tax/income/adjusted_gross_income/mo_adjusted_gross_income.py +1 -1
  174. policyengine_us/variables/gov/states/mo/tax/income/subtractions/mo_agi_subtractions.py +16 -0
  175. policyengine_us/variables/gov/states/mo/tax/income/subtractions/mo_capital_gains_subtraction.py +20 -0
  176. policyengine_us/variables/gov/states/mo/tax/income/subtractions/mo_capital_gains_subtraction_person.py +28 -0
  177. policyengine_us/variables/gov/states/oh/odjfs/owf/eligibility/oh_owf_eligible.py +39 -0
  178. policyengine_us/variables/gov/states/oh/odjfs/owf/eligibility/oh_owf_income_eligible.py +33 -0
  179. policyengine_us/variables/gov/states/oh/odjfs/owf/eligibility/oh_owf_initial_income_eligible.py +30 -0
  180. policyengine_us/variables/gov/states/oh/odjfs/owf/income/oh_owf_countable_income.py +40 -0
  181. policyengine_us/variables/gov/states/oh/odjfs/owf/oh_owf.py +23 -0
  182. policyengine_us/variables/gov/states/oh/odjfs/owf/oh_owf_fpg.py +32 -0
  183. policyengine_us/variables/gov/states/oh/odjfs/owf/oh_owf_payment_standard.py +26 -0
  184. policyengine_us/variables/gov/states/or/odhs/tanf/benefit/or_tanf_payment_standard.py +23 -0
  185. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_adjusted_income_eligible.py +28 -0
  186. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_countable_income_eligible.py +28 -0
  187. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_eli_eligible.py +16 -0
  188. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_eli_income_eligible.py +20 -0
  189. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_eligible.py +25 -0
  190. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_income_eligible.py +26 -0
  191. policyengine_us/variables/gov/states/or/odhs/tanf/eligibility/or_tanf_resources_eligible.py +19 -0
  192. policyengine_us/variables/gov/states/or/odhs/tanf/income/or_tanf_adjusted_income.py +21 -0
  193. policyengine_us/variables/gov/states/or/odhs/tanf/income/or_tanf_child_support_disregard.py +25 -0
  194. policyengine_us/variables/gov/states/or/odhs/tanf/income/or_tanf_countable_income.py +20 -0
  195. policyengine_us/variables/gov/states/or/odhs/tanf/or_tanf.py +25 -0
  196. policyengine_us/variables/household/demographic/geographic/county/county.py +9 -0
  197. policyengine_us/variables/household/demographic/geographic/is_non_english_speaking_home.py +9 -0
  198. policyengine_us/variables/household/demographic/household/parent_has_less_than_high_school_education.py +9 -0
  199. policyengine_us/variables/household/demographic/person/has_developmental_delay.py +9 -0
  200. policyengine_us/variables/household/demographic/person/has_individualized_education_program.py +9 -0
  201. policyengine_us/variables/household/demographic/person/has_no_prior_formal_early_learning.py +9 -0
  202. policyengine_us/variables/household/demographic/person/is_born_outside_us.py +9 -0
  203. {policyengine_us-1.465.0.dist-info → policyengine_us-1.471.0.dist-info}/METADATA +1 -1
  204. {policyengine_us-1.465.0.dist-info → policyengine_us-1.471.0.dist-info}/RECORD +207 -19
  205. {policyengine_us-1.465.0.dist-info → policyengine_us-1.471.0.dist-info}/WHEEL +0 -0
  206. {policyengine_us-1.465.0.dist-info → policyengine_us-1.471.0.dist-info}/entry_points.txt +0 -0
  207. {policyengine_us-1.465.0.dist-info → policyengine_us-1.471.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,33 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class in_tanf_countable_earned_income_for_eligibility(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = (
8
+ "Indiana TANF countable earned income for eligibility determination"
9
+ )
10
+ unit = USD
11
+ definition_period = MONTH
12
+ reference = (
13
+ "https://iar.iga.in.gov/code/2026/470/10.3#470-10.3-4-4",
14
+ "https://iga.in.gov/laws/2025/ic/titles/12/#12-14-2-3",
15
+ )
16
+ defined_for = StateCode.IN
17
+
18
+ def formula(spm_unit, period, parameters):
19
+ # NOTE: The $30 and 1/3 disregard only applies for the first 4 months
20
+ # of continuing eligibility. This simplified implementation always
21
+ # applies the $30 and 1/3 disregard.
22
+ p = parameters(period).gov.states["in"].fssa.tanf.income.deductions
23
+ person = spm_unit.members
24
+ gross_earned = person("tanf_gross_earned_income", period)
25
+
26
+ # $90 per earner, then $30 + 1/3 per unit (470 IAC 10.3-4-4(c))
27
+ after_work_expense = spm_unit.sum(
28
+ max_(gross_earned - p.work_expense.amount, 0)
29
+ )
30
+ after_flat = max_(
31
+ after_work_expense - p.eligibility.flat_disregard.amount, 0
32
+ )
33
+ return after_flat * (1 - p.eligibility.earned_income_disregard.rate)
@@ -0,0 +1,19 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class in_tanf_countable_income_for_eligibility(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Indiana TANF countable income for eligibility determination"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://iar.iga.in.gov/code/2026/470/10.3#470-10.3-4-4",
12
+ "https://iga.in.gov/laws/2025/ic/titles/12/#12-14-2-3",
13
+ )
14
+ defined_for = StateCode.IN
15
+
16
+ adds = [
17
+ "in_tanf_countable_earned_income_for_eligibility",
18
+ "tanf_gross_unearned_income",
19
+ ]
@@ -0,0 +1,13 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class in_tanf_countable_income_for_payment(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Indiana TANF countable income for payment calculation"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://iar.iga.in.gov/code/2026/470/10.3#470-10.3-4-4"
11
+ defined_for = StateCode.IN
12
+
13
+ adds = ["in_tanf_countable_earned_income", "tanf_gross_unearned_income"]
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class in_tanf_countable_resources(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Indiana TANF countable resources"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ defined_for = StateCode.IN
11
+ reference = (
12
+ "https://iar.iga.in.gov/code/2026/470/10.3#470-10.3-4-2",
13
+ "https://iga.in.gov/laws/2025/ic/titles/12/#12-14-2-1",
14
+ )
15
+
16
+ def formula(spm_unit, period, parameters):
17
+ p = (
18
+ parameters(period)
19
+ .gov.states["in"]
20
+ .fssa.tanf.resources.vehicle_exemption
21
+ )
22
+ total_assets = spm_unit("spm_unit_assets", period.this_year)
23
+ vehicle_value = spm_unit.household(
24
+ "household_vehicles_value", period.this_year
25
+ )
26
+ excluded_vehicle = min_(vehicle_value, p.amount)
27
+ return max_(total_assets - excluded_vehicle, 0)
@@ -39,5 +39,5 @@ class mo_adjusted_gross_income(Variable):
39
39
  )
40
40
  fed_agi = gross_income - ind_total_personal_alds - allocated_alds
41
41
  # return MO AGI including MO additions and MO subtractions
42
- subtractions = person("mo_qualified_health_insurance_premiums", period)
42
+ subtractions = person("mo_agi_subtractions", period)
43
43
  return max_(0, fed_agi - subtractions)
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class mo_agi_subtractions(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Missouri AGI subtractions"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ defined_for = StateCode.MO
11
+
12
+ def formula(person, period, parameters):
13
+ p = parameters(period).gov.states.mo.tax.income.subtractions
14
+ total_subtractions = add(person, period, p.agi_subtractions)
15
+ # Prevent negative subtractions from acting as additions
16
+ return max_(0, total_subtractions)
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class mo_capital_gains_subtraction(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Missouri capital gains subtraction"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ reference = (
11
+ "https://dor.mo.gov/faq/taxation/individual/capital-gains-subtraction.html", # MO form MO-A
12
+ )
13
+ defined_for = StateCode.MO
14
+
15
+ def formula(tax_unit, period, parameters):
16
+ net_capital_gain = max_(0, tax_unit("net_capital_gain", period))
17
+ p = parameters(
18
+ period
19
+ ).gov.states.mo.tax.income.subtractions.net_capital_gain
20
+ return net_capital_gain * p.rate
@@ -0,0 +1,28 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class mo_capital_gains_subtraction_person(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Missouri capital gains subtraction for each person"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ reference = (
11
+ "https://dor.mo.gov/faq/taxation/individual/capital-gains-subtraction.html",
12
+ )
13
+ defined_for = StateCode.MO
14
+
15
+ def formula(person, period, parameters):
16
+ tax_unit = person.tax_unit
17
+ # Get the tax unit level capital gains subtraction
18
+ tax_unit_subtraction = tax_unit("mo_capital_gains_subtraction", period)
19
+ # Allocate proportionally based on each person's share of
20
+ # capital gains (both short-term and long-term) to match
21
+ # the net_capital_gain used at the tax unit level
22
+ person_cg = person("capital_gains", period)
23
+ tax_unit_cg = tax_unit.sum(person_cg)
24
+ # Use mask to avoid divide-by-zero, default to zero allocation
25
+ person_share = np.zeros_like(tax_unit_cg)
26
+ mask = tax_unit_cg > 0
27
+ person_share[mask] = person_cg[mask] / tax_unit_cg[mask]
28
+ return person_share * tax_unit_subtraction
@@ -0,0 +1,39 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Ohio OWF eligibility"
8
+ definition_period = MONTH
9
+ defined_for = StateCode.OH
10
+ reference = "https://codes.ohio.gov/ohio-revised-code/section-5107.10"
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ person = spm_unit.members
14
+
15
+ # Must meet demographic requirements (minor child with parent/relative
16
+ # OR pregnant woman at least 6 months pregnant)
17
+ # Use federal demographic eligibility
18
+ demographic_eligible = spm_unit("is_demographic_tanf_eligible", period)
19
+
20
+ # Must have at least one citizen or legal immigrant
21
+ # Use federal immigration eligibility
22
+ immigration_status_eligible = spm_unit.any(
23
+ person("is_citizen_or_legal_immigrant", period)
24
+ )
25
+
26
+ # Must meet income requirements
27
+ # (oh_owf_income_eligible handles both initial and ongoing tests)
28
+ income_eligible = spm_unit("oh_owf_income_eligible", period)
29
+
30
+ # Ohio has NO resource limits per working_references.md:
31
+ # "No Resource Test: Resources such as a car or home ownership
32
+ # are NOT considered in determining eligibility"
33
+
34
+ # All requirements must be met
35
+ return (
36
+ demographic_eligible
37
+ & immigration_status_eligible
38
+ & income_eligible
39
+ )
@@ -0,0 +1,33 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Ohio OWF income eligibility"
8
+ definition_period = MONTH
9
+ defined_for = StateCode.OH
10
+ reference = (
11
+ "https://codes.ohio.gov/ohio-administrative-code/rule-5101:1-23-20"
12
+ )
13
+
14
+ def formula(spm_unit, period, parameters):
15
+ # Check enrollment status
16
+ enrolled = spm_unit("is_tanf_enrolled", period)
17
+
18
+ # Initial eligibility test: gross income < 50% FPL (new applicants)
19
+ initial_eligible = spm_unit("oh_owf_initial_income_eligible", period)
20
+
21
+ # Ongoing eligibility test: countable income < payment standard
22
+ countable_income = spm_unit("oh_owf_countable_income", period)
23
+ payment_standard = spm_unit("oh_owf_payment_standard", period)
24
+ ongoing_eligible = countable_income < payment_standard
25
+
26
+ # Per ORC 5107.10(D):
27
+ # - New applicants: must pass both initial (50% FPL) and ongoing tests
28
+ # - Enrolled recipients: only need to pass ongoing test
29
+ return where(
30
+ enrolled,
31
+ ongoing_eligible,
32
+ initial_eligible & ongoing_eligible,
33
+ )
@@ -0,0 +1,30 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_initial_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Ohio OWF initial income eligibility"
8
+ definition_period = MONTH
9
+ defined_for = StateCode.OH
10
+ reference = (
11
+ "https://codes.ohio.gov/ohio-administrative-code/rule-5101:1-23-20",
12
+ "https://dam.assets.ohio.gov/image/upload/jfs.ohio.gov/OWF/tanf/2024%20TANF%20State%20Plan%20Combined.pdf#page=4",
13
+ )
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ # Get gross income (before any disregards) using federal TANF variables
17
+ gross_income = add(
18
+ spm_unit,
19
+ period,
20
+ ["tanf_gross_earned_income", "tanf_gross_unearned_income"],
21
+ )
22
+
23
+ # Get initial eligibility income limit (50% of FPL effective July 1)
24
+ fpg = spm_unit("oh_owf_fpg", period)
25
+ p = parameters(period).gov.states.oh.odjfs.owf.initial_eligibility
26
+ income_limit = fpg * p.income_limit_rate
27
+
28
+ # Initial eligibility test: gross income must be below limit
29
+ # Per ORC 5107.10(D)(1) and ODJFS Payment Standards Table
30
+ return gross_income < income_limit
@@ -0,0 +1,40 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_countable_income(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Ohio OWF countable income"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ defined_for = StateCode.OH
11
+ reference = (
12
+ "https://codes.ohio.gov/ohio-administrative-code/rule-5101:1-23-20",
13
+ )
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
+ # Apply earned income disregard: $250 + 50% of remainder
20
+ # ORC 5107.10(D)(3) specifies "the two hundred-fifty dollar and
21
+ # one-half of the remainder disregards"
22
+ p = parameters(
23
+ period
24
+ ).gov.states.oh.odjfs.owf.income.deductions.earned_income_disregard
25
+
26
+ # Calculate remainder after flat disregard
27
+ remainder = max_(gross_earned - p.flat_amount, 0)
28
+
29
+ # Apply percentage disregard to remainder
30
+ percent_disregarded = remainder * p.percentage_of_disregard
31
+
32
+ # Countable earned income = gross - flat disregard - percent of remainder
33
+ countable_earned = max_(remainder - percent_disregarded, 0)
34
+
35
+ # Get gross unearned income from federal variable
36
+ # Per ORC 5107.10(D)(3): "No disregards apply to gross unearned income"
37
+ gross_unearned = add(spm_unit, period, ["tanf_gross_unearned_income"])
38
+
39
+ # Total countable income
40
+ return countable_earned + gross_unearned
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Ohio OWF"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ defined_for = "oh_owf_eligible"
11
+ reference = (
12
+ "https://codes.ohio.gov/ohio-administrative-code/rule-5101:1-23-40"
13
+ )
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ # Get payment standard for assistance group size
17
+ payment_standard = spm_unit("oh_owf_payment_standard", period)
18
+
19
+ # Get countable income (after all disregards)
20
+ countable_income = spm_unit("oh_owf_countable_income", period)
21
+
22
+ # Per OAC 5101:1-23-40: benefit = payment standard - countable income
23
+ return max_(payment_standard - countable_income, 0)
@@ -0,0 +1,32 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_fpg(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Ohio OWF federal poverty guideline"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ defined_for = StateCode.OH
11
+ reference = (
12
+ "https://dam.assets.ohio.gov/image/upload/jfs.ohio.gov/OWF/tanf/2024%20TANF%20State%20Plan%20Combined.pdf#page=4",
13
+ "https://codes.ohio.gov/ohio-revised-code/section-5107.10", # (D)(2)
14
+ )
15
+
16
+ def formula(spm_unit, period, parameters):
17
+ # Ohio uses FPL effective July 1 of each year per state law
18
+ # "initial eligibility standards are annually indexed to fifty per cent
19
+ # of the federal poverty level (FPL) effective July 1 of each year"
20
+ n = spm_unit("spm_unit_size", period.this_year)
21
+ state_group = spm_unit.household("state_group_str", period.this_year)
22
+ year = period.start.year
23
+ month = period.start.month
24
+ # Use July 1 effective date (Ohio state fiscal year)
25
+ if month >= 7:
26
+ instant_str = f"{year}-07-01"
27
+ else:
28
+ instant_str = f"{year - 1}-07-01"
29
+ p_fpg = parameters(instant_str).gov.hhs.fpg
30
+ p1 = p_fpg.first_person[state_group] / MONTHS_IN_YEAR
31
+ pn = p_fpg.additional_person[state_group] / MONTHS_IN_YEAR
32
+ return p1 + pn * (n - 1)
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class oh_owf_payment_standard(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Ohio OWF payment standard"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ defined_for = StateCode.OH
11
+ reference = "https://emanuals.jfs.ohio.gov/CashFoodAssist/CAM/ACT/"
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ size = spm_unit("spm_unit_size", period)
15
+ p = parameters(period).gov.states.oh.odjfs.owf.payment_standard
16
+
17
+ # For assistance groups up to max_group_size, use table lookup
18
+ # For groups larger than max_group_size, calculate using increment
19
+ max_size = p.max_group_size
20
+ table_size = min_(size, max_size)
21
+ extra_members = max_(size - max_size, 0)
22
+
23
+ base_amount = p.amounts[table_size]
24
+ additional_amount = extra_members * p.additional_person_increment
25
+
26
+ return base_amount + additional_amount
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_payment_standard(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Oregon TANF payment standard"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://oregon.public.law/rules/oar_461-155-0030"
11
+ defined_for = StateCode.OR
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ p = parameters(period).gov.states["or"].odhs.tanf
15
+ size = spm_unit("spm_unit_size", period.this_year)
16
+ max_size = p.maximum_need_group_size
17
+ size_capped = min_(size, max_size)
18
+ additional_people = max_(size - max_size, 0)
19
+ base_amount = p.payment_standard.amount[size_capped]
20
+ additional_amount = (
21
+ additional_people * p.payment_standard.additional_person
22
+ )
23
+ return base_amount + additional_amount
@@ -0,0 +1,28 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_adjusted_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF adjusted income eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://secure.sos.state.or.us/oard/viewSingleRule.action?ruleVrsnRsn=268185",
11
+ "https://oregon.public.law/rules/oar_461-155-0030",
12
+ )
13
+ defined_for = StateCode.OR
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ p = parameters(period).gov.states["or"].odhs.tanf
17
+ size = spm_unit("spm_unit_size", period.this_year)
18
+ max_size = p.maximum_need_group_size
19
+ size_capped = min_(size, max_size)
20
+ additional_people = max_(size - max_size, 0)
21
+
22
+ adjusted_income = spm_unit("or_tanf_adjusted_income", period)
23
+ adjusted_limit = (
24
+ p.income.adjusted_income_limit.amount[size_capped]
25
+ + additional_people
26
+ * p.income.adjusted_income_limit.additional_person
27
+ )
28
+ return adjusted_income < adjusted_limit
@@ -0,0 +1,28 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_countable_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF countable income eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://secure.sos.state.or.us/oard/viewSingleRule.action?ruleVrsnRsn=268185",
11
+ "https://oregon.public.law/rules/oar_461-155-0030",
12
+ )
13
+ defined_for = StateCode.OR
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ p = parameters(period).gov.states["or"].odhs.tanf
17
+ size = spm_unit("spm_unit_size", period.this_year)
18
+ max_size = p.maximum_need_group_size
19
+ size_capped = min_(size, max_size)
20
+ additional_people = max_(size - max_size, 0)
21
+
22
+ countable_income = spm_unit("or_tanf_countable_income", period)
23
+ countable_limit = (
24
+ p.income.countable_income_limit.amount[size_capped]
25
+ + additional_people
26
+ * p.income.countable_income_limit.additional_person
27
+ )
28
+ return countable_income < countable_limit
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_eli_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF eligible for Exit Limit Increase (ELI) standards"
8
+ definition_period = MONTH
9
+ reference = "https://oregon.public.law/rules/oar_461-155-0030"
10
+ defined_for = StateCode.OR
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ # ELI applies when currently enrolled in TANF AND has earned income
14
+ is_enrolled = spm_unit("is_tanf_enrolled", period)
15
+ earned_income = add(spm_unit, period, ["tanf_gross_earned_income"])
16
+ return is_enrolled & (earned_income > 0)
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_eli_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF ELI income eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://secure.sos.state.or.us/oard/viewSingleRule.action?ruleVrsnRsn=268185",
11
+ "https://oregon.public.law/rules/oar_461-155-0030",
12
+ )
13
+ defined_for = StateCode.OR
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ p = parameters(period).gov.states["or"].odhs.tanf
17
+ countable_income = spm_unit("or_tanf_countable_income", period)
18
+ payment_standard = spm_unit("or_tanf_payment_standard", period)
19
+ eli_limit = payment_standard * p.income.eli_multiplier
20
+ return countable_income < eli_limit
@@ -0,0 +1,25 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF eligible"
8
+ definition_period = MONTH
9
+ reference = "https://oregon.public.law/rules/oar_461-135-0070"
10
+ defined_for = StateCode.OR
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ person = spm_unit.members
14
+ demographic_eligible = spm_unit("is_demographic_tanf_eligible", period)
15
+ has_citizen = spm_unit.any(
16
+ person("is_citizen_or_legal_immigrant", period)
17
+ )
18
+ income_eligible = spm_unit("or_tanf_income_eligible", period)
19
+ resources_eligible = spm_unit("or_tanf_resources_eligible", period)
20
+ return (
21
+ demographic_eligible
22
+ & has_citizen
23
+ & income_eligible
24
+ & resources_eligible
25
+ )
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF income eligible"
8
+ definition_period = MONTH
9
+ reference = "https://oregon.public.law/rules/oar_461-160-0100"
10
+ defined_for = StateCode.OR
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ # Standard test: countable < limit AND adjusted < limit
14
+ passes_countable_test = spm_unit(
15
+ "or_tanf_countable_income_eligible", period
16
+ )
17
+ passes_adjusted_test = spm_unit(
18
+ "or_tanf_adjusted_income_eligible", period
19
+ )
20
+ passes_standard_test = passes_countable_test & passes_adjusted_test
21
+
22
+ # ELI test: countable < (payment_standard * multiplier)
23
+ passes_eli_test = spm_unit("or_tanf_eli_income_eligible", period)
24
+
25
+ eli_eligible = spm_unit("or_tanf_eli_eligible", period)
26
+ return where(eli_eligible, passes_eli_test, passes_standard_test)
@@ -0,0 +1,19 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_resources_eligible(Variable):
5
+ value_type = bool
6
+ entity = SPMUnit
7
+ label = "Oregon TANF resources eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://secure.sos.state.or.us/oard/viewSingleRule.action?ruleVrsnRsn=316195",
11
+ "https://oregon.public.law/rules/oar_461-160-0015",
12
+ )
13
+ defined_for = StateCode.OR
14
+
15
+ def formula(spm_unit, period, parameters):
16
+ p = parameters(period).gov.states["or"].odhs.tanf.resources.limit
17
+ # spm_unit_assets is a YEAR variable, access with period.this_year
18
+ countable_resources = spm_unit("spm_unit_assets", period.this_year)
19
+ return countable_resources <= p.amount
@@ -0,0 +1,21 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_adjusted_income(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Oregon TANF adjusted income"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://oregon.public.law/rules/oar_461-001-0000",
12
+ "https://oregon.public.law/rules/oar_461-160-0160",
13
+ )
14
+ defined_for = StateCode.OR
15
+
16
+ def formula(spm_unit, period, parameters):
17
+ p = parameters(period).gov.states["or"].odhs.tanf.income
18
+ countable_income = spm_unit("or_tanf_countable_income", period)
19
+ gross_earned = add(spm_unit, period, ["tanf_gross_earned_income"])
20
+ earned_income_disregard = gross_earned * p.earned_income_disregard_rate
21
+ return max_(countable_income - earned_income_disregard, 0)
@@ -0,0 +1,25 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class or_tanf_child_support_disregard(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ label = "Oregon TANF child support disregard"
8
+ unit = USD
9
+ definition_period = MONTH
10
+ reference = "https://oregon.public.law/rules/oar_461-145-0080"
11
+ defined_for = StateCode.OR
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ p = parameters(period).gov.states["or"].odhs.tanf
15
+ child_support_received = add(
16
+ spm_unit, period, ["child_support_received"]
17
+ )
18
+ person = spm_unit.members
19
+ age = person("age", period.this_year)
20
+ is_child = age < p.age_threshold.minor_child
21
+ num_children = spm_unit.sum(is_child)
22
+ disregard = p.income.child_support_disregard
23
+ max_disregard_by_children = num_children * disregard.per_child
24
+ max_disregard = min_(max_disregard_by_children, disregard.max)
25
+ return min_(child_support_received, max_disregard)