warn-transformer 1.3.274__py3-none-any.whl → 1.3.276__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/pa.py ADDED
@@ -0,0 +1,198 @@
1
+ import re
2
+ import typing
3
+ from datetime import datetime
4
+
5
+ from ..schema import BaseTransformer
6
+
7
+
8
+ class Transformer(BaseTransformer):
9
+ """Transform Pennsylvania raw data for consolidation."""
10
+
11
+ postal_code = "PA"
12
+ fields = dict(
13
+ company="company",
14
+ location="county",
15
+ # notice_date="Date Received",
16
+ effective_date="date_effective",
17
+ jobs="jobs",
18
+ )
19
+ date_format = ["%m/%d/%Y", "%m/%d/%y"]
20
+ date_corrections = {
21
+ "Unknown": None,
22
+ "": None,
23
+ "beginning 10/9/25; ending 10/31/25": datetime(2025, 10, 9),
24
+ "beginning 8/26/2025; ending 9/9/2025": datetime(2025, 8, 26),
25
+ "beginning 9/1/2025; ending 9/15/2025": datetime(2025, 9, 1),
26
+ "8/30/2025 - 12/31/2025": datetime(2025, 8, 30),
27
+ "beginning 8/18/2025; ending 12/31/2026": datetime(2025, 8, 18),
28
+ "beginning 8/12/25; ending 10/18/25": datetime(2025, 8, 12),
29
+ "beginning 6/13/25; ending 6/30/25": datetime(2025, 6, 13),
30
+ "beginning 1/17/25; ending 6/30/25": datetime(2025, 1, 17),
31
+ "beginning 7/31/25; ending 8/3/25": datetime(2025, 7, 31),
32
+ "8/25/2025 - 9/8/2025": datetime(2025, 8, 25),
33
+ "5/5/2025 @ Etters location; 6/4/2025 @ Philadelphia location": datetime(2025, 5, 5),
34
+ "7/1/2025 - 7/15/2025": datetime(2025, 7, 1),
35
+ "8/1/2025 - 12/31/2025": datetime(2025, 8, 1),
36
+ "beginning 4/25/25; ending 5/2/25": datetime(2025, 4, 25),
37
+ "first wave - 6/9/2025 impacting 192 workers ... second wave - 9/30/2025 impacting 106 workers ... final wave ending - 11/17/2025 impacting 25 workers": datetime(2025, 6, 9),
38
+ "4/22/2025 for Frankford Avenue location ... 4/24/2025 for Castor Avenue location": datetime(2025, 4, 22),
39
+ "first wave - 5/9/2025 impacting 124 workers ... second wave - 7/1/2025 impacting 112 workers ... final wave ending - 12/31/2025 impacting 62 workers": datetime(2025, 5, 9),
40
+ "6/27/2025 - 12/31/2025": datetime(2025, 6, 27),
41
+ "beginning: 3/24/2025; ending: 4/12/2025": datetime(2025, 3, 24),
42
+ "beginning: 3/24/2025; ending: 4/12/2025": datetime(2025, 3, 24),
43
+ "May 19, 23, 30 ... June 6, 20, 27 ... July 11, 18 ... August 8, 22, 29 ... September 12": datetime(2025, 5, 19),
44
+ "first round -- 5/16 through 5/30; second round -- 6/23 through 7/7; final round -- sometime in 2026": datetime(2025, 5, 16),
45
+ "4/23/25; ending: 5/7/25": datetime(2025, 4, 23),
46
+ "4/9/25-10/15/25": datetime(2025, 4, 9),
47
+ "5/26/25-5/30/25": datetime(2025, 1, 31),
48
+ "1/31/25-3/31/25": datetime(2025, 1, 31),
49
+ "beginning: 3/18/25; ending: 3/31/25": datetime(2025, 3, 18),
50
+ "beginning: 1/6/2025; completed: 3/31/2025": datetime(2025, 1, 6),
51
+ "Layoff date: 2/18/2025; Closure date: 2/21/2025": datetime(2025, 2, 18),
52
+ "2/17/2025 through 3/3/2025": datetime(2025, 2, 17),
53
+ "Layoffs: 1/25/2025; Closure: 1/31/2025": datetime(2025, 1, 25),
54
+ "beginning: 1/1/2025; ending: 1/3/2025": datetime(2025, 1, 1),
55
+ "1/3/2025 - 1/31/2026": datetime(2025, 1, 3),
56
+ "1. 1/15/2025 ... 2. 1/22/2025 ... 3. 2/12/2025": datetime(2025, 1, 15),
57
+ "beginning: 12/14/2024; ending: 12/28/2024": datetime(2024, 12, 14),
58
+ "12/9/2024 -- 173 workers ... 12/20/2024 -- 60 workers ... 1/13/2025 -- 2 workers ... 1/27/2025 -- 9 workers ... 2/17/2025 -- 26 workers": datetime(2024, 12, 9),
59
+ "beginning: 11/30/24; ending: 12/3/24": datetime(2024, 11, 30),
60
+ "11/27/2024 - 12/31/2024": datetime(2024, 11, 27),
61
+ "11/10/2024 ": datetime(2024, 11, 10),
62
+ "11/22/2024 ": datetime(2024, 11, 22),
63
+ "9/23/2024 ": datetime(2024, 9, 23),
64
+ "11/22 /2024 ": datetime(2024, 11, 22),
65
+ "beginning: 10/26/2024; ending: 11/9/2024 ": datetime(2024, 10, 26),
66
+ "beginning: 10/27/2024; ending: 11/10/2024": datetime(2024, 10, 27),
67
+ "8/30/2024 - 10/4/2024": datetime(2024, 8, 30),
68
+ "beginning: 10/7/2024; ending: 12/31/2024": datetime(2024, 10, 7),
69
+ "6/7 /2024": datetime(2024, 6, 7),
70
+ "8/9 /2024": datetime(2024, 8, 9),
71
+ "6/7 /2024": datetime(2024, 6, 7),
72
+ "8/16 /2024": datetime(2024, 8, 16),
73
+ "8/9/2024 or within a 14-day window ": datetime(2024, 8, 9),
74
+ "beginning: 8/26/2024; E nding: 12/31/2024 ": datetime(2024, 8, 26),
75
+ "beginning: 8/26/2024; E nding: 12/31/2024": datetime(2024, 8, 26),
76
+ "beginning: 8/26/2024; Ending: 12/31/2024": datetime(2024, 8, 26),
77
+ "8/2/2024-8/16/2024": datetime(2024, 8, 2),
78
+ "Beginning 4/20/24; Ending 5/4/2024": datetime(2024, 4, 20),
79
+ "Beginning 4/13/2024; Ending 5/31/2024": datetime(2024, 4, 13),
80
+ "Beginning 2/15/2024; Ending 4/30/2024": datetime(2024, 2, 15),
81
+ "14 day period commencing 4/15/2024": datetime(2024, 4, 15),
82
+ "Beginning 3/8/2024; Ending end of year 2024": datetime(2024, 3, 8),
83
+ "Beginning 1/31/2024; Ending end of year 2024": datetime(2024, 1, 31),
84
+ "3/15/24 - 9/30/24": datetime(2024, 3, 15),
85
+ "Beginning 2/11/2024; Ending 2/25/2024": datetime(2024, 2, 11),
86
+ "Beginning February/March 2024; Ending July 1, 2024": datetime(2024, 2, 1),
87
+ "1/2/2024 and continuing periodically": datetime(2024, 1, 2),
88
+ "1/6/2024 - 3/26/2024": datetime(2024, 1, 6),
89
+ "1/16/2024 - 3/1/2024": datetime(2024, 1, 16),
90
+ "1/18/2024. Additional layoff dates: 2/19/24 & 4/18/24": datetime(2024, 1, 18),
91
+ "beginning: 1/3/2024 (52 employees); ending: 3/31/2024 (128 employees)": datetime(2024, 1, 3),
92
+ "Beginning 12/15/2023 - Ending 9/30/2024": datetime(2023, 12, 15),
93
+ "Beginning 11/20/2023 - Ending 12/15/2023": datetime(2023, 11, 20),
94
+ "9/8/23 - 10/1/23": datetime(2023, 9, 8),
95
+ "Beginning 9/29/23; Ending 11/16/23": datetime(2023, 9, 23),
96
+ "Beginning: October 31, 2023 - ... Ending: April 15, 2024": datetime(2023, 10, 31),
97
+ "Beginning: October 21, 2023 - ... Ending: December 30, 2023": datetime(2023, 10, 21),
98
+ "9/8/23 (96 employees) ... 9/15/23 (66 employees) ... 9/22/23 (36 employees) ... 9/29/23 (26 employees) ... 9/30/23 (1 employee) ... 10/6/23 (13 employees) ... 10/13/23 (37 employees) ... 10/20/23 (34 employees) ... 11/10/23 (10 employees) ... 12/1/23 (61 employees) ... 2/2/24 (13 employees) ... ": datetime(2023, 9, 8),
99
+ "9/8/23 (96 employees)": datetime(2023, 9, 8),
100
+ "Beginning 8/21/23 - Ending 9/19/23": datetime(2023, 8, 21),
101
+ "beginning 5/10/23 and ending 60-74 days thereafter": datetime(2023, 5, 10),
102
+ "7/14/23 (37 workers); 9/15/23 (125 workers)": datetime(2023, 7, 14),
103
+ "04/14 -- 11 Employees ... 05/05 -- 20 Employees ... 06/17 -- 40 Employees ... 07/07 -- 20 Employees ... 08/04 -- 20 Employees ... 09/08 -- 20 Employees ... 10/06 -- 20 Employees ... 11/03 -- 69 Employees ... 12/29 -- 40 Employees": datetime(2023, 4, 14),
104
+ "04/14": datetime(2023, 4, 14),
105
+ "Phase 1: 4/14 ... Phase 2: 5/13 -- 5/27 ... Phase 3: 6/12 -- 8/11": datetime(2023, 4, 14),
106
+ "Phase 1: 4/14": datetime(2023, 4, 14),
107
+ "7/3/20223 - 10/16/2023": datetime(2023, 7, 3),
108
+ "6/25/2023 - 7/9/2023": datetime(2023, 6, 25),
109
+ "6/2/23 -- 105 Employees ... 7/7/23 -- 10 Employees ... 10/6/23 -- 70 Employees ... 12/1/23 -- 18 Employees": datetime(2023, 6, 2),
110
+ "6/2/23 -- 105 Employees": datetime(2023, 6, 2),
111
+ "6/30/23 -- 50 Employees ... 8/11/23 -- 74 Employees": datetime(2023, 6, 30),
112
+ "6/30/23 -- 50 Employees": datetime(2023, 6, 30),
113
+ "Phase 1: 4/28/23 (67 employees) ... Phase 2: 7/14/23 (9 employees) ... Phase 3: 10/6/23 (4 employees)": datetime(2023, 4, 28),
114
+ "Phase 1: 4/28/23 (67 employees)": datetime(2023, 4, 28),
115
+ "February 1, 2023 -- 82 Employees ... March 1, 2023 -- 1 Employee ... April 1, 2023 -- 21 Employees": datetime(2023, 2, 1),
116
+ "February 1, 2023 -- 82 Employees": datetime(2023, 2, 1),
117
+ "1st Phase: 1/9/2023 (49 Employees) ... 2nd Phase: 7/31/2023 (15 Employees)": datetime(2023, 1, 9),
118
+ "1st Phase: 1/9/2023 (49 Employees)": datetime(2023, 1, 9),
119
+ "Phase 1: 1/11/23 (38 workers) ... Phase 2: 2/10/23 (59 workers) ... Phase 3: 3/31/23 (11 workers) ... Phase 4: TBD (6 workers)": datetime(2023, 1, 11),
120
+ "Phase 1: 1/11/23 (38 workers)": datetime(2023, 1, 11),
121
+ "Beginning: 7/15/25; Ending: 7/29/25": datetime(2025, 7, 15),
122
+ "Beginning: 12/9/2024; Ending: 12/21/2024": datetime(2024, 12, 9),
123
+ "beginning: 10/26/2024; ending: 11/9/2024": datetime(2024, 10, 26),
124
+ "beginning: 10/27/2024; ending: 11/10/2024": datetime(2024, 10, 27),
125
+ "Commencing: 5/30/2024; Ending: 7/29/2024": datetime(2024, 5, 30),
126
+ "8/9/2024 or within a 14-day window": datetime(2024, 8, 9),
127
+ "Commencing: 7/6/2024; Ending: 9/1/2024": datetime(2024, 7, 6),
128
+ "Beginning: 6/3/24; Ending: 6/16/24": datetime(2024, 6, 3),
129
+ "Beginning: 2/24/24; Ending: 4/23/24": datetime(2024, 2, 24),
130
+ "Beginning: 5/17/24; Ending: 8/30/24": datetime(2024, 5, 17),
131
+ "Beginning: 1/16/24; Ending: 3/29/24": datetime(2024, 1, 16),
132
+ "Beginning: 1/2/2024 - Ending: 3/31/2024": datetime(2024, 1, 2),
133
+ "November 3, 2023": datetime(2023, 11, 3),
134
+ "9/8/23 (96 employees) ... 9/15/23 (66 employees) ... 9/22/23 (36 employees) ... 9/29/23 (26 employees) ... 9/30/23 (1 employee) ... 10/6/23 (13 employees) ... 10/13/23 (37 employees) ... 10/20/23 (34 employees) ... 11/10/23 (10 employees) ... 12/1/23 (61 employees) ... 2/2/24 (13 employees) ...": datetime(2023, 9, 8),
135
+ "Beginning: 2/28/23 - Ending: 12/31/23": datetime(2023, 2, 28),
136
+ "March 3, 2023": datetime(2023, 3, 3),
137
+ "March 31, 2023": datetime(2023, 3, 31),
138
+ "March 5, 2023": datetime(2023, 3, 5),
139
+ "February 28, 2023": datetime(2023, 2, 28),
140
+ "Beginning: March 15, 2023; Ending: October 2, 2023": datetime(2023, 3, 15),
141
+ "Beginning: January 23, 2023; Ending: March 24, 2023": datetime(2023, 1, 23),
142
+ }
143
+
144
+ jobs_corrections = {
145
+ "Unknown": None,
146
+ "TBD": None,
147
+ "unknown": None,
148
+ "To be determined": None,
149
+ "60 total": 60,
150
+ "72 (54 PA residents impacted)": 54,
151
+ "9 Pennsylvania workers (209 total) ... EFFECTIVE DATE: Beginning: 7/15/25; Ending: 7/29/25": 9,
152
+ "501 @ Etters location; 595 @ Philadelphia location": 1096,
153
+ "14 Pennsylvania residents": 14,
154
+ "430 nationwide; unknown number of PA residents impacted": None,
155
+ "Cooked Plant -- 110 ... Raw Plant - 119": 229,
156
+ "420 ... EFFECTIVE DATE: Beginning: 12/9/2024; Ending: 12/21/2024": 420,
157
+ "124 ... EFFECTIVE DATE: Commencing: 5/30/2024; Ending: 7/29/2024": 124,
158
+ "645 (**ONLY FIVE PA RESIDENTS AFFECTED**)": 5,
159
+ "253 (173 @ Allentown and 80 @ Greensburg)": 253,
160
+ "9 Pennsylvania workers (209 total)": 9,
161
+ "105 (91 Temporary Layoffs and 14 Permanent Layoffs)": 105,
162
+ "60 (all employees work remotely)": None,
163
+ "206 (198 P/T and 8 F/T Employees)": 206,
164
+ "54 (All employees can be relocated to other Amazon Delivery Service Partners)": 54,
165
+ "179 (80 Marsden Employees and 99 Temporary Employees from both Express Labor & Integrated Staffing Agencies)": 179,
166
+ "9236 Nationwide; PA total pending verification": None,
167
+ "81 Total -- 13 of which reside in PA": 81,
168
+ }
169
+
170
+ def transform_date(self, value: str) -> typing.Optional[str]:
171
+ """Transform a raw date string into a date object.
172
+
173
+ Args:
174
+ value (str): The raw date string provided by the source
175
+
176
+ Returns: A date object ready for consolidation. Or, if the date string is invalid, a None.
177
+ """
178
+ # Cut out cruft
179
+ # value = value.replace("Updated", "")
180
+ # value = value.replace("Revised", "")
181
+ # value = value.replace("-", "").strip()
182
+
183
+ # Split double dates
184
+ # if len(value) == 20:
185
+ # value = value[:10]
186
+ # elif len(value) == 19:
187
+ # value = value[:9]
188
+ # value = re.split(r"\s{2,}", value)[0].strip()
189
+ # value = value.split("Originated")[0].strip()
190
+ # print(value)
191
+
192
+ try:
193
+ return super().transform_date(value)
194
+ except Exception:
195
+ # value = value.split(" to ")[0].strip()
196
+ # value = value.split()[0].strip()
197
+ # value = value.replace("‐", "")
198
+ return super().transform_date(value)
@@ -180,6 +180,8 @@ class Transformer(BaseTransformer):
180
180
  "9/9/25, 9/24/25, 9/25/25": datetime(2025, 9, 9),
