warn-transformer 1.3.276__tar.gz → 1.3.277__tar.gz

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.

Files changed (143) hide show
  1. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.pre-commit-config.yaml +1 -0
  2. {warn_transformer-1.3.276/warn_transformer.egg-info → warn_transformer-1.3.277}/PKG-INFO +1 -1
  3. warn_transformer-1.3.277/tests/data/raw/pa.csv +1 -0
  4. warn_transformer-1.3.277/warn_transformer/transformers/pa.py +243 -0
  5. {warn_transformer-1.3.276 → warn_transformer-1.3.277/warn_transformer.egg-info}/PKG-INFO +1 -1
  6. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/SOURCES.txt +1 -1
  7. warn_transformer-1.3.276/tests/data/raw/pa.csv +0 -232
  8. warn_transformer-1.3.276/warn_transformer/pa.py +0 -198
  9. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.devcontainer/devcontainer.json +0 -0
  10. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/dependabot.yml.disabled +0 -0
  11. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-actions-finished.png +0 -0
  12. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-actions-start.png +0 -0
  13. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-changelog-button.png +0 -0
  14. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-changelog-entered.png +0 -0
  15. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-draft-button.png +0 -0
  16. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-name-release.png +0 -0
  17. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-name-tag.png +0 -0
  18. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-publish-button.png +0 -0
  19. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-pypi.png +0 -0
  20. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-release-published.png +0 -0
  21. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-releases-button.png +0 -0
  22. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/images/releasing-tag-button.png +0 -0
  23. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.github/workflows/continuous-deployment.yml +0 -0
  24. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/.gitignore +0 -0
  25. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/LICENSE +0 -0
  26. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/MANIFEST.in +0 -0
  27. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/Makefile +0 -0
  28. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/Pipfile +0 -0
  29. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/Pipfile.lock +0 -0
  30. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/README.md +0 -0
  31. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/Makefile +0 -0
  32. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/conf.py +0 -0
  33. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/contributing.md +0 -0
  34. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/index.md +0 -0
  35. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/make.bat +0 -0
  36. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/reference.rst +0 -0
  37. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/releasing.md +0 -0
  38. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/docs/requirements.txt +0 -0
  39. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/setup.cfg +0 -0
  40. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/setup.py +0 -0
  41. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/__init__.py +0 -0
  42. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/cassettes/test_download.yaml +0 -0
  43. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/cassettes/test_integrate.yaml +0 -0
  44. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/conftest.py +0 -0
  45. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/processed/consolidated.csv +0 -0
  46. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ak.csv +0 -0
  47. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/al.csv +0 -0
  48. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/az.csv +0 -0
  49. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ca.csv +0 -0
  50. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/co.csv +0 -0
  51. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/consolidated.csv +0 -0
  52. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ct.csv +0 -0
  53. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/dc.csv +0 -0
  54. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/de.csv +0 -0
  55. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/fl.csv +0 -0
  56. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ga.csv +0 -0
  57. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/hi.csv +0 -0
  58. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ia.csv +0 -0
  59. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/id.csv +0 -0
  60. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/il.csv +0 -0
  61. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/in.csv +0 -0
  62. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/integrated.csv +0 -0
  63. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ks.csv +0 -0
  64. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ky.csv +0 -0
  65. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/la.csv +0 -0
  66. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/md.csv +0 -0
  67. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/me.csv +0 -0
  68. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/mi.csv +0 -0
  69. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/mo.csv +0 -0
  70. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/mt.csv +0 -0
  71. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ne.csv +0 -0
  72. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/nj.csv +0 -0
  73. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/nm.csv +0 -0
  74. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ny.csv +0 -0
  75. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/oh.csv +0 -0
  76. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ok.csv +0 -0
  77. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/or.csv +0 -0
  78. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ri.csv +0 -0
  79. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/sc.csv +0 -0
  80. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/sd.csv +0 -0
  81. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/tn.csv +0 -0
  82. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/tx.csv +0 -0
  83. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/ut.csv +0 -0
  84. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/va.csv +0 -0
  85. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/vt.csv +0 -0
  86. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/wa.csv +0 -0
  87. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/data/raw/wi.csv +0 -0
  88. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/test_consolidate.py +0 -0
  89. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/test_download.py +0 -0
  90. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/tests/test_integrate.py +0 -0
  91. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/__init__.py +0 -0
  92. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/cli.py +0 -0
  93. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/consolidate.py +0 -0
  94. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/download.py +0 -0
  95. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/integrate.py +0 -0
  96. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/schema.py +0 -0
  97. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/__init__.py +0 -0
  98. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ak.py +0 -0
  99. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/al.py +0 -0
  100. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/az.py +0 -0
  101. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ca.py +0 -0
  102. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/co.py +0 -0
  103. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ct.py +0 -0
  104. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/dc.py +0 -0
  105. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/de.py +0 -0
  106. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/fl.py +0 -0
  107. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ga.py +0 -0
  108. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/hi.py +0 -0
  109. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ia.py +0 -0
  110. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/id.py +0 -0
  111. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/il.py +0 -0
  112. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/in.py +0 -0
  113. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ks.py +0 -0
  114. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ky.py +0 -0
  115. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/la.py +0 -0
  116. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/md.py +0 -0
  117. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/me.py +0 -0
  118. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/mi.py +0 -0
  119. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/mo.py +0 -0
  120. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/mt.py +0 -0
  121. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ne.py +0 -0
  122. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/nj.py +0 -0
  123. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/nm.py +0 -0
  124. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ny.py +0 -0
  125. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/oh.py +0 -0
  126. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ok.py +0 -0
  127. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/or.py +0 -0
  128. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ri.py +0 -0
  129. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/sc.py +0 -0
  130. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/sd.py +0 -0
  131. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/tn.py +0 -0
  132. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/tx.py +0 -0
  133. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/ut.py +0 -0
  134. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/va.py +0 -0
  135. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/vt.py +0 -0
  136. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/wa.py +0 -0
  137. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/transformers/wi.py +0 -0
  138. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer/utils.py +0 -0
  139. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/dependency_links.txt +0 -0
  140. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/entry_points.txt +0 -0
  141. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/not-zip-safe +0 -0
  142. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/requires.txt +0 -0
  143. {warn_transformer-1.3.276 → warn_transformer-1.3.277}/warn_transformer.egg-info/top_level.txt +0 -0
