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.

@@ -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 your provided is not valid.")
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="layoff_location",
14
- notice_date="warn_date",
15
- effective_date="layoff_date",
16
- jobs="number_workers",
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/%d/%Y", "%m/%d/%y", "%m-%d-%y", "%Y"]
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
- Returns: A boolean or null
117
- """
118
- return "yes" in row["closing"].lower() or None
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="Company Name",
14
- location="County",
15
- notice_date="Date Received",
16
- effective_date="Projected Date",
17
- jobs="Employees",
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["Closure or Layoff?"].lower():
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
  }