181
181
  "12/31/25 and 1/1/26": datetime(2025, 12, 31),
182
182
  "1/4/26 & 1/23/26": datetime(2026, 1, 4),
183
+ "1/15/26 & 1/17/26": datetime(2026, 1, 15),
184
+ "11/19/25 - 12/2/25": datetime(2025, 11, 19),
183
185
  }
184
186
 
185
187
  def transform_jobs(self, value: str) -> typing.Optional[int]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warn-transformer
3
- Version: 1.3.274
3
+ Version: 1.3.276
4
4
  Summary: Consolidate, enrich and analyze the data gathered by warn-scraper
5
5
  Home-page: https://github.com/biglocalnews/warn-transformer
6
6
  Author: Big Local News
@@ -3,6 +3,7 @@ warn_transformer/cli.py,sha256=gwO96jz_dj_LSpMYtY-avRvZl3hzE7sUMhimpMZwUFU,3180
3
3
  warn_transformer/consolidate.py,sha256=P2kgwxGt7V-ltD-XVnPMwsRhzNpXnxlm8J962hRPwn0,2393
4
4
  warn_transformer/download.py,sha256=xkSV4jj2cwz70DqtNzoIs5pWIJUXdtBtv5W68Y2lNhU,1642
5
5
  warn_transformer/integrate.py,sha256=ofeIvJGqktxsX8bj2ngSgEtJcIn293s_IXNCGNUIMwA,14829
