policyengine-us 1.441.3__py3-none-any.whl → 1.450.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (161) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  3. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  4. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  5. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  6. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  7. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  8. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  9. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  10. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  11. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  14. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  15. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  16. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  17. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  18. policyengine_us/parameters/gov/states/il/hfs/bcc/eligibility/age.yaml +12 -0
  19. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  20. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  21. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  22. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  23. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  24. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  25. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  26. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  27. policyengine_us/parameters/gov/states/il/hfs/qualified_noncitizen_statuses.yaml +17 -0
  28. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  29. policyengine_us/parameters/gov/states/nj/tax/income/additions.yaml +12 -0
  30. policyengine_us/parameters/gov/states/nj/tax/income/gross_income_sources.yaml +32 -0
  31. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  32. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  33. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  34. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  35. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  36. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  37. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  38. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  39. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  40. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  41. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  42. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  43. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  44. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  45. policyengine_us/reforms/local/ny/__init__.py +4 -0
  46. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  47. policyengine_us/reforms/reforms.py +9 -0
  48. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +3 -3
  49. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  50. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  51. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  52. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  53. policyengine_us/tests/policy/baseline/gov/local/ca/la/general_relief/eligible/immigration/la_general_relief_immigration_status_eligible_person.yaml +2 -2
  54. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  55. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  56. policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.yaml +26 -4
  57. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.yaml +39 -0
  58. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.yaml +95 -0
  59. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.yaml +35 -0
  60. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  61. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  62. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  63. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  64. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  65. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  66. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  67. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  68. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  69. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  70. policyengine_us/tests/policy/baseline/gov/states/il/hfs/il_hfs_immigration_status_eligible.yaml +47 -0
  71. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  72. 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
  73. 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
  74. 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
  75. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  76. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integration.yaml +44 -0
  77. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/taxable_income/nj_agi.yaml +7 -8
  78. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  79. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +82 -0
  80. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +1 -1
  81. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  82. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  83. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  84. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  85. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  86. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  87. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  88. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  89. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  90. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  91. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  92. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  93. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  94. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  95. policyengine_us/tests/policy/baseline/gov/usda/snap/snap_min_allotment.yaml +3 -3
  96. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  97. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  98. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  99. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  100. policyengine_us/tests/policy/baseline/household/expense/health/has_bcc_qualifying_coverage.yaml +12 -0
  101. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  102. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  103. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  104. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  105. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  106. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  107. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  108. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  109. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  110. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  111. policyengine_us/variables/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.py +5 -1
  112. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.py +15 -0
  113. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.py +27 -0
  114. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.py +29 -0
  115. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  116. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  117. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  118. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  119. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  120. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  121. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  122. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  123. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  124. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  125. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  126. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  127. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  128. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  129. policyengine_us/variables/gov/states/il/hfs/il_hfs_immigration_status_eligible.py +23 -0
  130. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  131. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_additions.py +8 -3
  132. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_gross_income.py +17 -0
  133. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_total_income.py +12 -6
  134. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  135. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  136. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  137. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  138. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  139. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  140. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  141. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  142. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  143. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  144. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  145. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  146. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +9 -0
  147. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  148. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  149. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +6 -0
  150. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  151. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  152. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  153. policyengine_us/variables/household/expense/health/has_bcc_qualifying_coverage.py +16 -0
  154. {policyengine_us-1.441.3.dist-info → policyengine_us-1.450.0.dist-info}/METADATA +2 -2
  155. {policyengine_us-1.441.3.dist-info → policyengine_us-1.450.0.dist-info}/RECORD +160 -43
  156. {policyengine_us-1.441.3.dist-info → policyengine_us-1.450.0.dist-info}/WHEEL +1 -1
  157. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  158. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  159. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  160. {policyengine_us-1.441.3.dist-info → policyengine_us-1.450.0.dist-info}/entry_points.txt +0 -0
  161. {policyengine_us-1.441.3.dist-info → policyengine_us-1.450.0.dist-info}/licenses/LICENSE +0 -0
@@ -4,9 +4,14 @@ from policyengine_us.model_api import *
4
4
  class nj_additions(Variable):
5
5
  value_type = float
6
6
  entity = Person
7
- label = "New Jersey additions to federal AGI by person"
7
+ label = "New Jersey additions to gross income"
8
8
  unit = USD
9
- documentation = "Additions to federal AGI to get NJ total income."
9
+ documentation = "Additions to New Jersey gross income per NJ Statute 54A:5-1. These are amounts added back to gross income that may have been excluded or deducted for federal purposes."
10
10
  definition_period = YEAR
11
- reference = "https://law.justia.com/codes/new-jersey/2022/title-54/section-54-8a-36/"
11
+ reference = (
12
+ "https://law.justia.com/codes/new-jersey/title-54a/section-54a-5-1/",
13
+ "https://www.nj.gov/treasury/taxation/pdf/current/1040.pdf", # Lines 28-38
14
+ )
12
15
  defined_for = StateCode.NJ
