openepd 5.0.0__py3-none-any.whl → 5.1.1__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.
Files changed (61) hide show
  1. openepd/__version__.py +1 -1
  2. openepd/model/common.py +39 -0
  3. openepd/model/declaration.py +7 -2
  4. openepd/model/geography.py +1 -1
  5. openepd/model/lcia.py +6 -3
  6. openepd/model/org.py +0 -1
  7. openepd/model/pcr.py +2 -2
  8. openepd/model/specs/README.md +34 -8
  9. openepd/model/specs/asphalt.py +2 -2
  10. openepd/model/specs/base.py +13 -0
  11. openepd/model/specs/generated/__init__.py +80 -0
  12. openepd/model/specs/generated/cladding.py +4 -4
  13. openepd/model/specs/generated/concrete.py +8 -7
  14. openepd/model/specs/generated/electrical.py +2 -2
  15. openepd/model/specs/generated/finishes.py +10 -6
  16. openepd/model/specs/generated/masonry.py +6 -2
  17. openepd/model/specs/generated/network_infrastructure.py +7 -2
  18. openepd/model/specs/generated/openings.py +10 -6
  19. openepd/model/specs/generated/sheathing.py +8 -4
  20. openepd/model/specs/generated/steel.py +10 -5
  21. openepd/model/specs/range/__init__.py +101 -0
  22. openepd/model/specs/range/accessories.py +97 -0
  23. openepd/model/specs/range/aggregates.py +57 -0
  24. openepd/model/specs/range/aluminium.py +92 -0
  25. openepd/model/specs/range/asphalt.py +61 -0
  26. openepd/model/specs/range/bulk_materials.py +31 -0
  27. openepd/model/specs/range/cast_decks_and_underlayment.py +34 -0
  28. openepd/model/specs/range/cladding.py +275 -0
  29. openepd/model/specs/range/cmu.py +44 -0
  30. openepd/model/specs/range/concrete.py +179 -0
  31. openepd/model/specs/range/conveying_equipment.py +86 -0
  32. openepd/model/specs/range/electrical.py +422 -0
  33. openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +96 -0
  34. openepd/model/specs/range/electricity.py +31 -0
  35. openepd/model/specs/range/finishes.py +585 -0
  36. openepd/model/specs/range/fire_and_smoke_protection.py +108 -0
  37. openepd/model/specs/range/furnishings.py +137 -0
  38. openepd/model/specs/range/grouting.py +34 -0
  39. openepd/model/specs/range/manufacturing_inputs.py +190 -0
  40. openepd/model/specs/range/masonry.py +87 -0
  41. openepd/model/specs/range/material_handling.py +50 -0
  42. openepd/model/specs/range/mechanical.py +307 -0
  43. openepd/model/specs/range/mechanical_insulation.py +42 -0
  44. openepd/model/specs/range/network_infrastructure.py +208 -0
  45. openepd/model/specs/range/openings.py +512 -0
  46. openepd/model/specs/range/other_electrical_equipment.py +31 -0
  47. openepd/model/specs/range/other_materials.py +194 -0
  48. openepd/model/specs/range/plumbing.py +200 -0
  49. openepd/model/specs/range/precast_concrete.py +115 -0
  50. openepd/model/specs/range/sheathing.py +86 -0
  51. openepd/model/specs/range/steel.py +332 -0
  52. openepd/model/specs/range/thermal_moisture_protection.py +336 -0
  53. openepd/model/specs/range/utility_piping.py +75 -0
  54. openepd/model/specs/range/wood.py +228 -0
  55. openepd/model/specs/range/wood_joists.py +44 -0
  56. openepd/model/validation/numbers.py +11 -5
  57. openepd/model/validation/quantity.py +440 -52
  58. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/METADATA +6 -1
  59. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/RECORD +61 -26
  60. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/LICENSE +0 -0
  61. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,275 @@