6
+ warn_transformer/pa.py,sha256=Xk-kgEunbVkOUfW6ncbLEOOi5THDf_YagnihdCV5kD8,11960
6
7
  warn_transformer/schema.py,sha256=6m62x1-B5LJFPMmUicZe6TZUzjkIfxJjm5-0hlo-x2k,13051
7
8
  warn_transformer/utils.py,sha256=wEgK9lE2aLKdtlQAgu21vMo0nTcSK6LbT_eMrkke-50,655
8
9
  warn_transformer/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -30,7 +31,7 @@ warn_transformer/transformers/mi.py,sha256=fXKiv-Slgh34tpKGPZiNs0hVd2mDqiaOP2ZEa
30
31
  warn_transformer/transformers/mo.py,sha256=NYmHMISfXawIoIm00Bsvjzjw4TGAxbsHiS8MQ6oYEdk,1709
31
32
  warn_transformer/transformers/mt.py,sha256=QSSlo3BFjJklcE4e6tUu_vJa1H887XeDXdxsCY0LGm0,762
32
33
  warn_transformer/transformers/ne.py,sha256=WqUkSsoR9a2Oi4Y7sjOqH3C2lbbaYWQzFCvhme2iNKo,982
33
- warn_transformer/transformers/nj.py,sha256=brxBz_JmJ-RolBQcN4vB7WC7m9Pg4aiFUaxoGHppsvc,9797
34
+ warn_transformer/transformers/nj.py,sha256=z2XKkkeYlxkPjF3mt1ioU5cHIsHU9L_z2cGvQnH7Xpk,9903
34
35
  warn_transformer/transformers/nm.py,sha256=w_u9AmXyc-VCqnspTvuUNlP2cwqjwSRvqeVHwQoLux0,664