@@ -6,6 +6,7 @@ repos:
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  language_version: python3
9
+ exclude: \.csv$
9
10
  - id: end-of-file-fixer
10
11
  language_version: python3
11
12
  - id: check-yaml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warn-transformer
3
- Version: 1.3.276
3
+ Version: 1.3.277
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
@@ -0,0 +1 @@
1
+ addressfull,closure_or_layoff,company,county,date_effective,jobs
@@ -0,0 +1,243 @@
1
+ import typing
2
+ from datetime import datetime
3
+
4
+ from ..schema import BaseTransformer
5
+
6
+
7
+ class Transformer(BaseTransformer):
8
+ """Transform Pennsylvania raw data for consolidation."""
9
+
10
+ postal_code = "PA"
11
+ fields = dict(
12
+ company="company",
13
+ location="county",
14
+ # notice_date="Date Received",
15
+ effective_date="date_effective",
16
+ jobs="jobs",
17
+ )
18
+ date_format = ["%m/%d/%Y", "%m/%d/%y"]
19
+ date_corrections = {
20
+ "Unknown": None,
21
+ "": None,
22
+ "beginning 10/9/25; ending 10/31/25": datetime(2025, 10, 9),
23
+ "beginning 8/26/2025; ending 9/9/2025": datetime(2025, 8, 26),
24
+ "beginning 9/1/2025; ending 9/15/2025": datetime(2025, 9, 1),
25
+ "8/30/2025 - 12/31/2025": datetime(2025, 8, 30),
26
+ "beginning 8/18/2025; ending 12/31/2026": datetime(2025, 8, 18),
27
+ "beginning 8/12/25; ending 10/18/25": datetime(2025, 8, 12),
28
+ "beginning 6/13/25; ending 6/30/25": datetime(2025, 6, 13),
29
+ "beginning 1/17/25; ending 6/30/25": datetime(2025, 1, 17),
30
+ "beginning 7/31/25; ending 8/3/25": datetime(2025, 7, 31),
31
+ "8/25/2025 - 9/8/2025": datetime(2025, 8, 25),
32
+ "5/5/2025 @ Etters location; 6/4/2025 @ Philadelphia location": datetime(
33
+ 2025, 5, 5
34
+ ),
35
+ "7/1/2025 - 7/15/2025": datetime(2025, 7, 1),
36
+ "8/1/2025 - 12/31/2025": datetime(2025, 8, 1),
37
+ "beginning 4/25/25; ending 5/2/25": datetime(2025, 4, 25),
38
+ "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(
39
+ 2025, 6, 9
40
+ ),
41
+ "4/22/2025 for Frankford Avenue location ... 4/24/2025 for Castor Avenue location": datetime(
42
+ 2025, 4, 22
43
+ ),
44
+ "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(
45
+ 2025, 5, 9
46
+ ),
47
+ "6/27/2025 - 12/31/2025": datetime(2025, 6, 27),
48
+ "beginning: 3/24/2025; ending: 4/12/2025": datetime(2025, 3, 24),
49
+ "May 19, 23, 30 ... June 6, 20, 27 ... July 11, 18 ... August 8, 22, 29 ... September 12": datetime(
50
+ 2025, 5, 19
51
+ ),
52
+ "first round -- 5/16 through 5/30; second round -- 6/23 through 7/7; final round -- sometime in 2026": datetime(
53
+ 2025, 5, 16
54
+ ),
55
+ "4/23/25; ending: 5/7/25": datetime(2025, 4, 23),
56
+ "4/9/25-10/15/25": datetime(2025, 4, 9),
57
+ "5/26/25-5/30/25": datetime(2025, 1, 31),
58
+ "1/31/25-3/31/25": datetime(2025, 1, 31),
59
+ "beginning: 3/18/25; ending: 3/31/25": datetime(2025, 3, 18),
60
+ "beginning: 1/6/2025; completed: 3/31/2025": datetime(2025, 1, 6),
61
+ "Layoff date: 2/18/2025; Closure date: 2/21/2025": datetime(2025, 2, 18),
62
+ "2/17/2025 through 3/3/2025": datetime(2025, 2, 17),
63
+ "Layoffs: 1/25/2025; Closure: 1/31/2025": datetime(2025, 1, 25),
64
+ "beginning: 1/1/2025; ending: 1/3/2025": datetime(2025, 1, 1),
65
+ "1/3/2025 - 1/31/2026": datetime(2025, 1, 3),
66
+ "1. 1/15/2025 ... 2. 1/22/2025 ... 3. 2/12/2025": datetime(2025, 1, 15),
67
+ "beginning: 12/14/2024; ending: 12/28/2024": datetime(2024, 12, 14),
68
+ "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(
69
+ 2024, 12, 9
70
+ ),
71
+ "beginning: 11/30/24; ending: 12/3/24": datetime(2024, 11, 30),
72
+ "11/27/2024 - 12/31/2024": datetime(2024, 11, 27),
73
+ "11/10/2024 ": datetime(2024, 11, 10),
74
+ "11/22/2024 ": datetime(2024, 11, 22),
75
+ "9/23/2024 ": datetime(2024, 9, 23),
76
+ "11/22 /2024 ": datetime(2024, 11, 22),
77
+ "beginning: 10/26/2024; ending: 11/9/2024 ": datetime(2024, 10, 26),
78
+ "beginning: 10/27/2024; ending: 11/10/2024": datetime(2024, 10, 27),
79
+ "8/30/2024 - 10/4/2024": datetime(2024, 8, 30),
80
+ "beginning: 10/7/2024; ending: 12/31/2024": datetime(2024, 10, 7),
81
+ "6/7 /2024": datetime(2024, 6, 7),
82
+ "8/9 /2024": datetime(2024, 8, 9),
83
+ "8/16 /2024": datetime(2024, 8, 16),
84
+ "8/9/2024 or within a 14-day window ": datetime(2024, 8, 9),
85
+ "beginning: 8/26/2024; E nding: 12/31/2024 ": datetime(2024, 8, 26),
86
+ "beginning: 8/26/2024; E nding: 12/31/2024": datetime(2024, 8, 26),
87
+ "beginning: 8/26/2024; Ending: 12/31/2024": datetime(2024, 8, 26),
88
+ "8/2/2024-8/16/2024": datetime(2024, 8, 2),
89
+ "Beginning 4/20/24; Ending 5/4/2024": datetime(2024, 4, 20),
90
+ "Beginning 4/13/2024; Ending 5/31/2024": datetime(2024, 4, 13),
91
+ "Beginning 2/15/2024; Ending 4/30/2024": datetime(2024, 2, 15),
92
+ "14 day period commencing 4/15/2024": datetime(2024, 4, 15),
93
+ "Beginning 3/8/2024; Ending end of year 2024": datetime(2024, 3, 8),
94
+ "Beginning 1/31/2024; Ending end of year 2024": datetime(2024, 1, 31),
95
+ "3/15/24 - 9/30/24": datetime(2024, 3, 15),
96
+ "Beginning 2/11/2024; Ending 2/25/2024": datetime(2024, 2, 11),
97
+ "Beginning February/March 2024; Ending July 1, 2024": datetime(2024, 2, 1),
98
+ "1/2/2024 and continuing periodically": datetime(2024, 1, 2),
99
+ "1/6/2024 - 3/26/2024": datetime(2024, 1, 6),
100
+ "1/16/2024 - 3/1/2024": datetime(2024, 1, 16),
101
+ "1/18/2024. Additional layoff dates: 2/19/24 & 4/18/24": datetime(2024, 1, 18),
102
+ "beginning: 1/3/2024 (52 employees); ending: 3/31/2024 (128 employees)": datetime(
103
+ 2024, 1, 3
104
+ ),
105
+ "Beginning 12/15/2023 - Ending 9/30/2024": datetime(2023, 12, 15),
106
+ "Beginning 11/20/2023 - Ending 12/15/2023": datetime(2023, 11, 20),
107
+ "9/8/23 - 10/1/23": datetime(2023, 9, 8),
108
+ "Beginning 9/29/23; Ending 11/16/23": datetime(2023, 9, 23),
109
+ "Beginning: October 31, 2023 - ... Ending: April 15, 2024": datetime(
110
+ 2023, 10, 31
111
+ ),
112
+ "Beginning: October 21, 2023 - ... Ending: December 30, 2023": datetime(
113
+ 2023, 10, 21
114
+ ),
115
+ "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(
116
+ 2023, 9, 8
117
+ ),
118
+ "9/8/23 (96 employees)": datetime(2023, 9, 8),
119
+ "Beginning 8/21/23 - Ending 9/19/23": datetime(2023, 8, 21),
120
+ "beginning 5/10/23 and ending 60-74 days thereafter": datetime(2023, 5, 10),
121
+ "7/14/23 (37 workers); 9/15/23 (125 workers)": datetime(2023, 7, 14),
122
+ "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(
123
+ 2023, 4, 14
124
+ ),
125
+ "04/14": datetime(2023, 4, 14),
126
+ "Phase 1: 4/14 ... Phase 2: 5/13 -- 5/27 ... Phase 3: 6/12 -- 8/11": datetime(
127
+ 2023, 4, 14
128
+ ),
129
+ "Phase 1: 4/14": datetime(2023, 4, 14),
130
+ "7/3/20223 - 10/16/2023": datetime(2023, 7, 3),
131
+ "6/25/2023 - 7/9/2023": datetime(2023, 6, 25),
132
+ "6/2/23 -- 105 Employees ... 7/7/23 -- 10 Employees ... 10/6/23 -- 70 Employees ... 12/1/23 -- 18 Employees": datetime(
133
+ 2023, 6, 2
134
+ ),
135
+ "6/2/23 -- 105 Employees": datetime(2023, 6, 2),
136
+ "6/30/23 -- 50 Employees ... 8/11/23 -- 74 Employees": datetime(2023, 6, 30),
137
+ "6/30/23 -- 50 Employees": datetime(2023, 6, 30),
138
+ "Phase 1: 4/28/23 (67 employees) ... Phase 2: 7/14/23 (9 employees) ... Phase 3: 10/6/23 (4 employees)": datetime(
139
+ 2023, 4, 28
140
+ ),
141
+ "Phase 1: 4/28/23 (67 employees)": datetime(2023, 4, 28),
142
+ "February 1, 2023 -- 82 Employees ... March 1, 2023 -- 1 Employee ... April 1, 2023 -- 21 Employees": datetime(
143
+ 2023, 2, 1
144
+ ),
145
+ "February 1, 2023 -- 82 Employees": datetime(2023, 2, 1),
146
+ "1st Phase: 1/9/2023 (49 Employees) ... 2nd Phase: 7/31/2023 (15 Employees)": datetime(
147
+ 2023, 1, 9
148
+ ),
149
+ "1st Phase: 1/9/2023 (49 Employees)": datetime(2023, 1, 9),
150
+ "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(
151
+ 2023, 1, 11
152
+ ),
153
+ "Phase 1: 1/11/23 (38 workers)": datetime(2023, 1, 11),
154
+ "Beginning: 7/15/25; Ending: 7/29/25": datetime(2025, 7, 15),
155
+ "Beginning: 12/9/2024; Ending: 12/21/2024": datetime(2024, 12, 9),
156
+ "beginning: 10/26/2024; ending: 11/9/2024": datetime(2024, 10, 26),
157
+ "beginning: 10/27/2024; ending: 11/10/2024": datetime(2024, 10, 27),
158
+ "Commencing: 5/30/2024; Ending: 7/29/2024": datetime(2024, 5, 30),
159
+ "8/9/2024 or within a 14-day window": datetime(2024, 8, 9),
160
+ "Commencing: 7/6/2024; Ending: 9/1/2024": datetime(2024, 7, 6),
161
+ "Beginning: 6/3/24; Ending: 6/16/24": datetime(2024, 6, 3),
162
+ "Beginning: 2/24/24; Ending: 4/23/24": datetime(2024, 2, 24),
163
+ "Beginning: 5/17/24; Ending: 8/30/24": datetime(2024, 5, 17),
164
+ "Beginning: 1/16/24; Ending: 3/29/24": datetime(2024, 1, 16),
165
+ "Beginning: 1/2/2024 - Ending: 3/31/2024": datetime(2024, 1, 2),
166
+ "November 3, 2023": datetime(2023, 11, 3),
167
+ "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(
168
+ 2023, 9, 8
169
+ ),
170
+ "Beginning: 2/28/23 - Ending: 12/31/23": datetime(2023, 2, 28),
171
+ "March 3, 2023": datetime(2023, 3, 3),
172
+ "March 31, 2023": datetime(2023, 3, 31),
173
+ "March 5, 2023": datetime(2023, 3, 5),
174
+ "February 28, 2023": datetime(2023, 2, 28),
175
+ "Beginning: March 15, 2023; Ending: October 2, 2023": datetime(2023, 3, 15),
176
+ "Beginning: January 23, 2023; Ending: March 24, 2023": datetime(2023, 1, 23),
177
+ }
178
+
179
+ jobs_corrections = {
180
+ "Unknown": None,
181
+ "TBD": None,
182
+ "unknown": None,
183
+ "To be determined": None,
184
+ "60 total": 60,
185
+ "72 (54 PA residents impacted)": 54,
186
+ "9 Pennsylvania workers (209 total) ... EFFECTIVE DATE: Beginning: 7/15/25; Ending: 7/29/25": 9,
187
+ "501 @ Etters location; 595 @ Philadelphia location": 1096,
188
+ "14 Pennsylvania residents": 14,
189
+ "430 nationwide; unknown number of PA residents impacted": None,
190
+ "Cooked Plant -- 110 ... Raw Plant - 119": 229,
191
+ "420 ... EFFECTIVE DATE: Beginning: 12/9/2024; Ending: 12/21/2024": 420,
192
+ "124 ... EFFECTIVE DATE: Commencing: 5/30/2024; Ending: 7/29/2024": 124,
193
+ "645 (**ONLY FIVE PA RESIDENTS AFFECTED**)": 5,
194
+ "253 (173 @ Allentown and 80 @ Greensburg)": 253,
195
+ "9 Pennsylvania workers (209 total)": 9,
196
+ "105 (91 Temporary Layoffs and 14 Permanent Layoffs)": 105,
197
+ "60 (all employees work remotely)": None,
198
+ "206 (198 P/T and 8 F/T Employees)": 206,
199
+ "54 (All employees can be relocated to other Amazon Delivery Service Partners)": 54,
200
+ "179 (80 Marsden Employees and 99 Temporary Employees from both Express Labor & Integrated Staffing Agencies)": 179,
201
+ "9236 Nationwide; PA total pending verification": None,
202
+ "81 Total -- 13 of which reside in PA": 81,
203
+ }
204
+
205
+ def transform_date(self, value: str) -> typing.Optional[str]:
206
+ """Transform a raw date string into a date object.
207
+
208
+ Args:
209
+ value (str): The raw date string provided by the source
210
+
211
+ Returns: A date object ready for consolidation. Or, if the date string is invalid, a None.
212
+ """
213
+ # Cut out cruft
214
+ # value = value.replace("Updated", "")
215
+ # value = value.replace("Revised", "")
216
+ # value = value.replace("-", "").strip()
217
+
218
+ # Split double dates
219
+ # if len(value) == 20:
220
+ # value = value[:10]
221
+ # elif len(value) == 19:
222
+ # value = value[:9]
223
+ # value = re.split(r"\s{2,}", value)[0].strip()
224
+ # value = value.split("Originated")[0].strip()
225
+ # print(value)
226
+
227
+ try:
228
+ return super().transform_date(value)
229
+ except Exception:
230
+ # value = value.split(" to ")[0].strip()
231
+ # value = value.split()[0].strip()
232
+ # value = value.replace("‐", "")
233
+ return super().transform_date(value)
234
+
235
+ def check_if_closure(self, row: typing.Dict) -> typing.Optional[bool]:
236
+ """Determine whether a row is a closure or not.
237
+
238
+ Args:
239
+ row (dict): The raw row of data.
240
+
241
+ Returns: A boolean or null
242
+ """
243
+ return "clos" in row["closure_or_layoff"].lower() or None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warn-transformer
3
- Version: 1.3.276
3
+ Version: 1.3.277
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
@@ -87,7 +87,6 @@ warn_transformer/cli.py
87
87
  warn_transformer/consolidate.py
