openepd 6.17.1__py3-none-any.whl → 6.19.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.17.1"
16
+ VERSION = "6.19.0"
@@ -2031,6 +2031,7 @@ class InsulatingMaterial(StrEnum):
2031
2031
  EXPANDED_POLYETHYLENE = "Expanded Polyethylene"
2032
2032
  EPS = "EPS"
2033
2033
  WOOD_FIBER = "Wood Fiber"
2034
+ POLYURETHANE = "Polyurethane"
2034
2035
  OTHER = "Other"
2035
2036
 
2036
2037
 
@@ -121,6 +121,27 @@ class ShotcreteRangeV1(BaseOpenEpdHierarchicalSpec):
121
121
  _EXT_VERSION = "1.0"
122
122
 
123
123
 
124
+ class OtherConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
125
+ """
126
+ Other Concrete.
127
+
128
+ Range version.
129
+ """
130
+
131
+ _EXT_VERSION = "1.0"
132
+
133
+
134
+ class CellularConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
135
+ """
136
+ Cellular concrete is typically composed of cementitious material, water, and pre-formed foam with air entrainment.
137
+
138
+ Such a product is a homogeneous void or cell structure.
139
+ It is self-compacting and can be pumped over extensive heights and distances.
140
+ """
141
+
142
+ _EXT_VERSION = "1.0"
143
+
144
+
124
145
  class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
125
146
  """
126
147
  Concrete.
@@ -131,7 +152,7 @@ class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
131
152
  Range version.
132
153
  """
133
154
 
134
- _EXT_VERSION = "1.0"
155
+ _EXT_VERSION = "1.1"
135
156
 
136
157
  lightweight: bool | None = pyd.Field(default=None, description="Product is lightweight")
137
158
  strength_28d: AmountRangePressureMpa | None = pyd.Field(default=None, description="Concrete strength after 28 days")
@@ -177,3 +198,5 @@ class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
177
198
  OilPatch: OilPatchRangeV1 | None = None
178
199
  ReadyMix: ReadyMixRangeV1 | None = None
179
200
  Shotcrete: ShotcreteRangeV1 | None = None
201
+ OtherConcrete: OtherConcreteRangeV1 | None = None
202
+ CellularConcrete: CellularConcreteRangeV1 | None = None
@@ -50,10 +50,6 @@ from openepd.model.common import RangeAmount, RangeFloat, RangeInt, RangeRatioFl
50
50
  from openepd.model.org import OrgRef
51
51
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
52
52
  from openepd.model.specs.enums import (
53
- AccessFlooringCoreMaterial,
54
- AccessFlooringFinishMaterial,
55
- AccessFlooringSeismicRating,
56
- AccessFlooringStringers,
57
53
  AllFabrication,
58
54
  CarpetFormFactor,
59
55
  CarpetIntendedApplication,
@@ -76,17 +72,16 @@ from openepd.model.specs.enums import (
76
72
  WoodFlooringFabrication,
77
73
  WoodFlooringTimberSpecies,
78
74
  )
75
+ from openepd.model.specs.range.mixins.access_flooring_mixin import AccessFlooringRangeMixin
79
76
  from openepd.model.validation.quantity import (
80
- AmountRangeForce,
81
77
  AmountRangeGWP,
82
78
  AmountRangeLengthMm,
83
- AmountRangePressureMpa,
84
79
  AmountRangeRFactor,
85
80
  AmountRangeYarnWeight,
86
81
  )
87
82
 
88
83
 
89
- class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
84
+ class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec, AccessFlooringRangeMixin):
90
85
  """
91
86
  Elevated floor system built on top of concrete slab surface.
92
87
 
@@ -98,22 +93,6 @@ class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
98
93
 
99
94
  _EXT_VERSION = "1.0"
100
95
 
101
- core_material: list[AccessFlooringCoreMaterial] | None = pyd.Field(default=None, description="")
102
- finish_material: list[AccessFlooringFinishMaterial] | None = pyd.Field(default=None, description="")
103
- stringers: list[AccessFlooringStringers] | None = pyd.Field(default=None, description="")
104
- seismic_rating: list[AccessFlooringSeismicRating] | None = pyd.Field(default=None, description="")
105
- magnetically_attached_finish: bool | None = pyd.Field(default=None, description="")
106
- permanent_finish: bool | None = pyd.Field(default=None, description="")
107
- drylay: bool | None = pyd.Field(default=None, description="")
108
- adjustable_height: bool | None = pyd.Field(default=None, description="")
109
- fixed_height: bool | None = pyd.Field(default=None, description="")
110
- finished_floor_height: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
111
- panel_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
112
- concentrated_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
113
- uniform_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
114
- rolling_load_10_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
115
- rolling_load_10000_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
116
-
117
96
 
118
97
  class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
119
98
  """
