policyengine-us 1.426.0__py3-none-any.whl → 1.439.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 (124) hide show
  1. policyengine_us/parameters/gov/aca/state_rating_area_cost.yaml +511 -12
  2. policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/min_age.yaml +1 -1
  3. policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/age_limit.yaml +9 -0
  4. policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/amount.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/amount.yaml +2 -2
  6. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml +60 -51
  7. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml +60 -51
  8. policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/earned.yaml +13 -0
  9. policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/unearned.yaml +23 -0
  10. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/README.md +1 -206
  11. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/{income/all.yaml → income.yaml} +1 -1
  12. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution.yaml +70 -0
  13. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/joint.yaml +10 -0
  14. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/single.yaml +10 -0
  15. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/joint.yaml +10 -0
  16. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/single.yaml +10 -0
  17. policyengine_us/parameters/gov/states/co/tax/income/credits/refundable.yaml +10 -0
  18. policyengine_us/parameters/gov/states/ga/tax/income/credits/itemizer/amount.yaml +14 -0
  19. policyengine_us/parameters/gov/states/ga/tax/income/credits/non_refundable.yaml +9 -0
  20. policyengine_us/parameters/gov/states/hi/tax/income/alternative_tax/availability.yaml +2 -3
  21. policyengine_us/parameters/gov/states/pa/tax/income/credits/eitc/match.yaml +10 -0
  22. policyengine_us/parameters/gov/states/pa/tax/income/credits/refundable.yaml +6 -0
  23. policyengine_us/parameters/gov/states/va/tax/income/credits/non_refundable.yaml +1 -1
  24. policyengine_us/parameters/gov/territories/pr/tax/income/credits/refundable.yaml +2 -0
  25. policyengine_us/parameters/gov/territories/pr/tax/income/tax_rate/amount.yaml +35 -0
  26. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml +1 -1
  27. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml +1 -1
  28. policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml +1 -1
  29. policyengine_us/reforms/congress/tlaib/__init__.py +4 -3
  30. policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/__init__.py +9 -0
  31. policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.py +237 -0
  32. policyengine_us/reforms/reforms.py +5 -4
  33. policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py +32 -1
  34. policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py +26 -5
  35. policyengine_us/tests/policy/baseline/gov/ed/pell_grant/pell_grant_simplified_formula_applies.yaml +1 -1
  36. policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_fpg.yaml +53 -0
  37. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/income_elasticity.yaml +6 -12
  38. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/labor_supply_behavioral_response.yaml +24 -2
  39. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/substitution_elasticity.yaml +35 -10
  40. policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration_tests.yaml +150 -4
  41. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.yaml +64 -0
  42. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.yaml +122 -0
  43. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.yaml +65 -0
  44. policyengine_us/tests/policy/baseline/gov/states/ga/tax/income/credits/ga_itemizer_credit.yaml +44 -0
  45. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/alternative_tax/hi_alternative_tax_on_capital_gains_eligible.yaml +0 -8
  46. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.yaml +4 -0
  47. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.yaml +15 -0
  48. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/integration.yaml +96 -0
  49. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.yaml +8 -8
  50. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +57 -0
  51. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/oh_cdcc.yaml +4 -4
  52. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +59 -0
  53. policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/credits/pa_eitc.yaml +26 -0
  54. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_normal_tax.yaml +31 -0
  55. policyengine_us/tests/policy/baseline/gov/test_categorical_eligibility_vectorization.yaml +41 -0
  56. policyengine_us/tests/policy/contrib/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.yaml +198 -0
  57. policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml +144 -0
  58. policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml +2 -2
  59. policyengine_us/variables/gov/ed/pell_grant/efc/pell_grant_simplified_formula_applies.py +1 -2
  60. policyengine_us/variables/gov/fcc/lifeline/is_lifeline_eligible.py +2 -2
  61. policyengine_us/variables/gov/hhs/head_start/early_head_start.py +2 -1
  62. policyengine_us/variables/gov/hhs/head_start/head_start.py +2 -1
  63. policyengine_us/variables/gov/hhs/head_start/is_head_start_categorically_eligible.py +1 -3
  64. policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_earned_income.py +13 -0
  65. policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_unearned_income.py +13 -0
  66. policyengine_us/variables/gov/hhs/tanf/tanf_fpg.py +28 -0
  67. policyengine_us/variables/gov/simulation/labor_supply_response/income_elasticity.py +1 -27
  68. policyengine_us/variables/gov/simulation/labor_supply_response/substitution_elasticity.py +18 -43
  69. policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/is_ssi_spousal_deeming_applies.py +41 -0
  70. policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.py +20 -20
  71. policyengine_us/variables/gov/ssa/ssi/ssi.py +22 -1
  72. policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py +26 -4
  73. policyengine_us/variables/gov/states/ca/cpuc/care/eligibility/ca_care_categorically_eligible.py +2 -2
  74. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +26 -0
  75. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +27 -0
  76. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker.py +10 -0
  77. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.py +18 -0
  78. policyengine_us/variables/gov/states/ga/tax/income/credits/ga_itemizer_credit.py +19 -0
  79. policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.py +1 -1
  80. policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.py +14 -0
  81. policyengine_us/variables/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.py +2 -2
  82. policyengine_us/variables/gov/states/oh/tax/income/credits/oh_cdcc.py +2 -2
  83. policyengine_us/variables/gov/states/pa/tax/income/credits/pa_eitc.py +16 -0
  84. policyengine_us/variables/gov/territories/pr/tax/income/pr_income_tax.py +14 -0
  85. policyengine_us/variables/gov/territories/pr/tax/income/pr_normal_tax.py +16 -0
  86. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +11 -0
  87. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +11 -0
  88. {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/METADATA +1 -1
  89. {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/RECORD +100 -84
  90. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/age_limit.yaml +0 -8
  91. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/amount.yaml +0 -13
  92. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/in_effect.yaml +0 -8
  93. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/min_birth_year.yaml +0 -8
  94. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/amount.yaml +0 -13
  95. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/in_effect.yaml +0 -8
  96. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/max_age.yaml +0 -8
  97. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/min_age.yaml +0 -8
  98. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/rate.yaml +0 -8
  99. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/threshold.yaml +0 -24
  100. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_multiplier_over_threshold.yaml +0 -11
  101. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_threshold.yaml +0 -9
  102. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/base.yaml +0 -11
  103. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_multiplier_over_threshold.yaml +0 -11
  104. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_threshold.yaml +0 -9
  105. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/all.yaml +0 -6
  106. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/by_position_and_decile.yaml +0 -71
  107. policyengine_us/reforms/congress/tlaib/income_security_package/__init__.py +0 -17
  108. policyengine_us/reforms/congress/tlaib/income_security_package/income_security_package.py +0 -402
  109. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/integration.yaml +0 -45
  110. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/integration.yaml +0 -154
  111. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/state_integration.yaml +0 -110
  112. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/test_individual_acts.yaml +0 -149
  113. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/unit_tests.yaml +0 -272
  114. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/amount.yaml +0 -0
  115. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/child_benefit/age_limit.yaml +0 -0
  116. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/amount.yaml +0 -0
  117. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/max_age.yaml +0 -0
  118. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/min_age.yaml +0 -0
  119. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/rate.yaml +0 -0
  120. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/start.yaml +0 -0
  121. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/in_effect.yaml +0 -0
  122. {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/WHEEL +0 -0
  123. {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/entry_points.txt +0 -0
  124. {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/licenses/LICENSE +0 -0
@@ -22,37 +22,37 @@ class ssi_income_deemed_from_ineligible_spouse(Variable):
22
22
  unit = USD
23
23
 
24
24
  def formula(person, period, parameters):
25
- # 1. Sum leftover spouse earned/unearned (post-child allocations).
25
+ # 1. Check if spousal deeming applies (avoids duplicating threshold logic)
26
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
27
+
28
+ # 2. If deeming applies, calculate deemed amount using "difference" approach:
29
+ # (couple combined countable) - (individual alone countable)
30
+
31
+ # Get spouse's leftover income (post-child allocations)
26
32
  spouse_earned = person(
27
33
  "ssi_earned_income_deemed_from_ineligible_spouse", period
28
34
  )
29
35
  spouse_unearned = person(
30
36
  "ssi_unearned_income_deemed_from_ineligible_spouse", period
31
37
  )
32
- leftover_spouse = spouse_earned + spouse_unearned
33
-
34
- # 2. Compare leftover to FBR difference
35
- p = parameters(period).gov.ssa.ssi.amount
36
- diff = (p.couple - p.individual) * MONTHS_IN_YEAR
37
- if_leftover_exceeds = leftover_spouse > diff
38
-
39
- # 3. If leftover <= diff => no deeming
40
- # If leftover > diff => difference of incomes approach
41
- # (couple combined) - (individual alone).
42
- # (a) individual's own income
43
- indiv_earned = person("ssi_earned_income", period)
44
- indiv_unearned = person("ssi_unearned_income", period)
38
+
39
+ # Get individual's own income
40
+ individual_earned = person("ssi_earned_income", period)
41
+ individual_unearned = person("ssi_unearned_income", period)
42
+
43
+ # Calculate individual's countable income (alone)
45
44
  alone_countable = _apply_ssi_exclusions(
46
- indiv_earned, indiv_unearned, parameters, period
45
+ individual_earned, individual_unearned, parameters, period
47
46
  )
48
47
 
49
- # (b) couple combined income
48
+ # Calculate couple's combined countable income
50
49
  couple_countable = _apply_ssi_exclusions(
51
- indiv_earned + spouse_earned,
52
- indiv_unearned + spouse_unearned,
50
+ individual_earned + spouse_earned,
51
+ individual_unearned + spouse_unearned,
53
52
  parameters,
54
53
  period,
55
54
  )
56
55
 
57
- deemed_if_exceeds = max_(0, couple_countable - alone_countable)
58
- return if_leftover_exceeds * deemed_if_exceeds
56
+ # Deemed amount is the difference (only when deeming applies)
57
+ deemed_amount = max_(0, couple_countable - alone_countable)
58
+ return deeming_applies * deemed_amount
@@ -13,4 +13,25 @@ class ssi(Variable):
13
13
  def formula(person, period, parameters):
14
14
  if parameters(period).gov.ssa.ssi.abolish_ssi:
15
15
  return 0
16
- return max_(0, person("uncapped_ssi", period))
16
+
17
+ uncapped = person("uncapped_ssi", period)
18
+
19
+ # Apply floor: SSI cannot be negative
20
+ benefit = max_(0, uncapped)
21
+
22
+ # Apply cap when spousal deeming: cannot exceed individual FBR
23
+ # per 20 CFR §416.1163
24
+ # This cap is necessary when spouse's gross income is just above $483:
25
+ # - Deeming applies (uses couple FBR)
26
+ # - After exclusions, countable may be low
27
+ # - Benefit could exceed individual FBR without this cap
28
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
29
+ p = parameters(period).gov.ssa.ssi.amount
30
+ individual_max = p.individual * MONTHS_IN_YEAR
31
+ capped_benefit = min_(benefit, individual_max)
32
+
33
+ return where(
34
+ deeming_applies,
35
+ capped_benefit,
36
+ benefit,
37
+ )
@@ -12,12 +12,34 @@ class ssi_amount_if_eligible(Variable):
12
12
  def formula(person, period, parameters):
13
13
  p = parameters(period).gov.ssa.ssi.amount
14
14
  is_dependent = person("is_tax_unit_dependent", period)
15
+
16
+ # Three scenarios for adults:
17
+ # 1. Both spouses eligible (joint claim) → couple rate / 2
18
+ # 2. One eligible, no deeming → individual rate
19
+ # 3. One eligible, deeming applies → couple rate (capped in ssi)
20
+ #
21
+ # Note: In scenario 3, deeming applies when spouse's GROSS income > $483.
22
+ # Income exclusions are applied to the COMBINED income afterwards.
23
+ # This means countable income can be much lower than $483, and the
24
+ # benefit can exceed individual FBR, requiring the cap in ssi.
25
+
26
+ is_joint_claim = person("ssi_claim_is_joint", period)
27
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
28
+
29
+ # Determine FBR to use based on scenario
30
+ individual_or_deeming_amount = where(
31
+ deeming_applies,
32
+ p.couple, # Scenario 3: Deeming applies - use couple rate!
33
+ p.individual, # Scenario 2: No deeming
34
+ )
35
+
15
36
  head_or_spouse_amount = where(
16
- person("ssi_claim_is_joint", period),
17
- p.couple / 2,
18
- p.individual,
37
+ is_joint_claim,
38
+ p.couple / 2, # Scenario 1: Both eligible
39
+ individual_or_deeming_amount,
19
40
  )
20
- # Adults amount is based on whether it is a joint claim
41
+
42
+ # Adults amount is based on scenario (see above)
21
43
  # Dependents always use individual amount.
22
44
  ssi_per_month = where(
23
45
  is_dependent, p.individual, head_or_spouse_amount
@@ -17,6 +17,6 @@ class ca_care_categorically_eligible(Variable):
17
17
  tribal_lifeline_programs = add(household, period, p.tribal_categorical)
18
18
  return np.where(
19
19
  is_on_tribal_land,
20
- np.any(tribal_lifeline_programs),
21
- np.any(non_tribal_lifeline_programs),
20
+ tribal_lifeline_programs > 0,
21
+ non_tribal_lifeline_programs > 0,
22
22
  )
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Colorado Care Worker Tax Credit"
8
+ defined_for = "co_care_worker_credit_eligible"
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.co.tax.income.credits.care_worker
15
+ joint = tax_unit("tax_unit_is_joint", period)
16
+ eligible_care_worker_count = tax_unit(
17
+ "co_care_worker_credit_eligible_care_worker_count", period
18
+ )
19
+ joint_with_two_eligible_care_workers = joint & (
20
+ eligible_care_worker_count == 2
21
+ )
22
+ return where(
23
+ joint_with_two_eligible_care_workers,
24
+ p.amount.joint,
25
+ p.amount.single,
26
+ )
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Colorado Care Worker Tax Credit eligible"
8
+ defined_for = StateCode.CO
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.co.tax.income.credits.care_worker
15
+ joint = tax_unit("tax_unit_is_joint", period)
16
+ agi = tax_unit("adjusted_gross_income", period)
17
+ income_limit = where(
18
+ joint, p.income_limit.joint, p.income_limit.single
19
+ )
20
+ income_eligible = agi <= income_limit
21
+ eligible_care_worker_present = (
22
+ tax_unit(
23
+ "co_care_worker_credit_eligible_care_worker_count", period
24
+ )
25
+ > 0
26
+ )
27
+ return income_eligible & eligible_care_worker_present
@@ -0,0 +1,10 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible_care_worker(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Eligible Care Worker for the Colorado Care Worker Tax Credit"
8
+ defined_for = StateCode.CO
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
@@ -0,0 +1,18 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible_care_worker_count(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Number of eligible Care Workers for the Colorado Care Worker Tax Credit"
8
+ defined_for = StateCode.CO
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ person = tax_unit.members
14
+ care_worker = person(
15
+ "co_care_worker_credit_eligible_care_worker", period
16
+ )
17
+ head_or_spouse = person("is_tax_unit_head_or_spouse", period)
18
+ return tax_unit.sum(care_worker & head_or_spouse)
@@ -0,0 +1,19 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ga_itemizer_credit(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Georgia itemizer tax credit"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/georgia/2022/title-48/chapter-7/article-2/section-48-7-29-23/"
11
+ defined_for = StateCode.GA
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ # Full-year and part-year residents who itemize their deductions
15
+ # are entitled to a credit up to $300 per taxpayer
16
+ itemizes = tax_unit("tax_unit_itemizes", period)
17
+ taxpayer_count = tax_unit("head_spouse_count", period)
18
+ p = parameters(period).gov.states.ga.tax.income.credits.itemizer
19
+ return where(itemizes, p.amount * taxpayer_count, 0)
@@ -5,7 +5,7 @@ class hi_cdcc(Variable):
5
5
  value_type = float
6
6
  entity = TaxUnit
7
7
  label = "Hawaii child and dependent care credit"
8
- defined_for = StateCode.HI
8
+ defined_for = "hi_cdcc_eligible"
9
9
  unit = USD
10
10
  definition_period = YEAR
11
11
  reference = "https://files.hawaii.gov/tax/legal/hrs/hrs_235.pdf#page=40"
@@ -0,0 +1,14 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class hi_cdcc_eligible(Variable):
5
+ value_type = bool
6
+ entity = TaxUnit
7
+ label = "Hawaii child and dependent care credit eligible"
8
+ defined_for = StateCode.HI
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/hawaii/title-14/chapter-235/section-235-55-6/"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ count_cdcc_eligible = tax_unit("count_cdcc_eligible", period)
14
+ return count_cdcc_eligible > 0
@@ -19,8 +19,8 @@ class nj_cdcc(Variable):
19
19
  taxable_income = tax_unit("nj_taxable_income", period)
20
20
 
21
21
  # Get federal CDCC
22
- # New Jersey matches the potential federal credit
23
- federal_cdcc = tax_unit("cdcc_potential", period)
22
+ # New Jersey matches the actual federal credit value
23
+ federal_cdcc = tax_unit("cdcc", period)
24
24
 
25
25
  # Calculate NJ CDCC
26
26
  rate = p.calc(taxable_income, right=True)
@@ -16,8 +16,8 @@ class oh_cdcc(Variable):
16
16
  p = parameters(period).gov.states.oh.tax.income.credits.cdcc
17
17
 
18
18
  agi = tax_unit("oh_modified_agi", period)
19
- # Ohio matches the federal credit taken
20
- us_cdcc = tax_unit("cdcc", period)
19
+ # Ohio matches the potential federal credit
20
+ us_cdcc = tax_unit("cdcc_potential", period)
21
21
 
22
22
  rate = p.match.calc(agi)
23
23
  # qualify for full CDCC amount when AGI < 20_000
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pa_eitc(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Pennsylvania Working Pennsylvanians Tax Credit"
8
+ defined_for = StateCode.PA
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://www.palegis.us/legislation/bills/text/PDF/2025/0/HB0416/PN2576#page=50" # Article XVI-W.2
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ federal_eitc = tax_unit("eitc", period)
15
+ p = parameters(period).gov.states.pa.tax.income.credits.eitc
16
+ return federal_eitc * p.match
@@ -0,0 +1,14 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_income_tax(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = TaxUnit
8
+ label = "Puerto Rico income tax"
9
+ definition_period = YEAR
10
+ reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=3"
11
+ defined_for = StateCode.PR
12
+
13
+ adds = ["pr_regular_tax_before_credits"]
14
+ subtracts = ["pr_refundable_credits"]
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_normal_tax(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico normal tax"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ defined_for = StateCode.PR
11
+ reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1004/subchapter-a/30061/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.territories.pr.tax.income.tax_rate
15
+ net_income = tax_unit("pr_net_taxable_income", period)
16
+ return p.amount.calc(net_income)
@@ -0,0 +1,11 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_regular_tax_before_credits(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico regular tax before credits"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ defined_for = StateCode.PR
11
+ reference = "https://hacienda.pr.gov/sites/default/files/inst_individuals_2023.pdf#page=19"
@@ -0,0 +1,11 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class pr_net_taxable_income(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Puerto Rico net taxable income"
8
+ reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2"
9
+ unit = USD
10
+ definition_period = YEAR
11
+ defined_for = StateCode.PR
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.426.0
3
+ Version: 1.439.0
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE