warn-transformer 1.3.265__py3-none-any.whl → 1.3.302__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 warn-transformer might be problematic. Click here for more details.
- warn_transformer/schema.py +1 -1
- warn_transformer/transformers/ct.py +91 -13
- warn_transformer/transformers/dc.py +10 -0
- warn_transformer/transformers/ky.py +11 -7
- warn_transformer/transformers/md.py +2 -0
- warn_transformer/transformers/mi.py +539 -6
- warn_transformer/transformers/mt.py +2 -0
- warn_transformer/transformers/nj.py +29 -0
- warn_transformer/transformers/oh.py +2 -0
- warn_transformer/transformers/ok.py +18 -4
- warn_transformer/transformers/pa.py +249 -0
- warn_transformer/transformers/sc.py +1 -0
- warn_transformer/transformers/sd.py +1 -0
- warn_transformer/transformers/va.py +1 -1
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/METADATA +1 -1
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/RECORD +20 -19
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/WHEEL +0 -0
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/entry_points.txt +0 -0
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/licenses/LICENSE +0 -0
- {warn_transformer-1.3.265.dist-info → warn_transformer-1.3.302.dist-info}/top_level.txt +0 -0
warn_transformer/schema.py
CHANGED
|
@@ -176,7 +176,7 @@ class BaseTransformer:
|
|
|
176
176
|
elif isinstance(method, typing.Callable):
|
|
177
177
|
return method(row)
|
|
178
178
|
else:
|
|
179
|
-
raise ValueError("The field method
|
|
179
|
+
raise ValueError("The field method you provided is not valid.")
|
|
180
180
|
|
|
181
181
|
def get_hash_id(self, data: typing.Dict) -> str:
|
|
182
182
|
"""Convert the row into a unique hexdigest to use as a unique identifier.
|
|
@@ -4,18 +4,19 @@ from datetime import datetime
|
|
|
4
4
|
from ..schema import BaseTransformer
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
# class Transformer:
|
|
7
8
|
class Transformer(BaseTransformer):
|
|
8
9
|
"""Transform Connecticut raw data for consolidation."""
|
|
9
10
|
|
|
10
11
|
postal_code = "CT"
|
|
11
12
|
fields = dict(
|
|
12
13
|
company="affected_company",
|
|
13
|
-
location="
|
|
14
|
-
notice_date="
|
|
15
|
-
effective_date="
|
|
16
|
-
jobs="
|
|
14
|
+
location="layoff_locations",
|
|
15
|
+
notice_date="warn_document_date",
|
|
16
|
+
effective_date="layoff_dates",
|
|
17
|
+
jobs="number_of_impacted_workers",
|
|
17
18
|
)
|
|
18
|
-
date_format = ["%m
|
|
19
|
+
date_format = ["%Y-%m-%d", "%Y-%m-%dT%H:%M:%S+00.00", "%m/%d/%Y", "%m-%d-%Y"]
|
|
19
20
|
date_corrections = {
|
|
20
21
|
"12/31/16-1/13/17": datetime(2016, 12, 31),
|
|
21
22
|
"12/4/15-tbd": datetime(2015, 12, 4),
|
|
@@ -47,6 +48,78 @@ class Transformer(BaseTransformer):
|
|
|
47
48
|
"9/92024": datetime(2024, 9, 9),
|
|
48
49
|
"4/112025": datetime(2025, 4, 11),
|
|
49
50
|
"3/31/2025,": datetime(2025, 3, 31),
|
|
51
|
+
"11/24/2025 - 4/1/2026": datetime(2025, 11, 24),
|
|
52
|
+
"February 15, 2025, through February 28, 2025": datetime(2025, 2, 15),
|
|
53
|
+
"April 12, 2025": datetime(2025, 4, 12),
|
|
54
|
+
"March 21, 2025": datetime(2025, 3, 21),
|
|
55
|
+
"8/2/2019, 12/13/2029": datetime(2019, 8, 2),
|
|
56
|
+
"June 29, 2025": datetime(2025, 6, 29),
|
|
57
|
+
"6/3/2023, 12/31/2023": datetime(2023, 6, 3),
|
|
58
|
+
"09/15/2020,12/17/2020": datetime(2020, 9, 15),
|
|
59
|
+
"03/28/2020, 04/01/2020": datetime(2020, 3, 28),
|
|
60
|
+
"June 10, 2025": datetime(2025, 6, 10),
|
|
61
|
+
"05/10/2020,05/23/2020": datetime(2020, 5, 10),
|
|
62
|
+
"August 23, 2024": datetime(2024, 8, 23),
|
|
63
|
+
"April 30, 2025. Additional layoffs are scheduled for June 20, 2025 and July 30, 2025": datetime(
|
|
64
|
+
2025, 4, 30
|
|
65
|
+
),
|
|
66
|
+
"April 25, 2025-July 3 1 , 2025.": datetime(2025, 4, 25),
|
|
67
|
+
"03/20/2020,04/03/2020,04/07/2020": datetime(2020, 3, 20),
|
|
68
|
+
"02/26/2022,03/11/2022": datetime(2022, 2, 26),
|
|
69
|
+
"December 2, 2025": datetime(2025, 12, 2),
|
|
70
|
+
"8/4/23, 9/1/23, 10/6/23, 11/3/23, 12/1/23, 1/5/24, 2/2/24, 2/16/24, 3/1/24, 3/29/24, 5/3/24, 5/31/24, 6/28/24, 9/15/24, 9/20/24, 9/27/24, 9/30/24, 12/6/24": datetime(
|
|
71
|
+
2023, 8, 4
|
|
72
|
+
),
|
|
73
|
+
"10/10/2020,10/23/2020": datetime(2020, 10, 10),
|
|
74
|
+
"June 7, 2025": datetime(2025, 6, 7),
|
|
75
|
+
"04/01/2020,06/30/2020": datetime(2020, 4, 1),
|
|
76
|
+
"February 10th, 2025 through February 24, 2025": datetime(2025, 2, 10),
|
|
77
|
+
"02 /01/2023 ,03/01/2023": datetime(2023, 2, 1),
|
|
78
|
+
"July 5th, 2024": datetime(2024, 7, 5),
|
|
79
|
+
"02/01/2023,03/01/2023": datetime(2023, 2, 1),
|
|
80
|
+
"7/15/2025, 7/29/2025": datetime(2025, 7, 15),
|
|
81
|
+
"12/8/24 through 12/21/24": datetime(2024, 12, 8),
|
|
82
|
+
"08/20/2023, 09/02/2023": datetime(2023, 8, 20),
|
|
83
|
+
"08/17/2020,08/30/2020": datetime(2020, 8, 17),
|
|
84
|
+
"3/10/2020,4/07/2020": datetime(2020, 3, 10),
|
|
85
|
+
"March 25, 2025": datetime(2025, 3, 25),
|
|
86
|
+
"03/25/2020,03/28/2020": datetime(2020, 3, 25),
|
|
87
|
+
"09/15/2023, 09/23/2023, 11/17/2023, 12/1/2023": datetime(2023, 9, 15),
|
|
88
|
+
"1/13/25, 2/13/25": datetime(2025, 1, 13),
|
|
89
|
+
"01/03/2020,05/30/2020": datetime(2020, 1, 3),
|
|
90
|
+
"05/01/2020,07/06/2020": datetime(2020, 5, 1),
|
|
91
|
+
"03/26/2020, 04/16/2020,05/10/2020": datetime(2020, 3, 26),
|
|
92
|
+
"3/13/2020, 3/20/2020, 4/6/2020,4/19/2020": datetime(2020, 3, 13),
|
|
93
|
+
"September 27, 2024": datetime(2024, 9, 27),
|
|
94
|
+
"09/08/2020,09/22/2020": datetime(2020, 9, 8),
|
|
95
|
+
"09/15/2020,03/17/2021": datetime(2020, 9, 15),
|
|
96
|
+
"03/23/2020, 03/26/2020": datetime(2020, 3, 23),
|
|
97
|
+
"12/20/2024, 1/31/25, 2/14/25, 2/21/25": datetime(2024, 12, 20),
|
|
98
|
+
"04/10/2020,04/22/2020": datetime(2020, 4, 10),
|
|
99
|
+
"10/12/2025 - 10/25/2025": datetime(2025, 10, 12),
|
|
100
|
+
"March, 2025": datetime(2025, 3, 1),
|
|
101
|
+
"5/17/24": datetime(2024, 5, 17),
|
|
102
|
+
"August 24, 2024": datetime(2024, 8, 24),
|
|
103
|
+
"10/21/2023, 10/28/2023, 11/04/2023, 11/18/2023, 11/25/2023, 12/30/2025": datetime(
|
|
104
|
+
2023, 10, 21
|
|
105
|
+
),
|
|
106
|
+
"04/14/2023, 05/13/2023 - 05/27/2023, 06/12/2023-08/11/2023, 06/12/2023-06/26/2023": datetime(
|
|
107
|
+
2023, 4, 14
|
|
108
|
+
),
|
|
109
|
+
"8/2/2019-12/31/2019": datetime(2019, 8, 2),
|
|
110
|
+
"9/21/2025 - 10/4/2025": datetime(2025, 9, 21),
|
|
111
|
+
"January 25, 2025 through February 7, 2025": datetime(2025, 1, 25),
|
|
112
|
+
"March 31, 2025, June 30, 2025, and September 30, 2025": datetime(2025, 3, 31),
|
|
113
|
+
"4/2/24": datetime(2024, 4, 2),
|
|
114
|
+
"9/9/24": datetime(2024, 9, 9),
|
|
115
|
+
"5/15/24": datetime(2024, 5, 15),
|
|
116
|
+
"3/22/25": datetime(2025, 3, 22),
|
|
117
|
+
"5/31/24": datetime(2024, 5, 31),
|
|
118
|
+
"10/2/23": datetime(2023, 10, 2),
|
|
119
|
+
"0025-05-16": datetime(2025, 5, 16),
|
|
120
|
+
"0024-05-31": datetime(2024, 5, 31),
|
|
121
|
+
"0005-02-04": datetime(2025, 2, 4),
|
|
122
|
+
"12/28/22025": datetime(2025, 12, 28),
|
|
50
123
|
}
|
|
51
124
|
jobs_corrections = {
|
|
52
125
|
"up to 703": 703,
|
|
@@ -79,6 +152,10 @@ class Transformer(BaseTransformer):
|
|
|
79
152
|
"55 total: 1 CT resident": 1,
|
|
80
153
|
"131 total; 92 CT residents": 92,
|
|
81
154
|
"80 Total; 4 CT": 4,
|
|
155
|
+
"66; #CT workers not indicated": None,
|
|
156
|
+
"": None,
|
|
157
|
+
"113,": 113,
|
|
158
|
+
"Greenwich": None, # Not my circus, not my monkeys
|
|
82
159
|
}
|
|
83
160
|
|
|
84
161
|
def transform_date(self, value: str) -> typing.Optional[str]:
|
|
@@ -107,12 +184,13 @@ class Transformer(BaseTransformer):
|
|
|
107
184
|
value = value.strip().split()[0].strip()
|
|
108
185
|
return super().transform_date(value)
|
|
109
186
|
|
|
110
|
-
def check_if_closure(self, row: typing.Dict) -> typing.Optional[bool]:
|
|
111
|
-
"""Determine whether a row is a closure or not.
|
|
112
|
-
|
|
113
|
-
Args:
|
|
114
|
-
row (dict): The raw row of data.
|
|
115
187
|
|
|
116
|
-
|
|
117
|
-
"""
|
|
118
|
-
|
|
188
|
+
# def check_if_closure(self, row: typing.Dict) -> typing.Optional[bool]:
|
|
189
|
+
# """Determine whether a row is a closure or not.
|
|
190
|
+
#
|
|
191
|
+
# Args:
|
|
192
|
+
# row (dict): The raw row of data.
|
|
193
|
+
#
|
|
194
|
+
# Returns: A boolean or null
|
|
195
|
+
# """
|
|
196
|
+
# return "yes" in row["closing"].lower() or None
|
|
@@ -45,8 +45,18 @@ class Transformer(BaseTransformer):
|
|
|
45
45
|
"Various dates through June 30, 2025": datetime(2025, 6, 30),
|
|
46
46
|
"July 31 through August 28, 2025": datetime(2025, 7, 31),
|
|
47
47
|
"September 30 through December 30, 2025": datetime(2025, 9, 30),
|
|
48
|
+
"Various Dates through June 29, 2025": datetime(2025, 6, 29),
|
|
49
|
+
"Various Dates through September 28, 2025": datetime(2025, 9, 28),
|
|
50
|
+
"Various Dates through November2, 2025": datetime(2025, 11, 2),
|
|
51
|
+
"Various Dates through November 2, 2025": datetime(2025, 11, 2),
|
|
52
|
+
"September 30 through September 28, 2025": datetime(2025, 9, 30), # What?
|
|
53
|
+
"March 14, 2025 through April 30, 2025": datetime(2025, 3, 14),
|
|
48
54
|
}
|
|
49
55
|
jobs_corrections = {
|
|
50
56
|
"All": None,
|
|
51
57
|
"TBD": None,
|
|
58
|
+
"45 (amended)": 45,
|
|
59
|
+
"63 (amended)": 63,
|
|
60
|
+
"54 (amended)": 54,
|
|
61
|
+
"46 (amended)": 46,
|
|
52
62
|
}
|
|
@@ -10,13 +10,13 @@ class Transformer(BaseTransformer):
|
|
|
10
10
|
|
|
11
11
|
postal_code = "KY"
|
|
12
12
|
fields = dict(
|
|
13
|
-
company="
|
|
14
|
-
location="
|
|
15
|
-
notice_date="
|
|
16
|
-
effective_date="
|
|
17
|
-
jobs="
|
|
13
|
+
company="company",
|
|
14
|
+
location="county",
|
|
15
|
+
notice_date="date_effective",
|
|
16
|
+
effective_date="date_received",
|
|
17
|
+
jobs="employees",
|
|
18
18
|
)
|
|
19
|
-
date_format = "%Y-%m-%d %H:%M:%S"
|
|
19
|
+
date_format = ["%Y-%m-%d %H:%M:%S", "%m/%d/%Y"]
|
|
20
20
|
minimum_year = 1997
|
|
21
21
|
date_corrections = {
|
|
22
22
|
"43490.0": None,
|
|
@@ -174,6 +174,10 @@ class Transformer(BaseTransformer):
|
|
|
174
174
|
"03/19/2012 - 04/01/2012": datetime.datetime(2012, 3, 19),
|
|
175
175
|
"2041-06-04 00:00:00": datetime.datetime(2014, 6, 4),
|
|
176
176
|
"04/05/2015": datetime.datetime(2015, 4, 5),
|
|
177
|
+
"2026-12-31 00:00:00": datetime.datetime(2026, 12, 31),
|
|
178
|
+
"1/8/2026": datetime.datetime(2026, 1, 8),
|
|
179
|
+
"10/20/2025": datetime.datetime(2025, 10, 20),
|
|
180
|
+
"12/31/2026": datetime.datetime(2026, 12, 31),
|
|
177
181
|
}
|
|
178
182
|
jobs_corrections = {
|
|
179
183
|
"?": None,
|
|
@@ -279,7 +283,7 @@ class Transformer(BaseTransformer):
|
|
|
279
283
|
|
|
280
284
|
Returns: A boolean or null
|
|
281
285
|
"""
|
|
282
|
-
if "closure" in row["
|
|
286
|
+
if "closure" in row["closure_or_layoff"].lower():
|
|
283
287
|
return True
|
|
284
288
|
else:
|
|
285
289
|
return None
|
|
@@ -50,6 +50,7 @@ class Transformer(BaseTransformer):
|
|
|
50
50
|
"6/30/204": datetime(2024, 6, 30),
|
|
51
51
|
"7/24/1969": datetime(2024, 7, 24),
|
|
52
52
|
"517112": None,
|
|
53
|
+
"01/301/2026": datetime(2026, 1, 31),
|
|
53
54
|
}
|
|
54
55
|
jobs_corrections = {
|
|
55
56
|
"103 (REVISED) 10/22/2020 108": 103,
|
|
@@ -70,4 +71,5 @@ class Transformer(BaseTransformer):
|
|
|
70
71
|
"N/A": None,
|
|
71
72
|
"9 50": 59,
|
|
72
73
|
"3 (remote workers from MD)": 3,
|
|
74
|
+
"50 - 60": 50,
|
|
73
75
|
}
|