@@ -44,6 +44,7 @@ from openepd.model.specs.enums import (
44
44
  MasonryCementAstmC91Type,
45
45
  TextilesFabricType,
46
46
  )
47
+ from openepd.model.specs.range.mixins.access_flooring_mixin import AccessFlooringRangeMixin
47
48
 
48
49
 
49
50
  class CementRangeV1(BaseOpenEpdHierarchicalSpec):
@@ -170,6 +171,16 @@ class TextilesRangeV1(BaseOpenEpdHierarchicalSpec):
170
171
  fabric_type: list[TextilesFabricType] | None = pyd.Field(default=None, description="")
171
172
 
172
173
 
174
+ class AccessFlooringPanelsRangeV1(BaseOpenEpdHierarchicalSpec, AccessFlooringRangeMixin):
175
+ """
176
+ Part of an access floor system.
177
+
178
+ Panels are laid on top of an access floor pedestal, creating a finish floor.
179
+ """
180
+
181
+ _EXT_VERSION = "1.0"
182
+
183
+
173
184
  class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
174
185
  """
175
186
  Manufacturing inputs.
@@ -180,7 +191,7 @@ class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
180
191
  Range version.
181
192
  """
182
193
 
183
- _EXT_VERSION = "1.0"
194
+ _EXT_VERSION = "1.1"
184
195
 
185
196
  AccessFlooringPedestals: AccessFlooringPedestalsRangeV1 | None = None
186
197
  CarpetBacking: CarpetBackingRangeV1 | None = None
@@ -188,3 +199,4 @@ class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
188
199
  CementitiousMaterials: CementitiousMaterialsRangeV1 | None = None
189
200
  ConcreteAdmixtures: ConcreteAdmixturesRangeV1 | None = None
190
201
  Textiles: TextilesRangeV1 | None = None
202
+ AccessFlooringPanels: AccessFlooringPanelsRangeV1 | None = None
@@ -0,0 +1,15 @@
1
+ #
2
+ # Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
@@ -0,0 +1,42 @@
1
+ #
2
+ # Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ from openepd.compat.pydantic import pyd
17
+ from openepd.model.specs.base import BaseOpenEpdSpec
18
+ from openepd.model.specs.enums import (
19
+ AccessFlooringCoreMaterial,
20
+ AccessFlooringFinishMaterial,
21
+ AccessFlooringSeismicRating,
22
+ AccessFlooringStringers,
23
+ )
24
+ from openepd.model.validation.quantity import AmountRangeForce, AmountRangeLengthMm, AmountRangePressureMpa
25
+
26
+
27
+ class AccessFlooringRangeMixin(BaseOpenEpdSpec):
28
+ core_material: list[AccessFlooringCoreMaterial] | None = pyd.Field(default=None, description="")
29
+ finish_material: list[AccessFlooringFinishMaterial] | None = pyd.Field(default=None, description="")
30
+ stringers: list[AccessFlooringStringers] | None = pyd.Field(default=None, description="")
31
+ seismic_rating: list[AccessFlooringSeismicRating] | None = pyd.Field(default=None, description="")
32
+ magnetically_attached_finish: bool | None = pyd.Field(default=None, description="")
33
+ permanent_finish: bool | None = pyd.Field(default=None, description="")
34
+ drylay: bool | None = pyd.Field(default=None, description="")
35
+ adjustable_height: bool | None = pyd.Field(default=None, description="")
36
+ fixed_height: bool | None = pyd.Field(default=None, description="")
37
+ finished_floor_height: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
38
+ panel_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
39
+ concentrated_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
40
+ uniform_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
41
+ rolling_load_10_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
42
+ rolling_load_10000_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
@@ -99,6 +99,28 @@ class ShotcreteV1(BaseOpenEpdHierarchicalSpec):
99
99
  _EXT_VERSION = "1.0"