88
88
  warn_transformer/download.py
89
89
  warn_transformer/integrate.py
90
- warn_transformer/pa.py
91
90
  warn_transformer/schema.py
92
91
  warn_transformer/utils.py
93
92
  warn_transformer.egg-info/PKG-INFO
@@ -128,6 +127,7 @@ warn_transformer/transformers/ny.py
128
127
  warn_transformer/transformers/oh.py
129
128
  warn_transformer/transformers/ok.py
130
129
  warn_transformer/transformers/or.py
130
+ warn_transformer/transformers/pa.py
131
131
  warn_transformer/transformers/ri.py
132
132
  warn_transformer/transformers/sc.py
133
133
  warn_transformer/transformers/sd.py
@@ -1,232 +0,0 @@
1
- addressfull,closure_or_layoff,company,county,date_effective,jobs
2
- "1003 Broad Street, #101
3
- "1001 East Waterfront Drive
4
- "1 West Elm Street
5
- "7010 Snowdrift Road #1
6
- "1572 Roseytown Road
7
- "1990 Wittington Place
8
- "2047 Kutztown Road
9
- "1375 Harrisburg Pike
10
- "216 Greenfield Road
11
- "Multiple locations in Allentown, Hazelton, Bethlehem, East Stroudsburg, Pottsville, Easton, Lehighton and Dickson City.",Layoff,Morrison HealthCare,Lehigh and Surrounding Counties,"March 3, 2023",478
12
- "595 Plant Road
13
- "2323 Reach Road
14
- "1838 Colonial Village Lane
15
- "220 Hickory Street
16
- "3215 Commerce Center Boulevard
17
- "601 Allendale Road
18
- "9141 Old Route 22
19
- "10101 Roosevelt Boulevard, Philadelphia, PA 19154
20
- "3001 State Road
21
- "40 Dauphin Drive
22
- "67 Keystone Boulevard
23
- "1128 Chestnut Street
24
- "9750 Commerce Circle
25
- "100 Campus Drive
26
- "600 Boyce Road, Pittsburgh, PA 15205
27
- "5A Mountainside Road
28
- "71 Mall Road
29
- "1750 Power Plant Road
30
- "450 Penn Street
31
- 15 Stores within 9 Counties,Layoff,"David’s Bridal, LLC",Allegheny (4 locations) ... Blair ... Bucks (2 locations) ... Dauphin ... Delaware ... Erie ... Luzerne ... Montgomery (3 locations) ... York,Phase 1: 4/14 ... Phase 2: 5/13 -- 5/27 ... Phase 3: 6/12 -- 8/11,"9,236 Nationwide; PA total pending verification"
32
- "2798 New Butler Road
33
- "860 Nestle Way
34
- "730 Sullivan Road
35
- "1000 River Road, Suite 100
36
- "1460 Meetinghouse Road
37
- "1001 Filbert Street
38
- "2150 MacArthur Road, Whitehall, PA 18052 - (Lehigh County) – 31 Workers
39
- "1553 Chester Pike, Suite 103, Crum Lynne, PA 19022
40
- "2301 Duss Avenue
41
- "2920 Beaver Avenue
42
- "4770 Hanoverville Road
43
- "860 Nestle Way, Suite 250
44
- "1425 Union Meeting Road
45
- "1500 South Cameron Street
46
- "33 North Powell Drive
47
- "1350 Superior Avenue, Building 57
48
- "45 Monument Drive
49
- "1600 Market Street, Suite 3600
50
- "1500 Spring Garden Street, Suite 101
51
- "2400 South Weccawe Avenue
52
- "115 Willow Springs Lane
53
- "3675 Market Street, 7th Floor
54
- "465 Railroad Avenue
55
- "7551 Schantz Road
56
- "8025 Spinnerstown Road, Zionsville, PA 18092 (71 employees)
57
- "50 Mt. Zion Road
58
- "870 Calcon Hook Road
59
- "625 Willow Springs Lane, York, PA 17406 (429 employees)
60
- "P.O. Box 176
61
- "121 Wheeler Court
62
- "400 Park Drive
63
- "4925 Harrison St.
64
- "6501 Essington Avenue
65
- "Inc. 795 Horsham Rd.
66
- "3 Hazle Township, PA 18202",Closure,Hood Packaging Corporation,Luzerne,1/14/2024,58
67
- "250 Highland Park Boulevard
68
- "1509 Muriel Street
69
- "1001 Air Brake Avenue
70
- "8500 Essington Avenue
71
- Various Locations,Layoff,"Block, Inc.","Bucks, Philadelphia, Montgomery, Delaware, Allegheny, Northampton and Chester",3/30/2024,22
72
- "20 Leo Lane
73
- "45 Logistics Drive
74
- "351 North Sumneytown Pike
75
- "20 Valley Stream Parkway
76
- "1149 Railroad Road
77
- "620 Alpha Drive #2
78
- "Two locations in Breinigsville, PA
79
- "8796 Route 219
80
- "521 North Center Avenue
81
- "2211 Memorial Highway
82
- "30 Isabella Street
83
- "800 Theresia Street
84
- "14235 Route 6
85
- "610 King of Prussia Road
86
- "1325 Point Breeze Avenue, Philadelphia
87
- "627 North Grant Street
88
- "2850 Perry Highway
89
- "5195 South 19th Street
90
- "520 North Main Street
91
- "3900 Industrial Road
92
- "2103 North 7th Street, Harrisburg, PA 17110
93
- "807 Locust Street
94
- "One Dent Drive
95
- "Berwick, PA
96
- "4875 Susquehanna Trail
97
- "1490 Nitterhouse Drive
98
- "3354 West Beersville Road
99
- "1055 Hanover Street
100
- "4427 Lytle Street, Mill 19B
101
- "935 First Avenue
102
- "2361-2373 Welch Road, Philadelphia
103
- "935 First Avenue
104
- "1500 Market Street
105
- "400 Egypt Road
106
- "1111 McKee Road
107
- "Stewart Avenue and Industrial Highway
108
- "320 South Broad Street
109
- "110 Lenzner Court
110
- "320 South Broad Street
111
- "550 South Negley Avenue
112
- "1477 Power Plant Road
113
- "8400 Industrial Blvd
114
- "550 East Swedesford Road
115
- "11 Hap Arnold Boulevard
116
- "9250 Ashton Road, Suite 400
117
- "1 Ogler Place
118
- "3910 Stuffed Puffs Place
119
- "700 Packer Avenue
120
- "1701 John F. Kennedy Boulevard
121
- "22035 Perry Highway
122
- Seven various locations within PA,Layoffs,"Cygnus Home Service, LLC d/b/a Yelloh",Various,11/22/2024,86
123
- "2771 North Market Street
124
- "4601 Market Street
125
- "120 West Pumping Station Road
126
- "700 Mountain View Drive
127
- "2470 Evans City Road
128
- "555 South Columbus Boulevard
129
- "652 Manor Street
130
- "1 Discovery Drive
131
- "12393 William Penn Highway
132
- "100 8th Street
133
- "1110 American Parkway
134
- "12 Tradeport Road
135
- "941 Dana Drive
136
- "24 Stauffer Industrial Park
137
- "#1 – Original Philly Cooked Plant, 4001 North American Street, Philadelphia, PA 19140
138
- "300 Industrial Highway, Ridley Park, PA 19078
139
- "1. 2497 Aramingo Avenue, Suite 2, Philadelphia, PA 19125
140
- "801 Market Street
141
- "400 Frankfort Road
142
- "1875 Zeager Road, Elizabethtown, PA  17022
143
- "1025 Feather Way
144
- "225 South 18th Street
145
- "2201 Cottman Avenue, Suite 113
146
- "891 Strick Road
147
- "1515 Walnut Street
148
- "740 East State Street, Sharon, PA  16148",Closing,Sharon Regional Medical Center,Mercer,1/6/2025,149
149
- "714 Braddock View Drive, Lemont Furnace, PA  15456",Closing,"Tatano Wire Products, LLC",Fayette,2/14/2025,27
150
- "230 West Station Square Drive, Pittsburgh, PA  15219",Closing,Hard Rock Cafe,Allegheny,2/14/2025,55
151
- "(*NOTE: Addtional notice covering line staff; previous notice covered professional staff members)
152
- "2901 Black Ridge Road
153
- "1702 Walnut Street
154
- Various locations nationwide,Layoff,"VIMO, Inc.",Various,2/19/2025,430 nationwide; unknown number of PA residents impacted
155
- "50 Rausch Creek Road
156
- "575 Research Drive
157
- Various locations,Layoff,"D&A Consulting Service, LLC",Various,2/19/2025,14 Pennsylvania residents
158
- "17 William Drive
159
- "1300 Market Street
160
- "1101 Market Street
161
- "3419 Ritner Highway
162
- "336 Heinz Street
163
- "516 North Bethlehem Pike
164
- "2175 Kumry Road
165
- "11 Main Street
166
- "645 East Erie Avenue
167
- "1175 Ludlow Street
168
- "308 East King Street
169
- "400 Stony Creek Road
170
- "600 Industrial Drive
171
- "533 Forest Road
172
- "200 Capital Lane
173
- "1696 Foulkrod Street
174
- "1706 Franklin Mills Circle, Philadelphia, PA  19102
175
- "174 Tech Center Drive
176
- "Ten locations within Somerset County, PA
177
- "100 Avenue C
178
- "301 Highland Avenue
179
- Various locations throughout the Commonwealth,Layoff,"BH Security, LLC (d/b/a Brinks Home)",Various counties,6/30/25,42
180
- "161 Washington Street
181
- "1001 Market Street
182
- "2502 Wheatsheaf Lane
183
- "1844 West Sedgley Avenue
184
- "100 Industrial Drive
185
- "1000 Indian Rock Dam Road
186
- "2929 Arch Street, Philadelphia, PA  19104
187
- "6506 Frankford Avenue, Philadelphia, PA  19149
188
- "12000 Molly Pritcher Highway
189
- Eight various locations,Closing,Crozer Health,Delaware and Chester,beginning 4/25/25; ending 5/2/25,"2,651"
190
- "1 Medical Center Boulevard
191
- "35 School Bus Lane, Lewistown, PA  17044  (50 affected)
192
- "111 Terence Drive
193
- "30 Ludwig Court
194
- "531 Fishing Creek Road
195
- "190 North Independence Mall West, Suite 500
196
- "501 Technology Drive, Suite 1200, Canonsburg, PA  15317
197
- "2701 Dekalb Pike East
198
- "215 South Front Street
199
- "200 Newberry Commons, Etters, PA  17319
200
- "22073 Perry Highway
201
- "900 Conshohocken Road
202
- "2700 Luther Drive
203
- "11117 Skyline Drive
204
- "Locations:
205
- "125 Walnut Street
206
- "75 McQuiston Drive
207
- "225 South Broad Street
208
- "3020 Market Street, Suite 535, Philadelphia, PA  19104
209
- "7175 Highland Drive, Pittsburgh, PA  15206",Closing,Pittsburgh Job Corps Center,Allegheny,beginning 6/13/25; ending 6/30/25,180
210
- "4255 East Independence Drive
211
- "110 Keystone Boulevard East
212
- "47 Park Avenue
213
- "948 Plaza Drive, Suite 1
214
- "121 North Commerce Drive
215
- "15 &71 West Wissahickon Avenue, Flourtown, PA 19031 (51 employees impacted)
216
- "25 North 38th Street, Philadelphia, PA 19104",Layoff,"Century Therapeutics, LLC",Philadelphia,7/11/2025,72 (54 PA residents impacted)
217
- "25 Keystone Drive, Lebanon, PA  17042",Layoff,"Weaber, Inc.",Lebanon,beginning 8/26/2025; ending 9/9/2025,145
218
- "609 Memory Lane, York, PA  17402",Layoff,"Comprehensive Logistics, Inc.",York,9/25/2025,365
219
- "8150 Industrial Boulevard, Breinigsville, PA  18031",Closing,"Inmar Supply Chain Solutions, LLC",Lehigh,10/10/2025,101
220
- "@ York County Prison, 3400 Concord Road, York, PA  17402",Layoff,"PrimeCare Medical, Inc.",York,9/30/2025,50
221
- "400 Davis Drive, Suite 400, Plymouth Meeting, PA  19462
222
- "Starbucks, 8500 Essington Avenue, Philadelphia, PA  19153, Balducci’s, 8500 Essington Avenue, Philadelphia, PA  19153",Layoff,HMS Host (located within the Philadelphia International Airport),Philadelphia,10/27/2025,13
223
- "2900 Grant Avenue, Philadelphia, PA  19114",Closure,Trujacodi Delivery Express,Philadelphia,9/12/2025,42
224
- "6901 Elmwood Avenue, Philadelphia, PA  19102",Closure,CJB Logistics,Philadelphia,11/16/2025,101
225
- "7331 William Avenue, Suite 300, Allentown, PA  18106",Layoff,"Air Products and Chemicals, Inc.",Lehigh,11/17/2025,14
226
- "105 Commerce Drive, Aston, PA  19014",Closing,"National Fulfillment Services, LLC",Delaware,11/15/2025,45
227
- "3893 Courtney Street, Bethlehem, PA  18017",Closing,DHL Supply Chain,Northampton,2/28/26,66
228
- "500 Independence Avenue, Mechanicsburg, PA  17055",Layoff,"Owens and Minor Halyard, Inc.",Cumberland,11/28/25,75
229
- "7451 Cetronia Road, Allentown, PA  18106
230
- "1000 First Avenue, Suite 300, King of Prussia, PA  19406",Layoff,"Vifor Pharma, Inc.",Montgomery,12/1/2025,55
231
- "1500 Market Street, Philadelphia, PA  19102
232
- "3 Arentzen Boulevard, Charleroi, PA  15022",Closing,"Fourth Street Barbecue, Inc.",Washington,beginning 10/9/25; ending 10/31/25,252