35
36
  warn_transformer/transformers/ny.py,sha256=YGlomU9-pr6dBLrR0xROL8jJzOwJWPGV01GSByqUHds,2559
36
37
  warn_transformer/transformers/oh.py,sha256=ZTREXZgvurJjigJ-g38qBtiDmT4P1p5ZvOH0G7Y4Q9I,3273
@@ -46,9 +47,9 @@ warn_transformer/transformers/va.py,sha256=vxlkvIgrphAUqqCKi_6xZ8raOEhbUpskBukKb
46
47
  warn_transformer/transformers/vt.py,sha256=5J9p7yexXmn4K3Pe0xIkPa9fR10DpZ2DSzvjkrDbCZs,452
47
48
  warn_transformer/transformers/wa.py,sha256=0addhlk4jBAfScVngCq8VUJvd-Bc8e1winPn8Lu2DZo,1111
48
49
  warn_transformer/transformers/wi.py,sha256=sM5KFkACDQ6dqiQ666wvZ8gJe47ywFVmM1hFbw8Io64,3019
49
- warn_transformer-1.3.274.dist-info/licenses/LICENSE,sha256=ZV-QHyqPwyMuwuj0lI05JeSjV1NyzVEk8Yeu7FPtYS0,585
50
- warn_transformer-1.3.274.dist-info/METADATA,sha256=g0fy17XhZTj0BsBCyGwkvrTazsxCh_8NsusHlWqNSCI,1740
51
- warn_transformer-1.3.274.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
52
- warn_transformer-1.3.274.dist-info/entry_points.txt,sha256=MvWNvQnZTu5Fbpd7JMN-KGPeklT6f5v6Hx39uqnBl28,62
53
- warn_transformer-1.3.274.dist-info/top_level.txt,sha256=8nZpmzmOcqSnismvY34muSX8MvaZM6aEfLldl-wp0fQ,17
54
- warn_transformer-1.3.274.dist-info/RECORD,,
50
+ warn_transformer-1.3.276.dist-info/licenses/LICENSE,sha256=ZV-QHyqPwyMuwuj0lI05JeSjV1NyzVEk8Yeu7FPtYS0,585
51
+ warn_transformer-1.3.276.dist-info/METADATA,sha256=TZoSYp8NNpYwGCZF6zli-gyl2C4DFQ6Jl24B8otoUJ4,1740
52
+ warn_transformer-1.3.276.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
53
+ warn_transformer-1.3.276.dist-info/entry_points.txt,sha256=MvWNvQnZTu5Fbpd7JMN-KGPeklT6f5v6Hx39uqnBl28,62
54
+ warn_transformer-1.3.276.dist-info/top_level.txt,sha256=8nZpmzmOcqSnismvY34muSX8MvaZM6aEfLldl-wp0fQ,17
55
+ warn_transformer-1.3.276.dist-info/RECORD,,