100
100
 
101
101
 
102
+ class CellularConcreteV1(BaseOpenEpdHierarchicalSpec):
103
+ """
104
+ Cellular concrete is typically composed of cementitious material, water, and pre-formed foam with air entrainment.
105
+
106
+ Such a product is a homogeneous void or cell structure.
107
+ It is self-compacting and can be pumped over extensive heights and distances.
108
+ """
109
+
110
+ _EXT_VERSION = "1.0"
111
+
112
+
113
+ class OtherConcreteV1(BaseOpenEpdHierarchicalSpec):
114
+ """
115
+ Other Concrete Products.
116
+
117
+ Other types of concrete products that are not captured by existing concrete categories.
118
+ Could include products such as patching concrete or additives
119
+ """
120
+
121
+ _EXT_VERSION = "1.0"
122
+
123
+
102
124
  class ConcreteV1(BaseOpenEpdHierarchicalSpec):
103
125
  """
104
126
  Concrete.
@@ -107,7 +129,7 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
107
129
  hardens over time.
108
130
  """
109
131
 
110
- _EXT_VERSION = "1.0"
132
+ _EXT_VERSION = "1.1"
111
133
 
112
134
  # Own fields:
113
135
  lightweight: bool | None = pyd.Field(default=None, description="Product is lightweight", example=True)
@@ -173,6 +195,8 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
173
195
  OilPatch: OilPatchV1 | None = None
174
196
  ReadyMix: ReadyMixV1 | None = None
175
197
  Shotcrete: ShotcreteV1 | None = None
198
+ OtherConcrete: OtherConcreteV1 | None = None
199
+ CellularConcrete: CellularConcreteV1 | None = None
176
200
 