1
+ #
2
+ # Copyright 2024 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
+ __all__ = (
17
+ "AluminiumSidingRangeV1",
18
+ "SteelSidingRangeV1",
19
+ "ZincSidingRangeV1",
20
+ "ShingleAndShakeSidingRangeV1",
21
+ "MetalSidingRangeV1",
22
+ "CompositionSidingRangeV1",
23
+ "FiberCementSidingRangeV1",
24
+ "InsulatedVinylSidingRangeV1",
25
+ "PlywoodSidingRangeV1",
26
+ "PolypropyleneSidingRangeV1",
27
+ "SolidWoodSidingRangeV1",
28
+ "VinylSidingRangeV1",
29
+ "SidingRangeV1",
30
+ "InsulatedRoofPanelsRangeV1",
31
+ "InsulatedWallPanelsRangeV1",
32
+ "RoofPanelsRangeV1",
33
+ "StoneCladdingRangeV1",
34
+ "WallPanelsRangeV1",
35
+ "CladdingRangeV1",
36
+ )
37
+
38
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
39
+
40
+
41
+ from openepd.compat.pydantic import pyd
42
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
43
+ from openepd.model.specs.generated.enums import CladdingFacingMaterial, CladdingInsulatingMaterial, SidingFormFactor
44
+ from openepd.model.validation.quantity import AmountRangeLengthMm, AmountRangeRValue
45
+
46
+
47
+ class AluminiumSidingRangeV1(BaseOpenEpdHierarchicalSpec):
48
+ """
49
+ Exterior siding product made primarily from aluminium.
50
+
51
+ Range version.
52
+ """
53
+
54
+ _EXT_VERSION = "1.0"
55
+
56
+
57
+ class SteelSidingRangeV1(BaseOpenEpdHierarchicalSpec):
58
+ """
59
+ Exterior siding product made primarily from steel.
60
+
61
+ Range version.
62
+ """
63
+
64
+ _EXT_VERSION = "1.0"
65
+
66
+
67
+ class ZincSidingRangeV1(BaseOpenEpdHierarchicalSpec):
68
+ """
69
+ Exterior siding product made primarily from zinc.
70
+
71
+ Range version.
72
+ """
73
+
74
+ _EXT_VERSION = "1.0"
75
+
76
+
77
+ class ShingleAndShakeSidingRangeV1(BaseOpenEpdHierarchicalSpec):
78
+ """
79
+ Shingle & shake siding.
80
+
81
+ Range version.
82
+ """
83
+
84
+ _EXT_VERSION = "1.0"
85
+
86
+
87
+ class MetalSidingRangeV1(BaseOpenEpdHierarchicalSpec):
88
+ """
89
+ Exterior siding product made of metal such as steel, aluminum, etc.
90
+
91
+ Range version.
92
+ """
93
+
94
+ _EXT_VERSION = "1.0"
95
+
96
+ AluminiumSiding: AluminiumSidingRangeV1 | None = None
97
+ SteelSiding: SteelSidingRangeV1 | None = None
98
+ ZincSiding: ZincSidingRangeV1 | None = None
99
+
100
+
101
+ class CompositionSidingRangeV1(BaseOpenEpdHierarchicalSpec):
102
+ """
103
+ Composite wood siding composed of wood wafers and resin.
104
+
105
+ Range version.
106
+ """
107
+
108
+ _EXT_VERSION = "1.0"
109
+
110
+
111
+ class FiberCementSidingRangeV1(BaseOpenEpdHierarchicalSpec):
112
+ """
113
+ Composite siding product made of cement and cellulose fibers.
114
+
115
+ Range version.
116
+ """
117
+
118
+ _EXT_VERSION = "1.0"
119
+
120
+
121
+ class InsulatedVinylSidingRangeV1(BaseOpenEpdHierarchicalSpec):
122
+ """
123
+ Vinyl cladding product integrated with manufacturer-installed insulation.
124
+
125
+ Range version.
126
+ """
127
+
128
+ _EXT_VERSION = "1.0"
129
+
130
+ thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
131
+
132
+
133
+ class PlywoodSidingRangeV1(BaseOpenEpdHierarchicalSpec):
134
+ """
135
+ Siding made of plywood boards.
136
+
137
+ Range version.
138
+ """
139
+
140
+ _EXT_VERSION = "1.0"
141
+
142
+
143
+ class PolypropyleneSidingRangeV1(BaseOpenEpdHierarchicalSpec):
144
+ """
145
+ Exterior wall cladding made from polypropylene, which may contain fillers or reinforcements.
146
+
147
+ Range version.
148
+ """
149
+
150
+ _EXT_VERSION = "1.0"
151
+
152
+
153
+ class SolidWoodSidingRangeV1(BaseOpenEpdHierarchicalSpec):
154
+ """
155
+ Siding products made of wood including shingle & shake siding.
156
+
157
+ Range version.
158
+ """
159
+
160
+ _EXT_VERSION = "1.0"
161
+
162
+ ShingleAndShakeSiding: ShingleAndShakeSidingRangeV1 | None = None
163
+
164
+
165
+ class VinylSidingRangeV1(BaseOpenEpdHierarchicalSpec):
166
+ """
167
+ Exterior wall cladding made principally from rigid polyvinyl chloride (PVC).
168
+
169
+ Range version.
170
+ """
171
+
172
+ _EXT_VERSION = "1.0"
173
+
174
+ thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
175
+
176
+
177
+ class SidingRangeV1(BaseOpenEpdHierarchicalSpec):
178
+ """
179
+ Long narrow products for exterior wall face of building.
180
+
181
+ Typically made of, e.g., metal, solid wood, plywood, plastic, composition, fiber cement, etc.
182
+
183
+ Range version.
184
+ """
185
+
186
+ _EXT_VERSION = "1.0"
187
+
188
+ insulated: bool | None = pyd.Field(default=None, description="")
189
+ ventilated: bool | None = pyd.Field(default=None, description="")
190
+ paint_or_stain_required: bool | None = pyd.Field(default=None, description="")
191
+ r_value: AmountRangeRValue | None = pyd.Field(default=None, description="")
192
+ form_factor: list[SidingFormFactor] | None = pyd.Field(default=None, description="")
193
+ MetalSiding: MetalSidingRangeV1 | None = None
194
+ CompositionSiding: CompositionSidingRangeV1 | None = None
195
+ FiberCementSiding: FiberCementSidingRangeV1 | None = None
196
+ InsulatedVinylSiding: InsulatedVinylSidingRangeV1 | None = None
197
+ PlywoodSiding: PlywoodSidingRangeV1 | None = None
198
+ PolypropyleneSiding: PolypropyleneSidingRangeV1 | None = None
199
+ SolidWoodSiding: SolidWoodSidingRangeV1 | None = None
200
+ VinylSiding: VinylSidingRangeV1 | None = None
201
+
202
+
203
+ class InsulatedRoofPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
204
+ """
205
+ Insulated roof panels performance specification.
206
+
207
+ Range version.
208
+ """
209
+
210
+ _EXT_VERSION = "1.0"
211
+
212
+ r_value: AmountRangeRValue | None = pyd.Field(default=None, description="")
213
+ insulating_material: list[CladdingInsulatingMaterial] | None = pyd.Field(default=None, description="")
214
+
215
+
216
+ class InsulatedWallPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
217
+ """
218
+ Insulated wall panels performance specification.
219
+
220
+ Range version.
221
+ """
222
+
223
+ _EXT_VERSION = "1.0"
224
+
225
+ r_value: AmountRangeRValue | None = pyd.Field(default=None, description="")
226
+ insulating_material: list[CladdingInsulatingMaterial] | None = pyd.Field(default=None, description="")
227
+
228
+
229
+ class RoofPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
230
+ """
231
+ Roof panels performance specification.
232
+
233
+ Range version.
234
+ """
235
+
236
+ _EXT_VERSION = "1.0"
237
+
238
+
239
+ class StoneCladdingRangeV1(BaseOpenEpdHierarchicalSpec):
240
+ """
241
+ Stone cladding performance specification.
242
+
243
+ Range version.
244
+ """
245
+
246
+ _EXT_VERSION = "1.0"
247
+
248
+
249
+ class WallPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
250
+ """
251
+ Wall panels performance specification.
252
+
253
+ Range version.
254
+ """
255
+
256
+ _EXT_VERSION = "1.0"
257
+
258
+
259
+ class CladdingRangeV1(BaseOpenEpdHierarchicalSpec):
260
+ """
261
+ Cladding performance specification.
262
+
263
+ Range version.
264
+ """
265
+
266
+ _EXT_VERSION = "1.0"
267
+
268
+ thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
269
+ facing_material: list[CladdingFacingMaterial] | None = pyd.Field(default=None, description="")
270
+ Siding: SidingRangeV1 | None = None
271
+ InsulatedRoofPanels: InsulatedRoofPanelsRangeV1 | None = None
272
+ InsulatedWallPanels: InsulatedWallPanelsRangeV1 | None = None
273
+ RoofPanels: RoofPanelsRangeV1 | None = None
274
+ StoneCladding: StoneCladdingRangeV1 | None = None
275
+ WallPanels: WallPanelsRangeV1 | None = None
@@ -0,0 +1,44 @@
1
+ #
2
+ # Copyright 2024 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
+ __all__ = ("CMURangeV1",)
17
+
18
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
19
+
20
+
21
+ from openepd.compat.pydantic import pyd
22
+ from openepd.model.common import RangeFloat
23
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
24
+ from openepd.model.specs.generated.enums import CmuBlockType, CmuWeightClassification
25
+ from openepd.model.validation.quantity import AmountRangeGWP, AmountRangePressureMpa
26
+
27
+
28
+ class CMURangeV1(BaseOpenEpdHierarchicalSpec):
29
+ """
30
+ Pre-manufactured concrete masonry blocks.
31
+
32
+ Range version.
33
+ """
34
+
35
+ _EXT_VERSION = "1.0"
36
+
37
+ white_cement: bool | None = pyd.Field(default=None, description="")
38
+ strength_28d: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
39
+ weight_classification: list[CmuWeightClassification] | None = pyd.Field(default=None, description="")
40
+ block_type: list[CmuBlockType] | None = pyd.Field(default=None, description="")
41
+ insulated: bool | None = pyd.Field(default=None, description="")
42
+ sound_performance: bool | None = pyd.Field(default=None, description="")
43
+ b1_recarbonation: AmountRangeGWP | None = pyd.Field(default=None, description="")
44
+ b1_recarbonation_z: RangeFloat | None = pyd.Field(default=None, description="")
@@ -0,0 +1,179 @@
1
+ #
2
+ # Copyright 2024 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
+ __all__ = (
17
+ "CementGroutRangeV1",
18
+ "ConcretePavingRangeV1",
19
+ "FlowableFillRangeV1",
20
+ "OilPatchRangeV1",
21
+ "ReadyMixRangeV1",
22
+ "ShotcreteRangeV1",
23
+ "ConcreteRangeV1",
24
+ )
25
+
26
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
27
+
28
+
29
+ from typing import Literal
30
+
31
+ from openepd.compat.pydantic import pyd
32
+ from openepd.model.common import RangeRatioFloat
33
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
34
+ from openepd.model.specs.concrete import Cementitious, ConcreteTypicalApplication
35
+ from openepd.model.specs.generated.enums import AciExposureClass, CsaExposureClass, EnExposureClass
36
+ from openepd.model.validation.quantity import (
37
+ AmountRangeLengthInch,
38
+ AmountRangeLengthMm,
39
+ AmountRangeMass,
40
+ AmountRangePressureMpa,
41
+ )
42
+
43
+
44
+ class CementGroutRangeV1(BaseOpenEpdHierarchicalSpec):
45
+ """
46
+ Cement grout performance specification.
47
+
48
+ Cement grouting is a slurry that is placed as a flowable liquid. It is an effective material
49
+ for filling and strengthening granular soils, voids in rocks, foundation underpinnings, and
50
+ other underground voids. Also called structural grout, these materials typically impart
51
+ significant compressive strength to the system.
52
+
53
+ Range version.
54
+ """
55
+
56
+ _EXT_VERSION = "1.0"
57
+
58
+
59
+ class ConcretePavingRangeV1(BaseOpenEpdHierarchicalSpec):
60
+ """
61
+ Concrete paving.
62
+
63
+ Range version.
64
+ """
65
+
66
+ _EXT_VERSION = "1.0"
67
+
68
+ flexion_strength: AmountRangePressureMpa | None = pyd.Field(default=None, description="Concrete flexural strength.")
69
+
70
+
71
+ class FlowableFillRangeV1(BaseOpenEpdHierarchicalSpec):
72
+ """
73
+ Flowable fill performance specification.
74
+
75
+ Flowable fill is a slurry that is placed as a flowable liquid (high slump) and sets with no
76
+ compaction. It is often used in tight or restricted access areas where placing and compacting
77
+ fill is difficult. Applications include filling large voids such as abandoned underground storage
78
+ tanks, basements, tunnels, mines, and sewers. It can also be used as paving sub-base, bridge
79
+ abutment, and retaining wall backfill.
80
+
81
+ Also called Controlled Density Fill (CDF) or Controlled Low Strength Materials (CLSMs). These materials typically
82
+ have compressive strengths under 1200 psi.
83
+
84
+ Range version.
85
+ """
86
+
87
+ _EXT_VERSION = "1.0"
88
+
89
+
90
+ class OilPatchRangeV1(BaseOpenEpdHierarchicalSpec):
91
+ """
92
+ Petroleum Industry Cement Slurry.
93
+
94
+ Concretes for use in creation, maintenance, and decommissioning of petroleum extraction wells and similar
95
+ applications. Includes foamed cement; often called cement in the drilling industry. Differs from
96
+ flowable fill and grout in that it contains no sand or other aggregates.
97
+
98
+ Range version.
99
+ """
100
+
101
+ _EXT_VERSION = "1.0"
102
+
103
+
104
+ class ReadyMixRangeV1(BaseOpenEpdHierarchicalSpec):
105
+ """
106
+ Concretes to be mixed and then poured on-site.
107
+
108
+ Range version.
109
+ """
110
+
111
+ _EXT_VERSION = "1.0"
112
+
113
+
114
+ class ShotcreteRangeV1(BaseOpenEpdHierarchicalSpec):
115
+ """
116
+ Concretes sprayed on a target.
117
+
118
+ Range version.
119
+ """
120
+
121
+ _EXT_VERSION = "1.0"
122
+
123
+
124
+ class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
125
+ """
126
+ Concrete.
127
+
128
+ A composite material composed of fine and coarse aggregate bonded together with a fluid cement (cement paste) that
129
+ hardens over time.
130
+
131
+ Range version.
132
+ """
133
+
134
+ _EXT_VERSION = "1.0"
135
+
136
+ lightweight: bool | None = pyd.Field(default=None, description="Product is lightweight")
137
+ strength_28d: AmountRangePressureMpa | None = pyd.Field(default=None, description="Concrete strength after 28 days")
138
+ strength_other: AmountRangePressureMpa | None = pyd.Field(
139
+ default=None, description="A strength spec which is to be reached later other 28 days (e.g. 42d)"
140
+ )
141
+ strength_other_d: Literal[3, 7, 14, 42, 56, 72, 96, 120] | None = pyd.Field(
142
+ default=None, description="Test Day for strength_other"
143
+ )
144
+ slump: AmountRangeLengthInch | None = pyd.Field(default=None, description="")
145
+ min_slump: AmountRangeLengthInch | None = pyd.Field(default=None, description="Minimum test slump")
146
+ max_slump: AmountRangeLengthInch | None = pyd.Field(default=None, description="")
147
+ min_pipeline_size: AmountRangeLengthMm | None = pyd.Field(default=None, description="Minimum pipeline size")
148
+ w_c_ratio: RangeRatioFloat | None = pyd.Field(default=None, description="Ratio of water to cement")
149
+ air_entrain: bool | None = pyd.Field(default=None, description="Air Entrainment")
150
+ co2_entrain: bool | None = pyd.Field(default=None, description="CO2 Curing")
151
+ self_consolidating: bool | None = pyd.Field(default=None, description="Self Compacting")
152
+ white_cement: bool | None = pyd.Field(default=None, description="White Cement")
153
+ plc: bool | None = pyd.Field(default=None, description="Portland Limestone Cement")
154
+ finishable: bool | None = pyd.Field(default=None, description="Finishable")
155
+ fiber_reinforced: bool | None = pyd.Field(default=None, description="fiber_reinforced")
156
+ cementitious: Cementitious | None = pyd.Field(
157
+ default=None, description="List of cementitious materials, and proportion by mass"
158
+ )
159
+ aggregate_size_max: AmountRangeLengthMm | None = pyd.Field(
160
+ default=None,
161
+ description="The smallest sieve size for which the entire amount of aggregate is able to pass. Parameter describes diameter of aggregate",
162
+ )
163
+ cement_content: AmountRangeMass | None = pyd.Field(default=None)
164
+ aci_exposure_classes: list[AciExposureClass] | None = pyd.Field(
165
+ default=None, description="List of ACI exposure classes"
166
+ )
167
+ csa_exposure_classes: list[CsaExposureClass] | None = pyd.Field(
168
+ default=None, description="List of CSA exposure classes"
169
+ )
170
+ en_exposure_classes: list[EnExposureClass] | None = pyd.Field(
171
+ default=None, description="List of EN exposure classes"
172
+ )
173
+ typical_application: ConcreteTypicalApplication | None = pyd.Field(default=None, description="Typical Application")
174
+ CementGrout: CementGroutRangeV1 | None = None
175
+ ConcretePaving: ConcretePavingRangeV1 | None = None
176
+ FlowableFill: FlowableFillRangeV1 | None = None
177
+ OilPatch: OilPatchRangeV1 | None = None
178
+ ReadyMix: ReadyMixRangeV1 | None = None
179
+ Shotcrete: ShotcreteRangeV1 | None = None
@@ -0,0 +1,86 @@
1
+ #
2
+ # Copyright 2024 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
+ __all__ = (
17
+ "EscalatorsRangeV1",
18
+ "ElevatorsRangeV1",
19
+ "ConveyingEquipmentRangeV1",
20
+ )
21
+
22
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
23
+
24
+
25
+ from openepd.compat.pydantic import pyd
26
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
27
+ from openepd.model.specs.generated.enums import ElevatorsBuildingRise, ElevatorsUsageIntensity
28
+ from openepd.model.validation.quantity import (
29
+ AmountRangeCapacityPerHour,
30
+ AmountRangeLengthMm,
31
+ AmountRangeMass,
32
+ AmountRangeSpeed,
33
+ )
34
+
35
+
36
+ class EscalatorsRangeV1(BaseOpenEpdHierarchicalSpec):
37
+ """
38
+ Escalators category performance specification.
39
+
40
+ A moving staircase consisting of a circulating belt of steps driven by a motor,
41
+ which conveys people between the floors of a building.
42
+
43
+ Range version.
44
+ """
45
+
46
+ _EXT_VERSION = "1.1"
47
+
48
+ vertical_rise: AmountRangeLengthMm | None = pyd.Field(
49
+ default=None, description="The vertical distance between the top and bottom landings of an escalator"
50
+ )
51
+ speed: AmountRangeSpeed | None = pyd.Field(default=None, description="Reference speed of the escalator")
52
+ step_width: AmountRangeLengthMm | None = pyd.Field(default=None, description="Width of the escalator steps")
53
+ max_capacity: AmountRangeCapacityPerHour | None = pyd.Field(
54
+ default=None, description="Max capacity of escalator in persons per hour"
55
+ )
56
+ indoor: bool | None = pyd.Field(default=None, description="Escalator can be used for indoor applications")
57
+ outdoor: bool | None = pyd.Field(default=None, description="Escalator can be used for outdoor applications")
58
+
59
+
60
+ class ElevatorsRangeV1(BaseOpenEpdHierarchicalSpec):
61
+ """
62
+ Car that moves in a vertical shaft to carry passengers or freight between the levels of a multistory building.
63
+
64
+ Range version.
65
+ """
66
+
67
+ _EXT_VERSION = "1.0"
68
+
69
+ usage_intensity: list[ElevatorsUsageIntensity] | None = pyd.Field(default=None, description="")
70
+ travel_length: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
71
+ rated_load: AmountRangeMass | None = pyd.Field(default=None, description="")
72
+ rated_speed: AmountRangeSpeed | None = pyd.Field(default=None, description="")
73
+ building_rise: list[ElevatorsBuildingRise] | None = pyd.Field(default=None, description="")
74
+
75
+
76
+ class ConveyingEquipmentRangeV1(BaseOpenEpdHierarchicalSpec):
77
+ """
78
+ Conveying Equipment.
79
+
80
+ Range version.
81
+ """
82
+
83
+ _EXT_VERSION = "1.1"
84
+
85
+ Elevators: ElevatorsRangeV1 | None = None
86
+ Escalators: EscalatorsRangeV1 | None = None