16
+
17
+ adds = "gov.states.nj.tax.income.additions"
@@ -0,0 +1,17 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class nj_gross_income(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "New Jersey gross income"
8
+ unit = USD
9
+ documentation = "Gross income calculated from specific income categories per NJ statute, before additions and subtractions. This is built from gross income sources, not federal AGI."
10
+ definition_period = YEAR
11
+ reference = (
12
+ "https://law.justia.com/codes/new-jersey/title-54a/section-54a-5-1/",
13
+ "https://www.nj.gov/treasury/taxation/pdf/current/1040.pdf", # Lines 15-27
14
+ )
15
+ defined_for = StateCode.NJ
16
+
17
+ adds = "gov.states.nj.tax.income.gross_income_sources"
@@ -4,14 +4,20 @@ from policyengine_us.model_api import *
4
4
  class nj_total_income(Variable):
5
5
  value_type = float
6
6
  entity = Person
7
- label = "New Jersey total income by person"
7
+ label = "New Jersey total income"
8
8
  unit = USD
9
+ documentation = "New Jersey total income calculated as gross income plus additions minus subtractions per NJ Statute 54A:5-1. This is the income base before exclusions."
9
10
  definition_period = YEAR
10
- reference = "https://law.justia.com/codes/new-jersey/2022/title-54/section-54-8a-36/"
11
+ reference = (
12
+ "https://law.justia.com/codes/new-jersey/title-54a/section-54a-5-1/",
13
+ "https://www.nj.gov/treasury/taxation/pdf/current/1040.pdf",
14
+ )
11
15
  defined_for = StateCode.NJ
12
16
 
13
17
  def formula(person, period, parameters):
14
- agi = person("adjusted_gross_income_person", period)
15
- nj_additions = person("nj_additions", period)
16
- nj_subtractions = person("nj_agi_subtractions", period)
17
- return max_(0, agi + nj_additions - nj_subtractions)
18
+ # NJ Total Income = Gross Income + Additions - Subtractions
19
+ # Per NJ Statute 54A:5-1 and Form NJ-1040
20
+ gross_income = person("nj_gross_income", period)
21
+ additions = person("nj_additions", period)
22
+ subtractions = person("nj_agi_subtractions", period)
23
+ return max_(0, gross_income + additions - subtractions)
@@ -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
@@ -8,4 +8,14 @@ class pr_agi(Variable):
8
8
  unit = USD
9
9
  definition_period = YEAR
10
10
  defined_for = StateCode.PR
11
- reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-a/30103/"
11
+ reference = (
12
+ "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2",
13
+ "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-a/30103/",
14
+ )
15
+
16
+ # Discrepancy: legal code defines Puerto Rico AGI as gross income minus deductions and exemptions, among other items
17
+ def formula(tax_unit, period, parameters):
18
+ # person = tax_unit.members
19
+ total_income = add(tax_unit, period, ["pr_gross_income"])
20
+ alimony_paid = add(tax_unit, period, ["alimony_expense"])
21
+ return max_(0, total_income - alimony_paid)
@@ -8,4 +8,14 @@ class pr_agi_person(Variable):
8
8
  unit = USD
9
9
  definition_period = YEAR
10
10
  defined_for = StateCode.PR
11
- reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-a/30103/"
11
+ reference = (
12
+ "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2",
13
+ "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-a/30103/",
14
+ )
15
+
16
+ def formula(person, period, parameters):
17
+ filing_status = person.tax_unit("filing_status", period)
18
+ filing_statuses = filing_status.possible_values
19
+ agi_taxunit = person.tax_unit("pr_agi", period)
20
+ frac = where(filing_status == filing_statuses.JOINT, 0.5, 1.0)
21
+ return agi_taxunit * frac
@@ -9,3 +9,12 @@ class pr_regular_tax_before_credits(Variable):
9
9
  definition_period = YEAR
10
10
  defined_for = StateCode.PR
11
11
  reference = "https://hacienda.pr.gov/sites/default/files/inst_individuals_2023.pdf#page=19"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.territories.pr.tax.income.regular_tax
15
+ gross_income = tax_unit("pr_gross_income", period)
16
+ total_normal_tax = add(
17
+ tax_unit, period, ["pr_normal_tax", "pr_gradual_adjustment_amount"]
18
+ )
19
+
20
+ return total_normal_tax * p.percentage.calc(gross_income)
@@ -0,0 +1,13 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_deductions(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico deductions"
8
+ unit = USD
9
+ reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-c/30135/"
10
+ definition_period = YEAR
11
+ defined_for = StateCode.PR
12
+
13
+ adds = "gov.territories.pr.tax.income.taxable_income.deductions.sources"
@@ -0,0 +1,13 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_exemptions(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico exemptions"
8
+ definition_period = YEAR
9
+ unit = USD
10
+ reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-c/30138/"
11
+ defined_for = StateCode.PR
12
+
13
+ adds = "gov.territories.pr.tax.income.taxable_income.exemptions.sources"
@@ -9,3 +9,9 @@ class pr_net_taxable_income(Variable):
9
9
  unit = USD
10
10
  definition_period = YEAR
11
11
  defined_for = StateCode.PR
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ agi = tax_unit("pr_agi", period)
15
+ exemptions = tax_unit("pr_exemptions", period)
16
+ deductions = tax_unit("pr_deductions", period)
17
+ return max_(0, agi - exemptions - deductions)
@@ -10,21 +10,14 @@ class is_wic_at_nutritional_risk(Variable):
10
10
  reference = "https://www.law.cornell.edu/uscode/text/42/1786#b_8"
11
11
 
12
12
  def formula(person, period, parameters):
13
- # Assign households WIC nutritional risk status probabilistically in microsimulation.
13
+ # Assign nutritional risk status probabilistically in microsimulation.
14
+ # Nutritional risk is a health assessment independent of income per § 1786(b)(8).
14
15
  # Assume all meet qualification in individual simulation.
15
16
  if person.simulation.dataset is not None:
16
17
  wic_reported = person("receives_wic", period)
17
- meets_income_test = person.spm_unit(
18
- "meets_wic_income_test", period
19
- )
20
- meets_categorical_test = person(
21
- "meets_wic_categorical_eligibility", period
22
- )
23
18
  category = person("wic_category", period)
24
19
  risk = parameters(period).gov.usda.wic.nutritional_risk
25
- imputed_risk = (random(person) < risk[category]) & (
26
- meets_income_test | meets_categorical_test
27
- )
20
+ imputed_risk = random(person) < risk[category]
28
21
  return wic_reported | imputed_risk
29
22
  else:
30
23
  return True
@@ -15,4 +15,13 @@ class is_wic_eligible(Variable):
15
15
  "meets_wic_categorical_eligibility", period
16
16
  )
17
17
  nutritional_risk = person("is_wic_at_nutritional_risk", period)
18
- return (meets_income_test | meets_categorical_test) & nutritional_risk
18
+ # Must be in a valid WIC demographic category per 42 U.S.C. § 1786(d)(1)
19
+ wic_category = person("wic_category", period)
20
+ demographic_eligible = (
21
+ wic_category != wic_category.possible_values.NONE
22
+ )
23
+ return (
24
+ demographic_eligible
25
+ & (meets_income_test | meets_categorical_test)
26
+ & nutritional_risk
27
+ )
@@ -22,8 +22,11 @@ class state_group(Variable):
22
22
  def formula(household, period, parameters):
23
23
  NON_CONTIGUOUS_STATES = ("AK", "HI", "GU", "PR", "VI")
24
24
  state_code = household("state_code", period).decode_to_str()
25
- return where(
26
- np.isin(state_code, NON_CONTIGUOUS_STATES),
27
- StateGroup.encode(state_code).decode(),
28
- StateGroup.CONTIGUOUS_US,
29
- )
25
+ is_non_contiguous = np.isin(state_code, NON_CONTIGUOUS_STATES)
26
+ encoded = np.empty(state_code.shape, dtype=object)
27
+ encoded[:] = StateGroup.CONTIGUOUS_US
28
+ if is_non_contiguous.any():
29
+ encoded[is_non_contiguous] = StateGroup.encode(
30
+ state_code[is_non_contiguous]
31
+ ).decode()
32
+ return encoded
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class has_bcc_qualifying_coverage(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Has health coverage that qualifies for breast/cervical cancer treatment"
8
+ definition_period = YEAR
9
+ reference = "https://www.dhs.state.il.us/page.aspx?item=33528"
10
+ # Per PM 06-20-02, a person is considered "uninsured" for BCC purposes
11
+ # unless they have coverage that would pay for cancer treatment.
12
+ # The following do NOT count as qualifying coverage:
13
+ # - Coverage with limited benefits
14
+ # - Coverage where lifetime cap has been met/exceeded
15
+ # - Coverage that excludes cancer treatment
16
+ # - Indian Health Service coverage only
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.441.3
3
+ Version: 1.450.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
16
16
  Requires-Python: <3.14,>=3.10
17
17
  Requires-Dist: microdf-python>=1.0.0
18
- Requires-Dist: policyengine-core>=3.19.0
18
+ Requires-Dist: policyengine-core>=3.23.0
19
19
  Requires-Dist: tqdm>=4.67.1
20
20
  Provides-Extra: dev
21
21
  Requires-Dist: build>=1.2.2.post1; extra == 'dev'