177
201
  _aci_exposure_classes_exclusive_groups_validator = pyd.validator("aci_exposure_classes", allow_reuse=True)(
178
202
  exclusive_groups_validator_factory(AciExposureClass)
@@ -16,10 +16,6 @@
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 (
19
- AccessFlooringCoreMaterial,
20
- AccessFlooringFinishMaterial,
21
- AccessFlooringSeismicRating,
22
- AccessFlooringStringers,
23
19
  AllFabrication,
24
20
  CarpetFormFactor,
25
21
  CarpetIntendedApplication,
@@ -43,14 +39,13 @@ from openepd.model.specs.enums import (
43
39
  WoodFlooringTimberSpecies,
44
40
  )
45
41
  from openepd.model.specs.singular.common import HasForestPracticesCertifiers
42
+ from openepd.model.specs.singular.mixins.access_flooring_mixin import AccessFlooringMixin
46
43
  from openepd.model.validation.numbers import RatioFloat
47
44
  from openepd.model.validation.quantity import (
48
45
  AreaPerVolumeStr,
49
- ForceNStr,
50
46
  GwpKgCo2eStr,
51
47
  LengthMmStr,
52
48
  LengthMStr,
53
- PressureMPaStr,
54
49
  RFactorStr,
55
50
  YarnWeightStr,
56
51
  validate_quantity_ge_factory,
@@ -59,7 +54,7 @@ from openepd.model.validation.quantity import (
59
54
  )
60
55
 
61
56
 
62
- class AccessFlooringV1(BaseOpenEpdHierarchicalSpec):
57
+ class AccessFlooringV1(BaseOpenEpdHierarchicalSpec, AccessFlooringMixin):
63
58
  """
64
59
  Elevated floor system built on top of concrete slab surface.
65
60
 
@@ -69,30 +64,6 @@ class AccessFlooringV1(BaseOpenEpdHierarchicalSpec):
69
64
 
70
65
  _EXT_VERSION = "1.0"
71
66
 
72
- # Own fields:
73
- core_material: AccessFlooringCoreMaterial | None = pyd.Field(default=None, description="", example="Cementitious")
74
- finish_material: AccessFlooringFinishMaterial | None = pyd.Field(default=None, description="", example="Linoleum")
75
- stringers: AccessFlooringStringers | None = pyd.Field(default=None, description="", example="Standard")
76
- seismic_rating: AccessFlooringSeismicRating | None = pyd.Field(default=None, description="", example="Type 0")
77
- magnetically_attached_finish: bool | None = pyd.Field(default=None, description="", example=True)
78
- permanent_finish: bool | None = pyd.Field(default=None, description="", example=True)
79
- drylay: bool | None = pyd.Field(default=None, description="", example=True)
80
- adjustable_height: bool | None = pyd.Field(default=None, description="", example=True)
81
- fixed_height: bool | None = pyd.Field(default=None, description="", example=True)
82
- finished_floor_height: LengthMmStr | None = pyd.Field(default=None, description="", example="1 m")
83
- panel_thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="1 m")
84
- concentrated_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
85
- uniform_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
86
- rolling_load_10_pass: ForceNStr | None = pyd.Field(default=None, description="", example="1 N")
87
- rolling_load_10000_pass: ForceNStr | None = pyd.Field(default=None, description="", example="1 N")
88
-
89
- _access_flooring_rolling_load_10_pass_is_quantity_validator = pyd.validator(
90
- "rolling_load_10_pass", allow_reuse=True
91
- )(validate_quantity_unit_factory("N"))
92
- _access_flooring_rolling_load_10000_pass_is_quantity_validator = pyd.validator(
93
- "rolling_load_10000_pass", allow_reuse=True
94
- )(validate_quantity_unit_factory("N"))
95
-
96
67
 
97
68
  class CarpetV1(BaseOpenEpdHierarchicalSpec):
98
69
  """Textile Floor Coverings."""
@@ -27,6 +27,7 @@ from openepd.model.specs.enums import (
27
27
  MasonryCementAstmC91Type,
28
28
  TextilesFabricType,
29
29
  )
30
+ from openepd.model.specs.singular.mixins.access_flooring_mixin import AccessFlooringMixin
30
31
 
31
32
 
32
33
  class CementV1(BaseOpenEpdHierarchicalSpec):
@@ -132,6 +133,16 @@ class TextilesV1(BaseOpenEpdHierarchicalSpec):
132
133
  fabric_type: list[TextilesFabricType] | None = pyd.Field(default=None, description="", example=["Leather"])
133
134
 
134
135
 
136
+ class AccessFlooringPanelsV1(BaseOpenEpdHierarchicalSpec, AccessFlooringMixin):
137
+ """
138
+ Part of an access floor system.
139
+
140
+ Panels are laid on top of an access floor pedestal, creating a finish floor.
141
+ """
142
+
143
+ _EXT_VERSION = "1.0"
144
+
145
+
135
146
  class ManufacturingInputsV1(BaseOpenEpdHierarchicalSpec):
136
147
  """
137
148
  Manufacturing inputs.
@@ -140,7 +151,7 @@ class ManufacturingInputsV1(BaseOpenEpdHierarchicalSpec):
140
151
  a construction.
141
152
  """
142
153
 
143
- _EXT_VERSION = "1.0"
154
+ _EXT_VERSION = "1.1"
144
155
 
145
156
  # Nested specs:
146
157
  AccessFlooringPedestals: AccessFlooringPedestalsV1 | None = None
@@ -149,3 +160,4 @@ class ManufacturingInputsV1(BaseOpenEpdHierarchicalSpec):
149
160
  CementitiousMaterials: CementitiousMaterialsV1 | None = None
150
161
  ConcreteAdmixtures: ConcreteAdmixturesV1 | None = None
151
162
  Textiles: TextilesV1 | None = None
163
+ AccessFlooringPanels: AccessFlooringPanelsV1 | None = None
@@ -0,0 +1,49 @@
1
+ #
2
+ # Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ from openepd.compat.pydantic import pyd
17
+ from openepd.model.specs.base import BaseOpenEpdSpec
18
+ from openepd.model.specs.enums import (
19
+ AccessFlooringCoreMaterial,
20
+ AccessFlooringFinishMaterial,
21
+ AccessFlooringSeismicRating,
22
+ AccessFlooringStringers,
23
+ )
24
+ from openepd.model.validation.quantity import ForceNStr, LengthMmStr, PressureMPaStr, validate_quantity_unit_factory
25
+
26
+
27
+ class AccessFlooringMixin(BaseOpenEpdSpec):
28
+ core_material: AccessFlooringCoreMaterial | None = pyd.Field(default=None, description="", example="Cementitious")
29
+ finish_material: AccessFlooringFinishMaterial | None = pyd.Field(default=None, description="", example="Linoleum")
30
+ stringers: AccessFlooringStringers | None = pyd.Field(default=None, description="", example="Standard")
31
+ seismic_rating: AccessFlooringSeismicRating | None = pyd.Field(default=None, description="", example="Type 0")
32
+ magnetically_attached_finish: bool | None = pyd.Field(default=None, description="", example=True)
33
+ permanent_finish: bool | None = pyd.Field(default=None, description="", example=True)
34
+ drylay: bool | None = pyd.Field(default=None, description="", example=True)
35
+ adjustable_height: bool | None = pyd.Field(default=None, description="", example=True)
36
+ fixed_height: bool | None = pyd.Field(default=None, description="", example=True)
37
+ finished_floor_height: LengthMmStr | None = pyd.Field(default=None, description="", example="1 m")
38
+ panel_thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="1 m")
39
+ concentrated_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
40
+ uniform_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
41
+ rolling_load_10_pass: ForceNStr | None = pyd.Field(default=None, description="", example="1 N")
42
+ rolling_load_10000_pass: ForceNStr | None = pyd.Field(default=None, description="", example="1 N")
43
+
44
+ _access_flooring_rolling_load_10_pass_is_quantity_validator = pyd.validator(
45
+ "rolling_load_10_pass", allow_reuse=True
46
+ )(validate_quantity_unit_factory("N"))
47
+ _access_flooring_rolling_load_10000_pass_is_quantity_validator = pyd.validator(
48
+ "rolling_load_10000_pass", allow_reuse=True
49
+ )(validate_quantity_unit_factory("N"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openepd
3
- Version: 6.17.1
3
+ Version: 6.19.0
4
4
  Summary: Python library to work with OpenEPD format
5
5
  License: Apache-2.0
6
6
  Author: C-Change Labs
@@ -1,5 +1,5 @@
1
1
  openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
2
- openepd/__version__.py,sha256=hTm9Glsw1EV1i00b9vQRl1LerwxXt8RHk7SXyVIJHQY,639
2
+ openepd/__version__.py,sha256=3bpnsguYhHUBbEqDHO2zgvwFAf_zr5yjuOpqcce4MLo,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=_eZt_jGVL1a3p9cr-EF39Ve9Vl5sB8zwzTc_slnRL50,7975
@@ -53,7 +53,7 @@ openepd/model/specs/__init__.py,sha256=toVWd8_jxmAf7gRwpoXQpLfZW6Cl-NwveoduMXhEC
53
53
  openepd/model/specs/asphalt.py,sha256=eHhcITbBrNYR5N6x4Q2BxpsR64BR9OkjJ4bvPRYOqMg,3411
54
54
  openepd/model/specs/base.py,sha256=10IDyRFKQgFnyIPSqpeayP8Og1BDgs1EepXX5dyCMM4,2674
55
55
  openepd/model/specs/concrete.py,sha256=D9jbhZDtTXNBoAgljQBPxsmGsMvLSIAP5H53ZYiXcGI,5336
56
- openepd/model/specs/enums.py,sha256=tX26ZSV1yWPSJMjmo_JRQI2_wJhXJ8XD4nJjRB26rpw,63049
56
+ openepd/model/specs/enums.py,sha256=6vNIDqt2kI-JKp9EBP9vhis935tfAS31znZ7v7LHb8s,63083
57
57
  openepd/model/specs/range/__init__.py,sha256=nV5ODdlIF2o0JZzIkgmzjo5_B3GNqKYEL_FWjyFvM8Y,4536
58
58
  openepd/model/specs/range/accessories.py,sha256=hZYz8mvAqrfLFiOIZ9qQZ59zmEiu0xE61Ko9cQ7NSKU,2498
59
59
  openepd/model/specs/range/aggregates.py,sha256=udVbsYc1Lyrd6a4YZBGNDQ3sBi-L3WLub_e1ecq7U-Q,2549
@@ -63,21 +63,23 @@ openepd/model/specs/range/bulk_materials.py,sha256=SuKhmJXMa9jl0CrkYr3QVvPX_GDbr
63
63
  openepd/model/specs/range/cast_decks_and_underlayment.py,sha256=37fx7jDRy6xryZTVweW_vu78h0kRs5vQurGS-Ypayog,1132
64
64
  openepd/model/specs/range/cladding.py,sha256=r7M2lc77NR2GXBkgkqRzskQ6TdZeMd7pEEm8ecHb8rc,7236
65
65
  openepd/model/specs/range/cmu.py,sha256=Sv4yw6121LSgYhW4J82xKsIi1KucaeDVF7xmpZtoCt8,1833
66
- openepd/model/specs/range/concrete.py,sha256=m2JP-W4Pnoo6q3hUbkIJF4_hTwI_-7FNLGZzdp-PX1w,6907
66
+ openepd/model/specs/range/concrete.py,sha256=CwRJ_0lJ6zRFwaiom3jrp50BSTiB9mIGL3ujcygZwfs,7528
67
67
  openepd/model/specs/range/conveying_equipment.py,sha256=_rqJ9Y3kkP8E6-vkZb6Pih3JnR1nUESJoOLf-LT--sc,3176
68
68
  openepd/model/specs/range/electrical.py,sha256=EI8pv9SN4lJbFNz1wlyMNAjkA0dsi84pc2J9YvtiwzY,11860
69
69
  openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,sha256=xDdyLj6oJRmdybq7W91MtgE80FDpaG6ii5hE921aRGQ,2525
70
70
  openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
71
71
  openepd/model/specs/range/exterior_improvements.py,sha256=dcgX9Tv4U_Zki9nGcy6ykvyesDYAtS_CuD-7nf17kMQ,1736
72
- openepd/model/specs/range/finishes.py,sha256=ZvP_AShojfM_aTgFdBfjaxGfMHGZQ1PBdpfJshRYVX4,21188
72
+ openepd/model/specs/range/finishes.py,sha256=hAqnEzfSPeLS_Wq_ZiIn_k8OdivCvSCgxHAcNldqdXs,19787
73
73
  openepd/model/specs/range/fire_and_smoke_protection.py,sha256=GUap2Xrn-rFF8CMDyRcOpmQpO8JgZ7PSUXGr_SKUzws,3337
74
74
  openepd/model/specs/range/furnishings.py,sha256=_HdPg1_LepLgdo5tV59oRer1PRYniIM0kLEKbnlyoLM,6703
75
75
  openepd/model/specs/range/grouting.py,sha256=BQPxH6BvlXpdhLEZBui9zTuY93K_9syjoa6rdnF8GGY,1095
76
- openepd/model/specs/range/manufacturing_inputs.py,sha256=RFqWTQij2Zc5-Y4jzOBQKC0ENV3ncg5O9yHoqdo9rUQ,5574
76
+ openepd/model/specs/range/manufacturing_inputs.py,sha256=9KiSZC7uR2nF9pi4UjZ7XfGVhrsix_mU4HlJwj_MSVI,5986
77
77
  openepd/model/specs/range/masonry.py,sha256=P9USz744YQLBEk_XdG4v9a4ImXtMymnPC30qtbd2F6I,2867
78
78
  openepd/model/specs/range/material_handling.py,sha256=9jxRHpjMKu71B5omH55UjkNVJvaTLgTMtEidSKPFn5c,1483
79
79
  openepd/model/specs/range/mechanical.py,sha256=kyAJj9KJ17usuKDOt7v2gAJpzSEeYO9nnTOB_pht-fc,10267
80
80
  openepd/model/specs/range/mechanical_insulation.py,sha256=S2-NkFVkjLmn_dk3gsG8C2YcV0SFXbOCgY6LKberqh8,1737
81
+ openepd/model/specs/range/mixins/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
82
+ openepd/model/specs/range/mixins/access_flooring_mixin.py,sha256=JEcvlmKv3R5dVIM4X4ILH43WlMwF6FnZ4-_s2qU-MIM,2382
81
83
  openepd/model/specs/range/network_infrastructure.py,sha256=aqXEIGqFy0gNCM_ftd3J6aT3FZf9JlT0SBOImhdkTg0,8498
82
84
  openepd/model/specs/range/openings.py,sha256=4n5PEMJJFL75wMmYUcJNxdWtDMpWYZLKK4d-730KASA,15451
83
85
  openepd/model/specs/range/other_electrical_equipment.py,sha256=H4tZHcHyR2uUYHn-bQfLC6hR4tynVp_7EJbiI-YpK7Y,1001
@@ -100,7 +102,7 @@ openepd/model/specs/singular/cast_decks_and_underlayment.py,sha256=HjIEKekxCAKx5
100
102
  openepd/model/specs/singular/cladding.py,sha256=ywT6E8iv55khqbrkMRFOkm_PAWht3qt4ybNDNRa1wyw,6588
101
103
  openepd/model/specs/singular/cmu.py,sha256=yexfb3REDGvVG3yD_1Yg1Zt-atBWLa8tv2lPmBPDWfw,1952
102
104
  openepd/model/specs/singular/common.py,sha256=rPJTp2XuSa_dOXj6ZikzMv-lLbEwPLaP-XsXkjDB4uI,1048
103
- openepd/model/specs/singular/concrete.py,sha256=G3PRrqNdlAougtuvvmjp1Fp-qFOvUTVbpW2UFfMQ-ts,7718
105
+ openepd/model/specs/singular/concrete.py,sha256=yDqNa5Ylv__ago6jeYUjBH2GNhMUlXjTHasl1Ing7tU,8467
104
106
  openepd/model/specs/singular/conveying_equipment.py,sha256=AK_KdGyBDh0_Dl3YCkIyfHEfpiJmntdH-e9rFaIZv2s,3042
105
107
  openepd/model/specs/singular/deprecated/__init__.py,sha256=f8I04fHO5QWpNtorrCgbUXz4r0B0zgsk8zDUfXu_i80,2635
106
108
  openepd/model/specs/singular/deprecated/concrete.py,sha256=swSOfViIvy7z923C6uHBcIZrv_JRMv7wSJHpg9PGAJg,5265
@@ -109,16 +111,17 @@ openepd/model/specs/singular/electrical.py,sha256=BiaPpZBGBzUt5wVacd1tOIZ9dRn9ZA
109
111
  openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py,sha256=oZYyHgnXn9RH3YzltUEDiiQKrin2mvMlTgC3OhxV7DY,1978
110
112
  openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
111
113
  openepd/model/specs/singular/exterior_improvements.py,sha256=tf9lHxb5Mj9Sf3WGjR1wq-mKcyqlvvVKpZG2W6cLcxo,1711
112
- openepd/model/specs/singular/finishes.py,sha256=Pg6eb3-NFB45hhGltNjW_7SGeujcE882CZX7P8X8FMk,22571
114
+ openepd/model/specs/singular/finishes.py,sha256=vAN6p9eA8ysdrJ0gAD7xteuKpURmGTruVskXh17N8-E,20631
113
115
  openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORHvSFN1wftRVAps_UJ1Ep3Dk9arT3s,3058
114
116
  openepd/model/specs/singular/furnishings.py,sha256=4bReWm8FSWHRyq6vmjPm7ZixFIau7J8JF1gtZq6_jVA,5732
115
117
  openepd/model/specs/singular/grouting.py,sha256=pg2tX3W7a2TQ3z_eyFYGlBJY3WEwn6JlZyqM3PQIJcU,934
116
- openepd/model/specs/singular/manufacturing_inputs.py,sha256=9WSDOVN0mUqvFXqWf82lkpHi-XRQSMcEpe9bweegwhU,5093
118
+ openepd/model/specs/singular/manufacturing_inputs.py,sha256=pUnd7oo20w8h1C0Jo-t1m2uayOYtlXJyuV26gVfkhlU,5488
117
119
  openepd/model/specs/singular/masonry.py,sha256=f6nph-gscAmVeJ60bG-ebto5kz0fgh0LY27n0VutGFA,3165
118
120
  openepd/model/specs/singular/material_handling.py,sha256=iEeUx1hNKla669y0zl-QAJn6xA7ceq75aRG8qT0p56Q,1274
119
121
  openepd/model/specs/singular/mechanical.py,sha256=VvW9PQ3VI8GCaqu5MKUmxjmcaHkKDAHAIhLyK-DVlUw,9862
120
122
  openepd/model/specs/singular/mechanical_insulation.py,sha256=h-Ir-jiLF-cpiHap4wx5G4fpvsRRKzqcGVXb5U5aqvQ,1607
121
123
  openepd/model/specs/singular/mixins/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
124
+ openepd/model/specs/singular/mixins/access_flooring_mixin.py,sha256=z_e5TYK2dtRMz--GrWQDkyyDEM0DmERZZO9V-EzAs1o,2915
122
125
  openepd/model/specs/singular/mixins/conduit_mixin.py,sha256=tj6p-MF84rg4LGxXPC65uMvmn6NlxmATuloe4TcuQdk,1928
123
126
  openepd/model/specs/singular/network_infrastructure.py,sha256=eB3p1zu1u15Ly5iuyyJ4xl3Z1GuBCRVU18Wpz8FWZrg,8521
124
127
  openepd/model/specs/singular/openings.py,sha256=UbdojHW3yxV9DdWECgyANKicdH5czz6pyFPKpzzLxmw,18941
@@ -141,7 +144,7 @@ openepd/model/validation/quantity.py,sha256=mP4gIkeOGZuHRhprsf_BX11Cic75NssYxOTk
141
144
  openepd/model/versioning.py,sha256=wBZdOVL3ND9FMIRU9PS3vx9M_7MBiO70xYPQvPez6po,4522
142
145
  openepd/patch_pydantic.py,sha256=bO7U5HqthFol0vfycb0a42UAGL3KOQ8-9MW4yCWOFP0,4150
143
146
  openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- openepd-6.17.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
145
- openepd-6.17.1.dist-info/METADATA,sha256=BEk61RucqY3ma-xOceMUBPHbBEJvMcR4lYPkIJPi-zk,9067
146
- openepd-6.17.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
147
- openepd-6.17.1.dist-info/RECORD,,
147
+ openepd-6.19.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
148
+ openepd-6.19.0.dist-info/METADATA,sha256=odv3HP47b4WVhRfBXhEgRjAEsAwEuLo6OkpjYvWKgoY,9067
149
+ openepd-6.19.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
150
+ openepd-6.19.0.dist-info/RECORD,,