openepd 6.10.0__py3-none-any.whl → 6.12.0__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.
openepd/__version__.py CHANGED
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- VERSION = "6.10.0"
16
+ VERSION = "6.12.0"
@@ -19,9 +19,16 @@ __all__ = (
19
19
  "CountertopsRangeV1",
20
20
  "DemountablePartitionsRangeV1",
21
21
  "OtherFurnishingsRangeV1",
22
+ "OpenStorageRangeV1",
23
+ "ClosedStorageRangeV1",
24
+ "RetractableStorageRangeV1",
25
+ "MobileStorageRangeV1",
26
+ "WallMountedShelvingRangeV1",
27
+ "OtherStorageFurnitureRangeV1",
22
28
  "StorageFurnitureRangeV1",
23
29
  "TablesRangeV1",
24
30
  "WorkSurfacesRangeV1",
31
+ "WorkspacesRangeV1",
25
32
  "FurnishingsRangeV1",
26
33
  )
27
34
 
@@ -29,9 +36,10 @@ __all__ = (
29
36
 
30
37
 
31
38
  from openepd.compat.pydantic import pyd
39
+ from openepd.model.common import RangeInt, RangeRatioFloat
32
40
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
33
41
  from openepd.model.specs.enums import CountertopMaterial
34
- from openepd.model.validation.quantity import AmountRangeLengthMm
42
+ from openepd.model.validation.quantity import AmountRangeAreaM2, AmountRangeLengthMm, AmountRangeVolume
35
43
 
36
44
 
37
45
  class DemountablePartitionTrackRangeV1(BaseOpenEpdHierarchicalSpec):
@@ -89,6 +97,76 @@ class OtherFurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
89
97
  _EXT_VERSION = "1.0"
90
98
 
91
99
 
100
+ class OpenStorageRangeV1(BaseOpenEpdHierarchicalSpec):
101
+ """
102
+ Open Storage.
103
+
104
+ Open Storage furniture which is static and has no moving parts.
105
+
106
+ Range version.
107
+ """
108
+
109
+ _EXT_VERSION = "1.0"
110
+
111
+
112
+ class ClosedStorageRangeV1(BaseOpenEpdHierarchicalSpec):
113
+ """
114
+ Closed Storage.
115
+
116
+ Closed storage furniture making use of doors, sliding and/or hinged parts.
117
+
118
+ Range version.
119
+ """
120
+
121
+ _EXT_VERSION = "1.0"
122
+
123
+
124
+ class RetractableStorageRangeV1(BaseOpenEpdHierarchicalSpec):
125
+ """
126
+ Retractable Storage.
127
+
128
+ Storage Furniture with retractable (drawer) elements.
129
+
130
+ Range version.
131
+ """
132
+
133
+ _EXT_VERSION = "1.0"
134
+
135
+
136
+ class MobileStorageRangeV1(BaseOpenEpdHierarchicalSpec):
137
+ """
138
+ Mobile Storage.
139
+
140
+ Mobile storage furniture having wheels or casters for movement.
141
+
142
+ Range version.
143
+ """
144
+
145
+ _EXT_VERSION = "1.0"
146
+
147
+
148
+ class WallMountedShelvingRangeV1(BaseOpenEpdHierarchicalSpec):
149
+ """
150
+ Wall Mounted Shelving.
151
+
152
+ Storage furniture which requires usage of a vertical structure for attachment and functional support.
153
+
154
+ Range version.
155
+ """
156
+
157
+ _EXT_VERSION = "1.0"
158
+
159
+
160
+ class OtherStorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
161
+ """
162
+ Other Storage Furniture.
163
+
164
+ Range version.
165
+ """
166
+
167
+ _EXT_VERSION = "1.0"
168
+
169
+
92
170
  class StorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
93
171
  """
94
172
  Storage Furniture.
@@ -96,7 +174,14 @@ class StorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
96
174
  Range version.
97
175
  """
98
176
 
99
- _EXT_VERSION = "1.0"
177
+ _EXT_VERSION = "1.1"
178
+
179
+ OpenStorage: OpenStorageRangeV1 | None = None
180
+ ClosedStorage: ClosedStorageRangeV1 | None = None
181
+ RetractableStorage: RetractableStorageRangeV1 | None = None
182
+ MobileStorage: MobileStorageRangeV1 | None = None
183
+ WallMountedShelving: WallMountedShelvingRangeV1 | None = None
184
+ OtherStorageFurniture: OtherStorageFurnitureRangeV1 | None = None
100
185
 
101
186
 
102
187
  class TablesRangeV1(BaseOpenEpdHierarchicalSpec):
@@ -119,15 +204,47 @@ class WorkSurfacesRangeV1(BaseOpenEpdHierarchicalSpec):
119
204
  _EXT_VERSION = "1.0"
120
205
 
121
206
 
122
- class FurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
207
+ class WorkspacesRangeV1(BaseOpenEpdHierarchicalSpec):
123
208
  """
124
- Home and office furnishings.
209
+ Workspaces.
210
+
211
+ Office furniture and furniture systems for performing office work, such as cubicle systems.
212
+ Typically includes component(s) that may fit in other categories.
125
213
 
126
214
  Range version.
127
215
  """
128
216
 
129
217
  _EXT_VERSION = "1.0"
130
218
 
219
+
220
+ class FurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
221
+ """
222
+ Home and office furnishings.
223
+
224
+ Range version.
225
+ """
226
+
227
+ _EXT_VERSION = "1.1"
228
+
229
+ functional_floor_area_m2: AmountRangeAreaM2 | None = pyd.Field(
230
+ default=None, title="Functional Floor Area", description="The floor area that the product occupies."
231
+ )
232
+ work_surface_area_m2: AmountRangeAreaM2 | None = pyd.Field(
233
+ default=None, title="Work Surface Area", description="The usable work surface area that the product provides."
234
+ )
235
+ functional_storage_volume_m3: AmountRangeVolume | None = pyd.Field(
236
+ default=None, title="Functional Storage Volume", description=""
237
+ )
238
+ functional_seating_capacity: RangeInt | None = pyd.Field(
239
+ default=1,
240
+ title="Functional Seating Capacity",
241
+ description="Intended number of individuals the product seats. This value is used in calculating impact per functional unit.",
242
+ )
243
+ installation_waste_factor: RangeRatioFloat | None = pyd.Field(
244
+ default=0.01,
245
+ title="Installation Waste Factor",
246
+ description="Typical increase in impacts to account for installation waste.",
247
+ )
131
248
  Chairs: ChairsRangeV1 | None = None
132
249
  Countertops: CountertopsRangeV1 | None = None
133
250
  DemountablePartitions: DemountablePartitionsRangeV1 | None = None
@@ -135,3 +252,4 @@ class FurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
135
252
  StorageFurniture: StorageFurnitureRangeV1 | None = None
136
253
  Tables: TablesRangeV1 | None = None
137
254
  WorkSurfaces: WorkSurfacesRangeV1 | None = None
255
+ Workspaces: WorkspacesRangeV1 | None = None
@@ -227,10 +227,12 @@ class StructuralSteelRangeV1(BaseOpenEpdHierarchicalSpec):
227
227
  _EXT_VERSION = "1.0"
228
228
 
229
229
  modulus_of_elasticity: AmountRangePressureMpa | None = pyd.Field(
230
- default=None, description="Modulus of Elasticity, https://en.wikipedia.org/wiki/Elastic_modulus "
230
+ default=None,
231
+ description="Modulus of Elasticity, https://en.wikipedia.org/wiki/Elastic_modulus ",
231
232
  )
232
233
  thermal_expansion: AmountRangeThermalExpansion | None = pyd.Field(
233
- default=None, description="Thermal Expansion, https://en.wikipedia.org/wiki/Thermal_expansion"
234
+ default=None,
235
+ description="Thermal Expansion, https://en.wikipedia.org/wiki/Thermal_expansion",
234
236
  )
235
237
  thermal_conductivity: AmountRangeThermalConductivity | None = pyd.Field(
236
238
  default=None,
@@ -280,7 +282,8 @@ class RebarSteelRangeV1(BaseOpenEpdHierarchicalSpec):
280
282
  diameter_min: AmountRangeLengthMm | None = pyd.Field(default=None, description="Minimal diameter")
281
283
  bending_pin_max: RangeFloat | None = pyd.Field(default=None)
282
284
  ts_ys_ratio_max: RangeFloat | None = pyd.Field(
283
- default=None, description="Max ratio of ultimate tensile to yield tensile strength"
285
+ default=None,
286
+ description="Max ratio of ultimate tensile to yield tensile strength",
284
287
  )
285
288
  epoxy_coated: bool | None = pyd.Field(default=None)
286
289
 
@@ -297,6 +300,12 @@ class WireMeshSteelRangeV1(BaseOpenEpdHierarchicalSpec):
297
300
  fabricated: bool | None = None
298
301
 
299
302
 
303
+ class OtherSteelRangeV1(BaseOpenEpdHierarchicalSpec):
304
+ """Steel products that do not fit into a defined subcategory."""
305
+
306
+ _EXT_VERSION = "1.0"
307
+
308
+
300
309
  class SteelRangeV1(BaseOpenEpdHierarchicalSpec):
301
310
  """
302
311
  Broad category for construction materials made from steel and its alloys.
@@ -304,18 +313,20 @@ class SteelRangeV1(BaseOpenEpdHierarchicalSpec):
304
313
  Range version.
305
314
  """
306
315
 
307
- _EXT_VERSION = "1.0"
316
+ _EXT_VERSION = "1.1"
308
317
 
309
318
  yield_tensile_str: AmountRangePressureMpa | None = pyd.Field(
310
319
  default=None,
311
320
  description="Yield Tensile strength (Mpa) per unit area. Yield strength is the point at which a material begins to permanently deform or change shape due to applied stress.",
312
321
  )
313
322
  bar_elongation: RangeFloat | None = pyd.Field(
314
- default=None, description="Increase in length at break, in percent. Typically 10%-20%"
323
+ default=None,
324
+ description="Increase in length at break, in percent. Typically 10%-20%",
315
325
  )
316
326
  recycled_content: RangeRatioFloat | None = pyd.Field(default=None, description="")
317
327
  post_consumer_recycled_content: RangeRatioFloat | None = pyd.Field(
318
- default=None, description="Should be a number between zero and the Recycled Content (steel_recycled_content)"
328
+ default=None,
329
+ description="Should be a number between zero and the Recycled Content (steel_recycled_content)",
319
330
  )
320
331
  astm_marking: str | None = pyd.Field(default=None, description="The marking to be expected on the product.")
321
332
  euro_marking: str | None = pyd.Field(default=None, description="The marking to be expected on the product.")
@@ -335,3 +346,4 @@ class SteelRangeV1(BaseOpenEpdHierarchicalSpec):
335
346
  PostTensioningSteel: PostTensioningSteelRangeV1 | None = None
336
347
  RebarSteel: RebarSteelRangeV1 | None = None
337
348
  WireMeshSteel: WireMeshSteelRangeV1 | None = None
349
+ OtherSteel: OtherSteelRangeV1 | None = None
@@ -16,7 +16,8 @@
16
16
  from openepd.compat.pydantic import pyd
17
17
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
18
  from openepd.model.specs.enums import CountertopMaterial
19
- from openepd.model.validation.quantity import LengthMmStr
19
+ from openepd.model.validation.numbers import RatioFloat
20
+ from openepd.model.validation.quantity import AreaM2Str, LengthMmStr, VolumeStr
20
21
 
21
22
 
22
23
  class DemountablePartitionTrackV1(BaseOpenEpdHierarchicalSpec):
@@ -56,10 +57,74 @@ class OtherFurnishingsV1(BaseOpenEpdHierarchicalSpec):
56
57
  _EXT_VERSION = "1.0"
57
58
 
58
59
 
60
+ class OpenStorageV1(BaseOpenEpdHierarchicalSpec):
61
+ """
62
+ Open Storage.
63
+
64
+ Open Storage furniture which is static and has no moving parts.
65
+ """
66
+
67
+ _EXT_VERSION = "1.0"
68
+
69
+
70
+ class ClosedStorageV1(BaseOpenEpdHierarchicalSpec):
71
+ """
72
+ Closed Storage.
73
+
74
+ Closed storage furniture making use of doors, sliding and/or hinged parts.
75
+ """
76
+
77
+ _EXT_VERSION = "1.0"
78
+
79
+
80
+ class RetractableStorageV1(BaseOpenEpdHierarchicalSpec):
81
+ """
82
+ Retractable Storage.
83
+
84
+ Storage Furniture with retractable (drawer) elements.
85
+ """
86
+
87
+ _EXT_VERSION = "1.0"
88
+
89
+
90
+ class MobileStorageV1(BaseOpenEpdHierarchicalSpec):
91
+ """
92
+ Mobile Storage.
93
+
94
+ Mobile storage furniture having wheels or casters for movement.
95
+ """
96
+
97
+ _EXT_VERSION = "1.0"
98
+
99
+
100
+ class WallMountedShelvingV1(BaseOpenEpdHierarchicalSpec):
101
+ """
102
+ Wall Mounted Shelving.
103
+
104
+ Storage furniture which requires usage of a vertical structure for attachment and functional support.
105
+ """
106
+
107
+ _EXT_VERSION = "1.0"
108
+
109
+
110
+ class OtherStorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
111
+ """Other Storage Furniture."""
112
+
113
+ _EXT_VERSION = "1.0"
114
+
115
+
59
116
  class StorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
60
117
  """Storage Furniture."""
61
118
 
62
- _EXT_VERSION = "1.0"
119
+ _EXT_VERSION = "1.1"
120
+
121
+ # Nested specs:
122
+ OpenStorage: OpenStorageV1 | None = None
123
+ ClosedStorage: ClosedStorageV1 | None = None
124
+ RetractableStorage: RetractableStorageV1 | None = None
125
+ MobileStorage: MobileStorageV1 | None = None
126
+ WallMountedShelving: WallMountedShelvingV1 | None = None
127
+ OtherStorageFurniture: OtherStorageFurnitureV1 | None = None
63
128
 
64
129
 
65
130
  class TablesV1(BaseOpenEpdHierarchicalSpec):
@@ -74,10 +139,53 @@ class WorkSurfacesV1(BaseOpenEpdHierarchicalSpec):
74
139
  _EXT_VERSION = "1.0"
75
140
 
76
141
 
142
+ class WorkspacesV1(BaseOpenEpdHierarchicalSpec):
143
+ """
144
+ Workspaces.
145
+
146
+ Office furniture and furniture systems for performing office work, such as cubicle systems.
147
+ Typically includes component(s) that may fit in other categories.
148
+ """
149
+
150
+ _EXT_VERSION = "1.0"
151
+
152
+
77
153
  class FurnishingsV1(BaseOpenEpdHierarchicalSpec):
78
154
  """Home and office furnishings."""
79
155
 
80
- _EXT_VERSION = "1.0"
156
+ _EXT_VERSION = "1.1"
157
+
158
+ # Own fields:
159
+ functional_floor_area_m2: AreaM2Str | None = pyd.Field(
160
+ default=None,
161
+ title="Functional Floor Area",
162
+ description="The floor area that the product occupies.",
163
+ example="1 m2",
164
+ )
165
+ work_surface_area_m2: AreaM2Str | None = pyd.Field(
166
+ default=None,
167
+ title="Work Surface Area",
168
+ description="The usable work surface area that the product provides.",
169
+ example="1 m2",
170
+ )
171
+ functional_storage_volume_m3: VolumeStr | None = pyd.Field(
172
+ default=None,
173
+ title="Functional Storage Volume",
174
+ description="",
175
+ example="1 m3",
176
+ )
177
+ functional_seating_capacity: pyd.NonNegativeInt | None = pyd.Field(
178
+ default=1,
179
+ title="Functional Seating Capacity",
180
+ description="Intended number of individuals the product seats. This value is used in calculating impact per functional unit.",
181
+ example=1,
182
+ )
183
+ installation_waste_factor: RatioFloat | None = pyd.Field(
184
+ default=0.01,
185
+ title="Installation Waste Factor",
186
+ description="Typical increase in impacts to account for installation waste.",
187
+ example=0.01,
188
+ )
81
189
 
82
190
  # Nested specs:
83
191
  Chairs: ChairsV1 | None = None
@@ -87,3 +195,4 @@ class FurnishingsV1(BaseOpenEpdHierarchicalSpec):
87
195
  StorageFurniture: StorageFurnitureV1 | None = None
88
196
  Tables: TablesV1 | None = None
89
197
  WorkSurfaces: WorkSurfacesV1 | None = None
198
+ Workspaces: WorkspacesV1 | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 6.10.0
3
+ Version: 6.12.0
4
4
  Summary: Python library to work with OpenEPD format
5
5
  Home-page: https://github.com/cchangelabs/openepd
6
6
  License: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
2
- openepd/__version__.py,sha256=P7KbPI_bIG44qmSxX1ozUeZjbKw79GTlCFyHnxUs3xA,639
2
+ openepd/__version__.py,sha256=4igRnJ4prO4O--ghi78JXsgSz4xobA4SHm1zlb0MpHU,639
3
3
  openepd/api/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
4
4
  openepd/api/average_dataset/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
5
5
  openepd/api/average_dataset/generic_estimate_sync_api.py,sha256=KHCmSKMOJTQct6vhdhAatAENoouStc_yVRza5AFNoIo,7953
@@ -67,7 +67,7 @@ openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,
67
67
  openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
68
68
  openepd/model/specs/range/finishes.py,sha256=oCaPVYJja1KYxwEzTHCl7HtxQ2mokzeyahjyP33zHSg,21291
69
69
  openepd/model/specs/range/fire_and_smoke_protection.py,sha256=u5veICQznf-woYlh49S_IbvPA23CLWEy7Ngvic2FIpw,3337
70
- openepd/model/specs/range/furnishings.py,sha256=aFYzyNm8F5dYYN0fqjiEEvxanvd5vzZNdP3_r4FK_e8,3234
70
+ openepd/model/specs/range/furnishings.py,sha256=Es3rPvWT1opiMtyp7PdzKLe74pFRgs1jkROU51AoNDA,6528
71
71
  openepd/model/specs/range/grouting.py,sha256=BQPxH6BvlXpdhLEZBui9zTuY93K_9syjoa6rdnF8GGY,1095
72
72
  openepd/model/specs/range/manufacturing_inputs.py,sha256=xzgkNz7yG8cp715hxS0LtJX9nfJ5RQR8GxlD2bAduwE,5574
73
73
  openepd/model/specs/range/masonry.py,sha256=IyjQMb8Mx3tpJlHIIam0OrMkFsJXKvc0WXRLRBupozY,2867
@@ -81,7 +81,7 @@ openepd/model/specs/range/other_materials.py,sha256=k7Gv6YvWy43B-QFBabBt-TkvkC45
81
81
  openepd/model/specs/range/plumbing.py,sha256=RYfP6ail7cYrwBluxmbAkC9icbxXaxdrdnf4Vqhy9ho,5342
82
82
  openepd/model/specs/range/precast_concrete.py,sha256=hXnljuc6djoScmx50ZWkmVjnihCTjiZV755aaKCs6uA,3763
83
83
  openepd/model/specs/range/sheathing.py,sha256=tATL6dzKTdN0rUKZRzZd779dLhKdEavL5Bjybnt2MjU,3395
84
- openepd/model/specs/range/steel.py,sha256=pO6EhAkqtTOW-f4qFyrbp4XB7VAY-PZMzACvDysDY6E,10173
84
+ openepd/model/specs/range/steel.py,sha256=tPRtWSqhVjmbbWVFoFpS7rQKDsaYn9D_6afBOYhqPug,10417
85
85
  openepd/model/specs/range/thermal_moisture_protection.py,sha256=WOyUzR_t39mpekg1vOrU9e529DyR1EPM0h3QAP46kdc,9409
86
86
  openepd/model/specs/range/utility_piping.py,sha256=mQTrKbMTES_0Yta9DBnKehsmA2BAN_zYF_uPZCTKLPo,2665
87
87
  openepd/model/specs/range/wood.py,sha256=1ZAkUwcFF9etc7CZ1_BSvjchpnqnngfZihYZMtuLdeM,6946
@@ -106,7 +106,7 @@ openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.
106
106
  openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
107
107
  openepd/model/specs/singular/finishes.py,sha256=bAlNZiUP-HwePaJyC1D4j2fpv0xnMp3V5mhtAs9iaxQ,22571
108
108
  openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORHvSFN1wftRVAps_UJ1Ep3Dk9arT3s,3058
109
- openepd/model/specs/singular/furnishings.py,sha256=I02FHxBbaaxJ_qATnK9sQdPwIEBalCOKie_ZkuD3uhk,2571
109
+ openepd/model/specs/singular/furnishings.py,sha256=rogO5XZl1341xPnVMQ1CSIcLiKbh66ZqmXXXR_em0MA,5600
110
110
  openepd/model/specs/singular/grouting.py,sha256=pg2tX3W7a2TQ3z_eyFYGlBJY3WEwn6JlZyqM3PQIJcU,934
111
111
  openepd/model/specs/singular/manufacturing_inputs.py,sha256=9WSDOVN0mUqvFXqWf82lkpHi-XRQSMcEpe9bweegwhU,5093
112
112
  openepd/model/specs/singular/masonry.py,sha256=f6nph-gscAmVeJ60bG-ebto5kz0fgh0LY27n0VutGFA,3165
@@ -136,7 +136,7 @@ openepd/model/validation/quantity.py,sha256=vfSe-3DGQf84bCp_sMIU0ZPAA1wIilodpTjL
136
136
  openepd/model/versioning.py,sha256=cm3LaAUODnbbu3W3pC6baJzxKusTQ1kZH-PwwScCj3c,4473
137
137
  openepd/patch_pydantic.py,sha256=LVqDMKn723VYYf_V-RgTLxIb1xiUtYOfPYCQP6-7RoM,4122
138
138
  openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
- openepd-6.10.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
140
- openepd-6.10.0.dist-info/METADATA,sha256=0jcojDvqr4uDMoLwc8_LoAx9nIfWmwpcPKpGIbY99EM,9039
141
- openepd-6.10.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
142
- openepd-6.10.0.dist-info/RECORD,,
139
+ openepd-6.12.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
140
+ openepd-6.12.0.dist-info/METADATA,sha256=S3MymGCa7n1SY6ew2g3Z4LRvO0z462bqjgdBTQRuym8,9039
141
+ openepd-6.12.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
142
+ openepd-6.12.0.dist-info/RECORD,,