policyengine-us 1.388.0__py3-none-any.whl → 1.389.1__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.
- policyengine_us/parameters/gov/states/il/dceo/README.md +1 -0
- policyengine_us/parameters/gov/states/il/dceo/liheap/eligibility/fpg_limit.yaml +11 -0
- policyengine_us/parameters/gov/states/il/dceo/liheap/eligibility/rent_rate.yaml +11 -0
- policyengine_us/parameters/gov/states/il/dceo/liheap/payment/base_amount/max.yaml +11 -0
- policyengine_us/parameters/gov/states/il/dceo/liheap/payment/base_amount/min.yaml +11 -0
- policyengine_us/parameters/gov/states/il/dceo/liheap/payment/crisis_amount/max.yaml +11 -0
- policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible.yaml +54 -0
- policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/eligibility/il_liheap_income_eligible.yaml +58 -0
- policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/integration.yaml +149 -0
- policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/payment/il_liheap_base_payment.yaml +83 -0
- policyengine_us/tests/run_selective_tests.py +105 -3
- policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible.py +24 -0
- policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible_for_crisis_assistance.py +14 -0
- policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_income_eligible.py +30 -0
- policyengine_us/variables/gov/states/il/dceo/liheap/il_liheap.py +13 -0
- policyengine_us/variables/gov/states/il/dceo/liheap/payment/il_liheap_base_payment.py +28 -0
- policyengine_us/variables/gov/states/il/dceo/liheap/payment/il_liheap_crisis_assistance_amount.py +13 -0
- {policyengine_us-1.388.0.dist-info → policyengine_us-1.389.1.dist-info}/METADATA +1 -1
- {policyengine_us-1.388.0.dist-info → policyengine_us-1.389.1.dist-info}/RECORD +22 -6
- {policyengine_us-1.388.0.dist-info → policyengine_us-1.389.1.dist-info}/WHEEL +0 -0
- {policyengine_us-1.388.0.dist-info → policyengine_us-1.389.1.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.388.0.dist-info → policyengine_us-1.389.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Illinois Department of Commerce and Economic Opportunity (DCEO)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
description: Illinois limits the Low Income Home Energy Assistance Program to households with income below this multiple of the federal poverty guidelines.
|
|
2
|
+
values:
|
|
3
|
+
2023-10-01: 2
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
period: year
|
|
7
|
+
unit: /1
|
|
8
|
+
label: Illinois LIHEAP FPG limit
|
|
9
|
+
reference:
|
|
10
|
+
- title: Illinois DCEO Utility Bill Assistance
|
|
11
|
+
href: https://dceo.illinois.gov/communityservices/utilitybillassistance.html
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
description: Illinois limits the Low Income Home Energy Assistance Program to filer with rent exceeding this percentage of gross income when heat is included in rent.
|
|
2
|
+
values:
|
|
3
|
+
2023-10-01: 0.3
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
period: year
|
|
7
|
+
unit: /1
|
|
8
|
+
label: Illinois LIHEAP rent threshold rate
|
|
9
|
+
reference:
|
|
10
|
+
- title: Illinois DCEO Utility Bill Assistance FAQs Q2
|
|
11
|
+
href: https://dceo.illinois.gov/communityservices/utilitybillassistance/faqs.html
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
description: Illinois provides up to this amount of benefit to households under the Low Income Home Energy Assistance Program.
|
|
2
|
+
values:
|
|
3
|
+
2024-10-01: 2_075
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
period: year
|
|
7
|
+
unit: currency-USD
|
|
8
|
+
label: Illinois LIHEAP maximum benefit
|
|
9
|
+
reference:
|
|
10
|
+
- title: Illinois LIHEAP Profile - LIHEAP Clearinghouse
|
|
11
|
+
href: https://liheapch.acf.gov/profiles/Illinois.htm
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
description: Illinois provides at this minimum Low Income Home Energy Assistance Program amount to eligible filers.
|
|
2
|
+
values:
|
|
3
|
+
2024-10-01: 315
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
period: year
|
|
7
|
+
unit: currency-USD
|
|
8
|
+
label: Illinois LIHEAP minimum benefit
|
|
9
|
+
reference:
|
|
10
|
+
- title: Illinois LIHEAP Profile - LIHEAP Clearinghouse
|
|
11
|
+
href: https://liheapch.acf.gov/profiles/Illinois.htm
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
description: Illinois provides up to this winter crisis assistance amount for household under the Low Income Home Energy Assistance Program.
|
|
2
|
+
values:
|
|
3
|
+
2023-10-01: 1_500
|
|
4
|
+
|
|
5
|
+
metadata:
|
|
6
|
+
period: year
|
|
7
|
+
unit: currency-USD
|
|
8
|
+
label: Illinois LIHEAP maximum winter crisis assistance
|
|
9
|
+
reference:
|
|
10
|
+
- title: Illinois LIHEAP Profile - LIHEAP Clearinghouse
|
|
11
|
+
href: https://liheapch.acf.gov/profiles/Illinois.htm
|
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible.yaml
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
- name: Income eligible household with own heating is eligible
|
|
2
|
+
period: 2024
|
|
3
|
+
input:
|
|
4
|
+
state_code: IL
|
|
5
|
+
il_liheap_income_eligible: true
|
|
6
|
+
heat_expense_included_in_rent: false
|
|
7
|
+
rent: 1_000
|
|
8
|
+
irs_gross_income: 30_000
|
|
9
|
+
output:
|
|
10
|
+
il_liheap_eligible: true
|
|
11
|
+
|
|
12
|
+
- name: Income eligible renter with heat in rent and rent > 30% income is eligible
|
|
13
|
+
period: 2024
|
|
14
|
+
input:
|
|
15
|
+
state_code: IL
|
|
16
|
+
il_liheap_income_eligible: true
|
|
17
|
+
heat_expense_included_in_rent: true
|
|
18
|
+
rent: 10_000 # Annual rent
|
|
19
|
+
irs_gross_income: 30_000 # Rent is 33.3% of income
|
|
20
|
+
output:
|
|
21
|
+
il_liheap_eligible: true
|
|
22
|
+
|
|
23
|
+
- name: Income eligible renter with heat in rent but rent < 30% income is not eligible
|
|
24
|
+
period: 2024
|
|
25
|
+
input:
|
|
26
|
+
state_code: IL
|
|
27
|
+
il_liheap_income_eligible: true
|
|
28
|
+
heat_expense_included_in_rent: true
|
|
29
|
+
rent: 5_000 # Annual rent
|
|
30
|
+
irs_gross_income: 30_000 # Rent is 16.7% of income
|
|
31
|
+
output:
|
|
32
|
+
il_liheap_eligible: false
|
|
33
|
+
|
|
34
|
+
- name: Income eligible renter with heat in rent and rent exactly 30% income is not eligible
|
|
35
|
+
period: 2024
|
|
36
|
+
input:
|
|
37
|
+
state_code: IL
|
|
38
|
+
il_liheap_income_eligible: true
|
|
39
|
+
heat_expense_included_in_rent: true
|
|
40
|
+
rent: 9_000 # Annual rent
|
|
41
|
+
irs_gross_income: 30_000 # Rent is exactly 30% of income
|
|
42
|
+
output:
|
|
43
|
+
il_liheap_eligible: false
|
|
44
|
+
|
|
45
|
+
- name: Not income eligible is not eligible regardless of rent
|
|
46
|
+
period: 2024
|
|
47
|
+
input:
|
|
48
|
+
state_code: IL
|
|
49
|
+
il_liheap_income_eligible: false
|
|
50
|
+
heat_expense_included_in_rent: false
|
|
51
|
+
rent: 1_000
|
|
52
|
+
irs_gross_income: 100_000
|
|
53
|
+
output:
|
|
54
|
+
il_liheap_eligible: false
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
- name: Single person below 60% SMI is eligible
|
|
2
|
+
period: 2024
|
|
3
|
+
input:
|
|
4
|
+
state_code: IL
|
|
5
|
+
irs_gross_income: 25_000
|
|
6
|
+
# smi and fpg computed automatically from household size
|
|
7
|
+
output:
|
|
8
|
+
il_liheap_income_eligible: true
|
|
9
|
+
|
|
10
|
+
- name: Single person above 60% SMI but below 200% FPG is eligible
|
|
11
|
+
period: 2024
|
|
12
|
+
input:
|
|
13
|
+
state_code: IL
|
|
14
|
+
irs_gross_income: 28_000
|
|
15
|
+
# Person below 200% FPG so should be eligible
|
|
16
|
+
output:
|
|
17
|
+
il_liheap_income_eligible: true
|
|
18
|
+
|
|
19
|
+
- name: Family of 4 below income limits is eligible
|
|
20
|
+
period: 2024
|
|
21
|
+
input:
|
|
22
|
+
people:
|
|
23
|
+
parent1:
|
|
24
|
+
irs_gross_income: 30_000
|
|
25
|
+
parent2:
|
|
26
|
+
irs_gross_income: 15_000
|
|
27
|
+
child1:
|
|
28
|
+
age: 10
|
|
29
|
+
child2:
|
|
30
|
+
age: 5
|
|
31
|
+
spm_units:
|
|
32
|
+
spm_unit:
|
|
33
|
+
members: [parent1, parent2, child1, child2]
|
|
34
|
+
households:
|
|
35
|
+
household:
|
|
36
|
+
members: [parent1, parent2, child1, child2]
|
|
37
|
+
state_code: IL
|
|
38
|
+
# smi and fpg computed automatically from spm_unit_size
|
|
39
|
+
output:
|
|
40
|
+
il_liheap_income_eligible: true
|
|
41
|
+
|
|
42
|
+
- name: High income household not eligible
|
|
43
|
+
period: 2024
|
|
44
|
+
input:
|
|
45
|
+
state_code: IL
|
|
46
|
+
irs_gross_income: 100_000
|
|
47
|
+
# High income above both limits
|
|
48
|
+
output:
|
|
49
|
+
il_liheap_income_eligible: false
|
|
50
|
+
|
|
51
|
+
- name: Income exactly at 200% FPG is eligible
|
|
52
|
+
period: 2024
|
|
53
|
+
input:
|
|
54
|
+
state_code: IL
|
|
55
|
+
irs_gross_income: 30_120 # Exactly 200% of FPG
|
|
56
|
+
# Exactly at 200% FPG limit
|
|
57
|
+
output:
|
|
58
|
+
il_liheap_income_eligible: true
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
- name: Senior citizen with disability priority group
|
|
2
|
+
period: 2024
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
senior:
|
|
6
|
+
age: 65
|
|
7
|
+
is_disabled: true
|
|
8
|
+
social_security: 12_000
|
|
9
|
+
irs_gross_income: 12_000
|
|
10
|
+
rent: 6_000
|
|
11
|
+
heating_expense_person: 800
|
|
12
|
+
tax_units:
|
|
13
|
+
tax_unit:
|
|
14
|
+
members: [senior]
|
|
15
|
+
spm_units:
|
|
16
|
+
spm_unit:
|
|
17
|
+
members: [senior]
|
|
18
|
+
heat_expense_included_in_rent: false
|
|
19
|
+
households:
|
|
20
|
+
household:
|
|
21
|
+
members: [senior]
|
|
22
|
+
state_code: IL
|
|
23
|
+
output:
|
|
24
|
+
il_liheap_income_eligible: true
|
|
25
|
+
il_liheap_eligible: true
|
|
26
|
+
il_liheap_base_payment: 800 # Based on heating expenses
|
|
27
|
+
il_liheap: 800 # Base payment only (no crisis assistance)
|
|
28
|
+
|
|
29
|
+
- name: Family with young children priority group
|
|
30
|
+
period: 2024
|
|
31
|
+
input:
|
|
32
|
+
people:
|
|
33
|
+
parent1:
|
|
34
|
+
age: 30
|
|
35
|
+
employment_income: 25_000
|
|
36
|
+
irs_gross_income: 25_000
|
|
37
|
+
rent: 12_000
|
|
38
|
+
heating_expense_person: 900 # Half of family heating costs
|
|
39
|
+
parent2:
|
|
40
|
+
age: 28
|
|
41
|
+
employment_income: 20_000
|
|
42
|
+
irs_gross_income: 20_000
|
|
43
|
+
heating_expense_person: 900 # Half of family heating costs
|
|
44
|
+
child1:
|
|
45
|
+
age: 4 # Under 5 - priority group
|
|
46
|
+
heating_expense_person: 0
|
|
47
|
+
child2:
|
|
48
|
+
age: 2 # Under 5 - priority group
|
|
49
|
+
heating_expense_person: 0
|
|
50
|
+
tax_units:
|
|
51
|
+
tax_unit:
|
|
52
|
+
members: [parent1, parent2, child1, child2]
|
|
53
|
+
spm_units:
|
|
54
|
+
spm_unit:
|
|
55
|
+
members: [parent1, parent2, child1, child2]
|
|
56
|
+
heat_expense_included_in_rent: false
|
|
57
|
+
households:
|
|
58
|
+
household:
|
|
59
|
+
members: [parent1, parent2, child1, child2]
|
|
60
|
+
state_code: IL
|
|
61
|
+
output:
|
|
62
|
+
il_liheap_income_eligible: true # 45k total income eligible
|
|
63
|
+
il_liheap_eligible: true
|
|
64
|
+
il_liheap_base_payment: 1_800 # Based on heating expenses
|
|
65
|
+
il_liheap: 1_800 # Base payment only (no crisis assistance)
|
|
66
|
+
|
|
67
|
+
- name: Renter with heat included must meet rent threshold
|
|
68
|
+
period: 2024
|
|
69
|
+
input:
|
|
70
|
+
people:
|
|
71
|
+
renter:
|
|
72
|
+
age: 35
|
|
73
|
+
employment_income: 24_000
|
|
74
|
+
irs_gross_income: 24_000
|
|
75
|
+
rent: 8_000 # 33.3% of income
|
|
76
|
+
heating_expense_person: 1_200 # Irrelevant for heat included
|
|
77
|
+
tax_units:
|
|
78
|
+
tax_unit:
|
|
79
|
+
members: [renter]
|
|
80
|
+
spm_units:
|
|
81
|
+
spm_unit:
|
|
82
|
+
members: [renter]
|
|
83
|
+
heat_expense_included_in_rent: true
|
|
84
|
+
households:
|
|
85
|
+
household:
|
|
86
|
+
members: [renter]
|
|
87
|
+
state_code: IL
|
|
88
|
+
output:
|
|
89
|
+
il_liheap_income_eligible: true # 24k < 60% of 50k (30k)
|
|
90
|
+
il_liheap_eligible: true # Rent (8k) > 30% of income (7.2k)
|
|
91
|
+
il_liheap_base_payment: 315 # Fixed minimum for heat included
|
|
92
|
+
il_liheap: 315 # Base payment only (no crisis assistance)
|
|
93
|
+
|
|
94
|
+
- name: Renter with heat included but low rent not eligible
|
|
95
|
+
period: 2024
|
|
96
|
+
input:
|
|
97
|
+
people:
|
|
98
|
+
renter:
|
|
99
|
+
age: 40
|
|
100
|
+
employment_income: 28_000
|
|
101
|
+
irs_gross_income: 28_000
|
|
102
|
+
rent: 7_000 # 25% of income
|
|
103
|
+
heating_expense_person: 1_000 # Irrelevant for heat included
|
|
104
|
+
tax_units:
|
|
105
|
+
tax_unit:
|
|
106
|
+
members: [renter]
|
|
107
|
+
spm_units:
|
|
108
|
+
spm_unit:
|
|
109
|
+
members: [renter]
|
|
110
|
+
heat_expense_included_in_rent: true
|
|
111
|
+
households:
|
|
112
|
+
household:
|
|
113
|
+
members: [renter]
|
|
114
|
+
state_code: IL
|
|
115
|
+
output:
|
|
116
|
+
il_liheap_income_eligible: true # 28k < 60% of 50k (30k)
|
|
117
|
+
il_liheap_eligible: false # Rent (7k) <= 30% of income (8.4k)
|
|
118
|
+
il_liheap: 0
|
|
119
|
+
|
|
120
|
+
- name: High income household not eligible
|
|
121
|
+
period: 2024
|
|
122
|
+
input:
|
|
123
|
+
people:
|
|
124
|
+
adult1:
|
|
125
|
+
age: 45
|
|
126
|
+
employment_income: 50_000
|
|
127
|
+
irs_gross_income: 50_000
|
|
128
|
+
rent: 24_000
|
|
129
|
+
heating_expense_person: 1_250 # Half of family heating costs
|
|
130
|
+
adult2:
|
|
131
|
+
age: 43
|
|
132
|
+
employment_income: 45_000
|
|
133
|
+
irs_gross_income: 45_000
|
|
134
|
+
heating_expense_person: 1_250 # Half of family heating costs
|
|
135
|
+
tax_units:
|
|
136
|
+
tax_unit:
|
|
137
|
+
members: [adult1, adult2]
|
|
138
|
+
spm_units:
|
|
139
|
+
spm_unit:
|
|
140
|
+
members: [adult1, adult2]
|
|
141
|
+
heat_expense_included_in_rent: false
|
|
142
|
+
households:
|
|
143
|
+
household:
|
|
144
|
+
members: [adult1, adult2]
|
|
145
|
+
state_code: IL
|
|
146
|
+
output:
|
|
147
|
+
il_liheap_income_eligible: false # 95k > 60% of 70k (42k) and > 200% of 20.4k (40.8k)
|
|
148
|
+
il_liheap_eligible: false
|
|
149
|
+
il_liheap: 0
|
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/payment/il_liheap_base_payment.yaml
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
- name: Heat not included in rent - benefit based on heating expenses
|
|
2
|
+
period: 2024
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person:
|
|
6
|
+
age: 30
|
|
7
|
+
heating_expense_person: 1_000
|
|
8
|
+
tax_units:
|
|
9
|
+
tax_unit:
|
|
10
|
+
members: [person]
|
|
11
|
+
spm_units:
|
|
12
|
+
spm_unit:
|
|
13
|
+
members: [person]
|
|
14
|
+
heat_expense_included_in_rent: false
|
|
15
|
+
households:
|
|
16
|
+
household:
|
|
17
|
+
members: [person]
|
|
18
|
+
state_code: IL
|
|
19
|
+
output:
|
|
20
|
+
il_liheap_base_payment: 1_000 # Heating expenses within range
|
|
21
|
+
|
|
22
|
+
- name: Heat not included in rent - expenses exceed maximum
|
|
23
|
+
period: 2024
|
|
24
|
+
input:
|
|
25
|
+
people:
|
|
26
|
+
person:
|
|
27
|
+
age: 30
|
|
28
|
+
heating_expense_person: 3_000
|
|
29
|
+
tax_units:
|
|
30
|
+
tax_unit:
|
|
31
|
+
members: [person]
|
|
32
|
+
spm_units:
|
|
33
|
+
spm_unit:
|
|
34
|
+
members: [person]
|
|
35
|
+
heat_expense_included_in_rent: false
|
|
36
|
+
households:
|
|
37
|
+
household:
|
|
38
|
+
members: [person]
|
|
39
|
+
state_code: IL
|
|
40
|
+
output:
|
|
41
|
+
il_liheap_base_payment: 2_075 # Capped at maximum
|
|
42
|
+
|
|
43
|
+
- name: Heat included in rent - minimum cash benefit
|
|
44
|
+
period: 2024
|
|
45
|
+
input:
|
|
46
|
+
people:
|
|
47
|
+
person:
|
|
48
|
+
age: 30
|
|
49
|
+
heating_expense_person: 500 # Irrelevant when heat included
|
|
50
|
+
tax_units:
|
|
51
|
+
tax_unit:
|
|
52
|
+
members: [person]
|
|
53
|
+
spm_units:
|
|
54
|
+
spm_unit:
|
|
55
|
+
members: [person]
|
|
56
|
+
heat_expense_included_in_rent: true
|
|
57
|
+
households:
|
|
58
|
+
household:
|
|
59
|
+
members: [person]
|
|
60
|
+
state_code: IL
|
|
61
|
+
output:
|
|
62
|
+
il_liheap_base_payment: 315 # Fixed minimum for heat included in rent
|
|
63
|
+
|
|
64
|
+
- name: Heat not included in rent - low heating expenses get actual amount
|
|
65
|
+
period: 2024
|
|
66
|
+
input:
|
|
67
|
+
people:
|
|
68
|
+
person:
|
|
69
|
+
age: 30
|
|
70
|
+
heating_expense_person: 200
|
|
71
|
+
tax_units:
|
|
72
|
+
tax_unit:
|
|
73
|
+
members: [person]
|
|
74
|
+
spm_units:
|
|
75
|
+
spm_unit:
|
|
76
|
+
members: [person]
|
|
77
|
+
heat_expense_included_in_rent: false
|
|
78
|
+
households:
|
|
79
|
+
household:
|
|
80
|
+
members: [person]
|
|
81
|
+
state_code: IL
|
|
82
|
+
output:
|
|
83
|
+
il_liheap_base_payment: 200 # Gets actual heating expenses
|
|
@@ -289,6 +289,11 @@ class SelectiveTestRunner:
|
|
|
289
289
|
|
|
290
290
|
# Special handling for test files themselves
|
|
291
291
|
if "tests" in file and file.endswith(".py"):
|
|
292
|
+
# Skip test infrastructure files that shouldn't trigger all tests
|
|
293
|
+
if file.endswith(
|
|
294
|
+
("run_selective_tests.py", "test_batched.py")
|
|
295
|
+
):
|
|
296
|
+
continue
|
|
292
297
|
# Add the directory containing the test file
|
|
293
298
|
test_dir = os.path.dirname(file)
|
|
294
299
|
if test_dir:
|
|
@@ -314,7 +319,13 @@ class SelectiveTestRunner:
|
|
|
314
319
|
|
|
315
320
|
return existing_test_paths
|
|
316
321
|
|
|
317
|
-
def run_tests(
|
|
322
|
+
def run_tests(
|
|
323
|
+
self,
|
|
324
|
+
test_paths: Set[str],
|
|
325
|
+
verbose: bool = False,
|
|
326
|
+
with_coverage: bool = False,
|
|
327
|
+
changed_files: Set[str] = None,
|
|
328
|
+
) -> int:
|
|
318
329
|
"""Run pytest on specified test paths."""
|
|
319
330
|
if not test_paths:
|
|
320
331
|
print("No relevant tests found for changed files.")
|
|
@@ -325,7 +336,86 @@ class SelectiveTestRunner:
|
|
|
325
336
|
print(f" - {path}")
|
|
326
337
|
|
|
327
338
|
# Construct pytest command
|
|
328
|
-
|
|
339
|
+
if with_coverage:
|
|
340
|
+
# Use coverage to run the tests
|
|
341
|
+
import sys
|
|
342
|
+
|
|
343
|
+
# First check if coverage is importable
|
|
344
|
+
try:
|
|
345
|
+
import coverage
|
|
346
|
+
|
|
347
|
+
print(f"Coverage version: {coverage.__version__}")
|
|
348
|
+
except ImportError as e:
|
|
349
|
+
print(f"ERROR: Coverage module not found: {e}")
|
|
350
|
+
print(
|
|
351
|
+
"Please ensure coverage is installed: pip install coverage"
|
|
352
|
+
)
|
|
353
|
+
return 1
|
|
354
|
+
|
|
355
|
+
# Only track coverage for the specific files that changed in the PR
|
|
356
|
+
include_patterns = []
|
|
357
|
+
if changed_files:
|
|
358
|
+
# Only include Python files that were actually changed (excluding test directories)
|
|
359
|
+
changed_py_files = [
|
|
360
|
+
f
|
|
361
|
+
for f in changed_files
|
|
362
|
+
if f.endswith(".py") and "/tests/" not in f
|
|
363
|
+
]
|
|
364
|
+
if changed_py_files:
|
|
365
|
+
include_patterns = changed_py_files
|
|
366
|
+
else:
|
|
367
|
+
# Fallback to directory-based patterns if no changed files provided
|
|
368
|
+
for test_path in test_paths:
|
|
369
|
+
# Convert test path to variable path
|
|
370
|
+
if "tests/policy/baseline/" in test_path:
|
|
371
|
+
var_path = test_path.replace(
|
|
372
|
+
"tests/policy/baseline/", "variables/"
|
|
373
|
+
)
|
|
374
|
+
include_patterns.append(f"{var_path}/**/*.py")
|
|
375
|
+
include_patterns.append(f"{var_path}/*.py")
|
|
376
|
+
elif "tests/policy/reform/" in test_path:
|
|
377
|
+
include_patterns.append(
|
|
378
|
+
"policyengine_us/reforms/**/*.py"
|
|
379
|
+
)
|
|
380
|
+
include_patterns.append("policyengine_us/reforms/*.py")
|
|
381
|
+
elif "tests/policy/contrib/" in test_path:
|
|
382
|
+
include_patterns.append(
|
|
383
|
+
"policyengine_us/parameters/contrib/**/*.py"
|
|
384
|
+
)
|
|
385
|
+
include_patterns.append(
|
|
386
|
+
"policyengine_us/parameters/contrib/*.py"
|
|
387
|
+
)
|
|
388
|
+
|
|
389
|
+
pytest_args = [
|
|
390
|
+
sys.executable,
|
|
391
|
+
"-m",
|
|
392
|
+
"coverage",
|
|
393
|
+
"run",
|
|
394
|
+
"-a",
|
|
395
|
+
"--branch",
|
|
396
|
+
]
|
|
397
|
+
|
|
398
|
+
# Add --include flag to only track relevant files
|
|
399
|
+
if include_patterns:
|
|
400
|
+
include_pattern = ",".join(include_patterns)
|
|
401
|
+
pytest_args.extend(["--include", include_pattern])
|
|
402
|
+
|
|
403
|
+
pytest_args.extend(
|
|
404
|
+
[
|
|
405
|
+
"-m",
|
|
406
|
+
"policyengine_core.scripts.policyengine_command",
|
|
407
|
+
"test",
|
|
408
|
+
"-c",
|
|
409
|
+
"policyengine_us",
|
|
410
|
+
]
|
|
411
|
+
)
|
|
412
|
+
else:
|
|
413
|
+
pytest_args = [
|
|
414
|
+
"policyengine-core",
|
|
415
|
+
"test",
|
|
416
|
+
"-c",
|
|
417
|
+
"policyengine_us",
|
|
418
|
+
]
|
|
329
419
|
|
|
330
420
|
# Add test paths
|
|
331
421
|
pytest_args.extend(sorted(test_paths))
|
|
@@ -409,6 +499,11 @@ def main():
|
|
|
409
499
|
action="store_true",
|
|
410
500
|
help="Show debug information about git state",
|
|
411
501
|
)
|
|
502
|
+
parser.add_argument(
|
|
503
|
+
"--coverage",
|
|
504
|
+
action="store_true",
|
|
505
|
+
help="Run tests with coverage measurement",
|
|
506
|
+
)
|
|
412
507
|
|
|
413
508
|
args = parser.parse_args()
|
|
414
509
|
|
|
@@ -508,7 +603,14 @@ def main():
|
|
|
508
603
|
print("Consider running all tests with --all flag.")
|
|
509
604
|
sys.exit(0)
|
|
510
605
|
|
|
511
|
-
sys.exit(
|
|
606
|
+
sys.exit(
|
|
607
|
+
runner.run_tests(
|
|
608
|
+
test_paths,
|
|
609
|
+
verbose=args.verbose,
|
|
610
|
+
with_coverage=args.coverage,
|
|
611
|
+
changed_files=changed_files if args.coverage else None,
|
|
612
|
+
)
|
|
613
|
+
)
|
|
512
614
|
|
|
513
615
|
|
|
514
616
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "Eligible for Illinois LIHEAP"
|
|
8
|
+
definition_period = YEAR
|
|
9
|
+
defined_for = "il_liheap_income_eligible"
|
|
10
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
11
|
+
|
|
12
|
+
def formula(spm_unit, period, parameters):
|
|
13
|
+
p = parameters(period).gov.states.il.dceo.liheap.eligibility
|
|
14
|
+
|
|
15
|
+
# For renters with heat included in rent, check additional requirement
|
|
16
|
+
heat_in_rent = spm_unit("heat_expense_included_in_rent", period)
|
|
17
|
+
rent = add(spm_unit, period, ["rent"])
|
|
18
|
+
income = add(spm_unit, period, ["irs_gross_income"])
|
|
19
|
+
|
|
20
|
+
# If heat is included in rent, rent must exceed threshold percentage of income
|
|
21
|
+
rent_threshold = income * p.rent_rate
|
|
22
|
+
rent_threshold_met = rent > rent_threshold
|
|
23
|
+
|
|
24
|
+
return ~heat_in_rent | rent_threshold_met
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap_eligible_for_crisis_assistance(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "SPM Unit has utility disconnect notice under Illinois LIHEAP crisis assistance program"
|
|
8
|
+
definition_period = YEAR
|
|
9
|
+
defined_for = StateCode.IL
|
|
10
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
11
|
+
|
|
12
|
+
# Crisis assistance is available when utility is about to be disconnected
|
|
13
|
+
# For modeling purposes, this defaults to False as we don't have disconnect status
|
|
14
|
+
# In a real implementation, this would check for utility disconnect notices
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap_income_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "Illinois LIHEAP income eligible"
|
|
8
|
+
definition_period = YEAR
|
|
9
|
+
defined_for = StateCode.IL
|
|
10
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
11
|
+
|
|
12
|
+
def formula(spm_unit, period, parameters):
|
|
13
|
+
p_hhs = parameters(period).gov.hhs
|
|
14
|
+
p_il = parameters(period).gov.states.il.dceo.liheap
|
|
15
|
+
|
|
16
|
+
# Illinois uses 60% of state median income or 200% FPL, whichever is higher
|
|
17
|
+
state_median_income = spm_unit("hhs_smi", period)
|
|
18
|
+
smi_limit = state_median_income * p_hhs.liheap.smi_limit
|
|
19
|
+
|
|
20
|
+
# Federal poverty guideline limit
|
|
21
|
+
fpg = spm_unit("spm_unit_fpg", period)
|
|
22
|
+
fpg_limit = fpg * p_il.eligibility.fpg_limit
|
|
23
|
+
|
|
24
|
+
# Income concept - using IRS gross income as the base
|
|
25
|
+
income = add(spm_unit, period, ["irs_gross_income"])
|
|
26
|
+
|
|
27
|
+
# Eligible if income is below the higher of the two limits
|
|
28
|
+
income_limit = max_(smi_limit, fpg_limit)
|
|
29
|
+
|
|
30
|
+
return income <= income_limit
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "Illinois LIHEAP total benefit"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
defined_for = "il_liheap_eligible"
|
|
11
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
12
|
+
|
|
13
|
+
adds = ["il_liheap_base_payment", "il_liheap_crisis_assistance_amount"]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap_base_payment(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "Illinois LIHEAP base payment"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
defined_for = StateCode.IL
|
|
11
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
12
|
+
|
|
13
|
+
def formula(spm_unit, period, parameters):
|
|
14
|
+
p = parameters(period).gov.states.il.dceo.liheap.payment.base_amount
|
|
15
|
+
|
|
16
|
+
# Check if heat is included in rent
|
|
17
|
+
heat_in_rent = spm_unit("heat_expense_included_in_rent", period)
|
|
18
|
+
heating_expenses = add(spm_unit, period, ["heating_expense_person"])
|
|
19
|
+
|
|
20
|
+
# For renters with heat included in rent, provide minimum cash benefit
|
|
21
|
+
# For others, benefit based on actual heating expenses up to maximum
|
|
22
|
+
capped_heating_expenses = min_(heating_expenses, p.max)
|
|
23
|
+
|
|
24
|
+
return where(
|
|
25
|
+
heat_in_rent,
|
|
26
|
+
p.min, # Fixed minimum for heat included in rent
|
|
27
|
+
capped_heating_expenses, # Based on actual expenses, up to maximum
|
|
28
|
+
)
|
policyengine_us/variables/gov/states/il/dceo/liheap/payment/il_liheap_crisis_assistance_amount.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_liheap_crisis_assistance_amount(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = SPMUnit
|
|
7
|
+
label = "Illinois LIHEAP crisis assistance amount"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
defined_for = "il_liheap_eligible_for_crisis_assistance"
|
|
11
|
+
reference = "https://dceo.illinois.gov/communityservices/utilitybillassistance.html"
|
|
12
|
+
|
|
13
|
+
adds = ["gov.states.il.dceo.liheap.payment.crisis_amount.max"]
|
|
@@ -1584,6 +1584,12 @@ policyengine_us/parameters/gov/states/id/tax/income/subtractions/aged_or_disable
|
|
|
1584
1584
|
policyengine_us/parameters/gov/states/id/tax/income/subtractions/aged_or_disabled/person_cap.yaml,sha256=CnGCtNu9AB7b6WAOh7XQuEHr9vP8QInlwVDkD1CGcpA,1263
|
|
1585
1585
|
policyengine_us/parameters/gov/states/id/tax/income/subtractions/aged_or_disabled/support_fraction_threshold.yaml,sha256=MQ77AmjCQTcIaXiQrFhx0WNs7n40ZhIiE2_73Xb1D2g,1351
|
|
1586
1586
|
policyengine_us/parameters/gov/states/il/README.md,sha256=7ex3QI2a3B4E81vxRHnGGK5vQBTAbaSwANuBgkX_bJA,10
|
|
1587
|
+
policyengine_us/parameters/gov/states/il/dceo/README.md,sha256=_AQKjCPzxuOrmhcOaOHtdSc5dNocWoEPclyZHZJ0Knc,66
|
|
1588
|
+
policyengine_us/parameters/gov/states/il/dceo/liheap/eligibility/fpg_limit.yaml,sha256=uz8YvrLWFOLEoCNcL2aSCwE-1vUgRVWzp0oWPEBpNiA,399
|
|
1589
|
+
policyengine_us/parameters/gov/states/il/dceo/liheap/eligibility/rent_rate.yaml,sha256=LKlKX5e3gLLaAobj8lE18_Ltw_YpPL8JTO20X2D-FFc,435
|
|
1590
|
+
policyengine_us/parameters/gov/states/il/dceo/liheap/payment/base_amount/max.yaml,sha256=9wn2t53VAGwNWdrxe7NG9cC5KfnrpEhLpsHCwr4A8eY,375
|
|
1591
|
+
policyengine_us/parameters/gov/states/il/dceo/liheap/payment/base_amount/min.yaml,sha256=KGuWhk8ZdIyCiO2mPNHw4gYcoOUz1_2TOl-U_GluIqs,362
|
|
1592
|
+
policyengine_us/parameters/gov/states/il/dceo/liheap/payment/crisis_amount/max.yaml,sha256=4WnoQAVthw7FdcFhicSX7nRMAAU6XQkfzEsk_8tc1fE,406
|
|
1587
1593
|
policyengine_us/parameters/gov/states/il/dhs/README.md,sha256=sxTE9m84-RHVNEboWRugIJw75mbz24m-Rdo4qqjEgDg,37
|
|
1588
1594
|
policyengine_us/parameters/gov/states/il/dhs/aabd/README.md,sha256=F20INoq6QqwLcQzxNzObzrbDfgr3BeSKs6J5TuuYkOE,44
|
|
1589
1595
|
policyengine_us/parameters/gov/states/il/dhs/aabd/aged_age_threshold.yaml,sha256=3w4ecSs872cn1YDZxpa4JqQ1Gv5agvLkoUXWMvSK1G4,404
|
|
@@ -3184,7 +3190,7 @@ policyengine_us/reforms/tax_exempt/__init__.py,sha256=v3EbtUk6a2jsi9MrOlyb8ckzPy
|
|
|
3184
3190
|
policyengine_us/reforms/tax_exempt/tax_exempt_reform.py,sha256=bkW91XMJ-jd23nhq4-PfWJv0YW2whVn98cQikbq6-Z8,2427
|
|
3185
3191
|
policyengine_us/reforms/treasury/__init__.py,sha256=406jIbu32B57tUKhVLflWxlXf3S4SWjclVqlEtMeMwg,92
|
|
3186
3192
|
policyengine_us/reforms/treasury/repeal_dependent_exemptions.py,sha256=-xyMCtUK_dIBn2aAmhPW8pJEZjxcgOZzWKEUSI3w5e8,1354
|
|
3187
|
-
policyengine_us/tests/run_selective_tests.py,sha256=
|
|
3193
|
+
policyengine_us/tests/run_selective_tests.py,sha256=kVuz9-CEXL2db8MuFi1J3cHj_Mqx28retvAPX8N3LCY,22571
|
|
3188
3194
|
policyengine_us/tests/test_batched.py,sha256=K1LN3IIbWIioXWpFXZ6Hlch-BeglV3QPc1zxAbUeP-M,11491
|
|
3189
3195
|
policyengine_us/tests/code_health/parameters.py,sha256=e9VKC8dmmB_dTafOO90WJuVu-PAogoLAaa5QZd2rY-s,1126
|
|
3190
3196
|
policyengine_us/tests/code_health/variable_names.py,sha256=hY4ucqPwBD7v_fvnBpzexJDf0yCGpF4Sueff4z4rQ24,554
|
|
@@ -4069,6 +4075,10 @@ policyengine_us/tests/policy/baseline/gov/states/id/tax/income/other_taxes/pbf/i
|
|
|
4069
4075
|
policyengine_us/tests/policy/baseline/gov/states/id/tax/income/other_taxes/pbf/integration.yaml,sha256=OhpxhKrk-j3sx81P--Oxdgi7uw_jAJ9HVrK41UH0VAw,1117
|
|
4070
4076
|
policyengine_us/tests/policy/baseline/gov/states/id/tax/income/subtractions/id_aged_or_disabled_deduction.yaml,sha256=tPbDdKtR4EtNckTXL9RHmvm-_LInIWlVAI7HEwYN_0Y,2156
|
|
4071
4077
|
policyengine_us/tests/policy/baseline/gov/states/id/tax/income/subtractions/id_aged_or_disabled_deduction_eligible_person.yaml,sha256=MfUZUxWNzRVu8TkGNtR41WiZNup4JPRe5haFzsXfJoc,6198
|
|
4078
|
+
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/integration.yaml,sha256=th5Ivag3a6ITXAH886xAdJtO0FWDHo-o9uAkUOlMgXw,4234
|
|
4079
|
+
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible.yaml,sha256=GXU1Nj5a7WPPAFZMRLgqKUGyurNr5U8uHZbHjJuGSLs,1550
|
|
4080
|
+
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/eligibility/il_liheap_income_eligible.yaml,sha256=S1VtcgMeYV7Z67sk_lgH1DdtBHdac8EtABOalJymE-s,1427
|
|
4081
|
+
policyengine_us/tests/policy/baseline/gov/states/il/dceo/liheap/payment/il_liheap_base_payment.yaml,sha256=vEghxoO971ajDtrYVNCKouv-HjXT3CDZYYUUg0j5Wig,1970
|
|
4072
4082
|
policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/il_aabd_area.yaml,sha256=a8LrH9yA3-ToSiCQZa3T3B76_JB_waKsfFatavYaNh0,420
|
|
4073
4083
|
policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/il_aabd_person.yaml,sha256=UvrjHvHJpeKU2ardCXjpcR8Zob16idK-gM2AbiCmXZ0,722
|
|
4074
4084
|
policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/integration.yaml,sha256=FEyyYCWE61p72wT-qI-SMqgYESrfNEAO64rDOso1c-4,8638
|
|
@@ -6517,6 +6527,12 @@ policyengine_us/variables/gov/states/id/tax/income/subtractions/id_aged_or_disab
|
|
|
6517
6527
|
policyengine_us/variables/gov/states/id/tax/income/subtractions/id_subtractions.py,sha256=ijUXjHAl71pp7Ie9sczSfKGlrTsXtTgipZCRteqDiXs,519
|
|
6518
6528
|
policyengine_us/variables/gov/states/id/tax/income/subtractions/household_and_dependent_care/id_cdcc_limit.py,sha256=00h9eVmY8L4Td1lfKuNpEkgk7fY9vbo9BZ908I3q8KM,721
|
|
6519
6529
|
policyengine_us/variables/gov/states/id/tax/income/subtractions/household_and_dependent_care/id_household_and_dependent_care_expense_deduction.py,sha256=TcsG5QGcwM4fuv4-BNOQbPyG0ds22hXGQ4hk5uVtSjo,936
|
|
6530
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/il_liheap.py,sha256=H6_pHEIMmc8GYp0czT3yi4b4l7bez5F03AGpXgpJYlw,406
|
|
6531
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible.py,sha256=MsNMB0jAQ-SYDKOGtnxZIS4A0gRHp5iKj-YxAIM-ZWU,942
|
|
6532
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_eligible_for_crisis_assistance.py,sha256=oE_OjSnajzUZsYvOxnybnQYWIHwuee_J5zhbG4JcaNY,639
|
|
6533
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/eligibility/il_liheap_income_eligible.py,sha256=MVorvRmJyF_SxGbrqxiYAJ-csQ4coVxaVA_A6G04l4E,1106
|
|
6534
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/payment/il_liheap_base_payment.py,sha256=wa2GGHcLhJRT9XNuQ3sgR_AZrQLuRhPaMNTZqPSRAdE,1075
|
|
6535
|
+
policyengine_us/variables/gov/states/il/dceo/liheap/payment/il_liheap_crisis_assistance_amount.py,sha256=0wsWJERwlW8hVeMH4rAC4IVPZ8J6WnGBRm_I-PZtC_M,455
|
|
6520
6536
|
policyengine_us/variables/gov/states/il/dhs/aabd/il_aabd.py,sha256=rtVNTYDHXRhj6OhdoN5IO4oq_39aXszZ8WLwC_aoGCo,296
|
|
6521
6537
|
policyengine_us/variables/gov/states/il/dhs/aabd/il_aabd_area.py,sha256=dWyFLlMNmpp0EnXDwDWb5GqzcRQC6gVwcLziYC_chYo,1760
|
|
6522
6538
|
policyengine_us/variables/gov/states/il/dhs/aabd/il_aabd_institutional_status.py,sha256=4IpDMIpJ4enYc8Z7nWJZV6xKe8E14oouyGY3P4EvYIY,1105
|
|
@@ -8362,8 +8378,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
|
|
|
8362
8378
|
policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
|
|
8363
8379
|
policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
|
|
8364
8380
|
policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
|
|
8365
|
-
policyengine_us-1.
|
|
8366
|
-
policyengine_us-1.
|
|
8367
|
-
policyengine_us-1.
|
|
8368
|
-
policyengine_us-1.
|
|
8369
|
-
policyengine_us-1.
|
|
8381
|
+
policyengine_us-1.389.1.dist-info/METADATA,sha256=-4H82MCggJ3clZoCBNAL5GXdJSmtr96COTxL1VzK1SU,1649
|
|
8382
|
+
policyengine_us-1.389.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
8383
|
+
policyengine_us-1.389.1.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
|
|
8384
|
+
policyengine_us-1.389.1.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
|
|
8385
|
+
policyengine_us-1.389.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|