openepd 3.0.0__py3-none-any.whl → 3.1.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 +1 -1
- openepd/model/specs/__init__.py +71 -19
- openepd/model/specs/aluminium.py +1 -1
- openepd/model/specs/concrete.py +1 -167
- openepd/model/specs/generated/accessories.py +63 -0
- openepd/model/specs/generated/aggregates.py +71 -0
- openepd/model/specs/generated/aluminium.py +66 -0
- openepd/model/specs/generated/asphalt.py +86 -0
- openepd/model/specs/generated/bulk_materials.py +26 -0
- openepd/model/specs/generated/cast_decks_and_underlayment.py +26 -0
- openepd/model/specs/generated/cladding.py +214 -0
- openepd/model/specs/generated/cmu.py +46 -0
- openepd/model/specs/generated/common.py +27 -0
- openepd/model/specs/generated/concrete.py +151 -0
- openepd/model/specs/generated/conveying_equipment.py +57 -0
- openepd/model/specs/generated/electrical.py +297 -0
- openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py +63 -0
- openepd/model/specs/generated/electricity.py +26 -0
- openepd/model/specs/generated/enums.py +2420 -0
- openepd/model/specs/generated/finishes.py +519 -0
- openepd/model/specs/generated/fire_and_smoke_protection.py +79 -0
- openepd/model/specs/generated/furnishings.py +95 -0
- openepd/model/specs/generated/grouting.py +26 -0
- openepd/model/specs/generated/manufacturing_inputs.py +131 -0
- openepd/model/specs/generated/masonry.py +77 -0
- openepd/model/specs/generated/material_handling.py +35 -0
- openepd/model/specs/generated/mechanical.py +271 -0
- openepd/model/specs/generated/mechanical_insulation.py +41 -0
- openepd/model/specs/generated/network_infrastructure.py +181 -0
- openepd/model/specs/generated/openings.py +423 -0
- openepd/model/specs/generated/other_electrical_equipment.py +26 -0
- openepd/model/specs/generated/other_materials.py +123 -0
- openepd/model/specs/generated/plumbing.py +153 -0
- openepd/model/specs/generated/precast_concrete.py +68 -0
- openepd/model/specs/generated/sheathing.py +74 -0
- openepd/model/specs/generated/steel.py +224 -0
- openepd/model/specs/generated/thermal_moisture_protection.py +233 -0
- openepd/model/specs/generated/utility_piping.py +65 -0
- openepd/model/specs/generated/wood.py +167 -0
- openepd/model/specs/generated/wood_joists.py +38 -0
- openepd/model/specs/glass.py +1 -45
- openepd/model/specs/steel.py +1 -10
- openepd/model/validation/quantity.py +4 -3
- {openepd-3.0.0.dist-info → openepd-3.1.0.dist-info}/METADATA +1 -1
- openepd-3.1.0.dist-info/RECORD +95 -0
- openepd-3.0.0.dist-info/RECORD +0 -59
- {openepd-3.0.0.dist-info → openepd-3.1.0.dist-info}/LICENSE +0 -0
- {openepd-3.0.0.dist-info → openepd-3.1.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,214 @@
|
|
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
|
+
# This software was developed with support from the Skanska USA,
|
17
|
+
# Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
|
18
|
+
# Find out more at www.BuildingTransparency.org
|
19
|
+
#
|
20
|
+
from openepd.compat.pydantic import pyd
|
21
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
22
|
+
from openepd.model.specs.generated.enums import CladdingFacingMaterial, CladdingInsulatingMaterial, SidingFormFactor
|
23
|
+
from openepd.model.validation.quantity import LengthMmStr, LengthMStr, validate_unit_factory
|
24
|
+
|
25
|
+
|
26
|
+
class AluminiumSidingV1(BaseOpenEpdHierarchicalSpec):
|
27
|
+
"""Aluminium siding performance specification."""
|
28
|
+
|
29
|
+
_EXT_VERSION = "1.0"
|
30
|
+
|
31
|
+
|
32
|
+
class SteelSidingV1(BaseOpenEpdHierarchicalSpec):
|
33
|
+
"""Steel siding performance specification."""
|
34
|
+
|
35
|
+
_EXT_VERSION = "1.0"
|
36
|
+
|
37
|
+
|
38
|
+
class ZincSidingV1(BaseOpenEpdHierarchicalSpec):
|
39
|
+
"""Zinc siding performance specification."""
|
40
|
+
|
41
|
+
_EXT_VERSION = "1.0"
|
42
|
+
|
43
|
+
|
44
|
+
class ShingleAndShakeSidingV1(BaseOpenEpdHierarchicalSpec):
|
45
|
+
"""Shingle and shake siding performance specification."""
|
46
|
+
|
47
|
+
_EXT_VERSION = "1.0"
|
48
|
+
|
49
|
+
|
50
|
+
class MetalSidingV1(BaseOpenEpdHierarchicalSpec):
|
51
|
+
"""Metal siding performance specification."""
|
52
|
+
|
53
|
+
_EXT_VERSION = "1.0"
|
54
|
+
|
55
|
+
# Nested specs:
|
56
|
+
AluminiumSiding: AluminiumSidingV1 | None = None
|
57
|
+
SteelSiding: SteelSidingV1 | None = None
|
58
|
+
ZincSiding: ZincSidingV1 | None = None
|
59
|
+
|
60
|
+
|
61
|
+
class CompositionSidingV1(BaseOpenEpdHierarchicalSpec):
|
62
|
+
"""Composition siding performance specification."""
|
63
|
+
|
64
|
+
_EXT_VERSION = "1.0"
|
65
|
+
|
66
|
+
|
67
|
+
class FiberCementSidingV1(BaseOpenEpdHierarchicalSpec):
|
68
|
+
"""Fiber cement siding performance specification."""
|
69
|
+
|
70
|
+
_EXT_VERSION = "1.0"
|
71
|
+
|
72
|
+
|
73
|
+
class InsulatedVinylSidingV1(BaseOpenEpdHierarchicalSpec):
|
74
|
+
"""Insulated vinyl siding performance specification."""
|
75
|
+
|
76
|
+
_EXT_VERSION = "1.0"
|
77
|
+
|
78
|
+
# Own fields:
|
79
|
+
thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="1 mm")
|
80
|
+
|
81
|
+
_vinyl_siding_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
82
|
+
validate_unit_factory("m")
|
83
|
+
)
|
84
|
+
|
85
|
+
|
86
|
+
class PlywoodSidingV1(BaseOpenEpdHierarchicalSpec):
|
87
|
+
"""Plywood siding performance specification."""
|
88
|
+
|
89
|
+
_EXT_VERSION = "1.0"
|
90
|
+
|
91
|
+
|
92
|
+
class PolypropyleneSidingV1(BaseOpenEpdHierarchicalSpec):
|
93
|
+
"""Polypropylene siding performance specification."""
|
94
|
+
|
95
|
+
_EXT_VERSION = "1.0"
|
96
|
+
|
97
|
+
|
98
|
+
class SolidWoodSidingV1(BaseOpenEpdHierarchicalSpec):
|
99
|
+
"""Solid wood siding performance specification."""
|
100
|
+
|
101
|
+
_EXT_VERSION = "1.0"
|
102
|
+
|
103
|
+
# Nested specs:
|
104
|
+
ShingleAndShakeSiding: ShingleAndShakeSidingV1 | None = None
|
105
|
+
|
106
|
+
|
107
|
+
class VinylSidingV1(BaseOpenEpdHierarchicalSpec):
|
108
|
+
"""Vinyl siding performance specification."""
|
109
|
+
|
110
|
+
_EXT_VERSION = "1.0"
|
111
|
+
|
112
|
+
# Own fields:
|
113
|
+
thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="5 mm")
|
114
|
+
|
115
|
+
_vinyl_siding_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
116
|
+
validate_unit_factory("m")
|
117
|
+
)
|
118
|
+
|
119
|
+
|
120
|
+
class SidingV1(BaseOpenEpdHierarchicalSpec):
|
121
|
+
"""Siding performance specification."""
|
122
|
+
|
123
|
+
_EXT_VERSION = "1.0"
|
124
|
+
|
125
|
+
# Own fields:
|
126
|
+
insulated: bool | None = pyd.Field(default=None, description="", example=True)
|
127
|
+
ventilated: bool | None = pyd.Field(default=None, description="", example=True)
|
128
|
+
paint_or_stain_required: bool | None = pyd.Field(default=None, description="", example=True)
|
129
|
+
r_value: str | None = pyd.Field(default=None, description="", example="1 K * m2 / W")
|
130
|
+
form_factor: SidingFormFactor | None = pyd.Field(default=None, description="", example="Lap")
|
131
|
+
|
132
|
+
_siding_r_value_is_quantity_validator = pyd.validator("r_value", allow_reuse=True)(
|
133
|
+
validate_unit_factory("K * m2 / W")
|
134
|
+
)
|
135
|
+
|
136
|
+
# Nested specs:
|
137
|
+
MetalSiding: MetalSidingV1 | None = None
|
138
|
+
CompositionSiding: CompositionSidingV1 | None = None
|
139
|
+
FiberCementSiding: FiberCementSidingV1 | None = None
|
140
|
+
InsulatedVinylSiding: InsulatedVinylSidingV1 | None = None
|
141
|
+
PlywoodSiding: PlywoodSidingV1 | None = None
|
142
|
+
PolypropyleneSiding: PolypropyleneSidingV1 | None = None
|
143
|
+
SolidWoodSiding: SolidWoodSidingV1 | None = None
|
144
|
+
VinylSiding: VinylSidingV1 | None = None
|
145
|
+
|
146
|
+
|
147
|
+
class InsulatedRoofPanelsV1(BaseOpenEpdHierarchicalSpec):
|
148
|
+
"""Insulated roof panels performance specification."""
|
149
|
+
|
150
|
+
_EXT_VERSION = "1.0"
|
151
|
+
|
152
|
+
# Own fields:
|
153
|
+
r_value: str | None = pyd.Field(default=None, description="", example="1 K * m2 / W")
|
154
|
+
insulating_material: CladdingInsulatingMaterial | None = pyd.Field(
|
155
|
+
default=None, description="", example="No Insulation"
|
156
|
+
)
|
157
|
+
|
158
|
+
_cladding_r_value_is_quantity_validator = pyd.validator("r_value", allow_reuse=True)(
|
159
|
+
validate_unit_factory("K * m2 / W")
|
160
|
+
)
|
161
|
+
|
162
|
+
|
163
|
+
class InsulatedWallPanelsV1(BaseOpenEpdHierarchicalSpec):
|
164
|
+
"""Insulated wall panels performance specification."""
|
165
|
+
|
166
|
+
_EXT_VERSION = "1.0"
|
167
|
+
|
168
|
+
# Own fields:
|
169
|
+
r_value: str | None = pyd.Field(default=None, description="", example="1 K * m2 / W")
|
170
|
+
insulating_material: CladdingInsulatingMaterial | None = pyd.Field(
|
171
|
+
default=None, description="", example="No Insulation"
|
172
|
+
)
|
173
|
+
|
174
|
+
_cladding_r_value_is_quantity_validator = pyd.validator("r_value", allow_reuse=True)(
|
175
|
+
validate_unit_factory("K * m2 / W")
|
176
|
+
)
|
177
|
+
|
178
|
+
|
179
|
+
class RoofPanelsV1(BaseOpenEpdHierarchicalSpec):
|
180
|
+
"""Roof panels performance specification."""
|
181
|
+
|
182
|
+
_EXT_VERSION = "1.0"
|
183
|
+
|
184
|
+
|
185
|
+
class StoneCladdingV1(BaseOpenEpdHierarchicalSpec):
|
186
|
+
"""Stone cladding performance specification."""
|
187
|
+
|
188
|
+
_EXT_VERSION = "1.0"
|
189
|
+
|
190
|
+
|
191
|
+
class WallPanelsV1(BaseOpenEpdHierarchicalSpec):
|
192
|
+
"""Wall panels performance specification."""
|
193
|
+
|
194
|
+
_EXT_VERSION = "1.0"
|
195
|
+
|
196
|
+
|
197
|
+
class CladdingV1(BaseOpenEpdHierarchicalSpec):
|
198
|
+
"""Cladding performance specification."""
|
199
|
+
|
200
|
+
_EXT_VERSION = "1.0"
|
201
|
+
|
202
|
+
# Own fields:
|
203
|
+
thickness: LengthMStr | None = pyd.Field(default=None, description="", example="10 mm")
|
204
|
+
facing_material: CladdingFacingMaterial | None = pyd.Field(default=None, description="", example="Steel")
|
205
|
+
|
206
|
+
_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
|
207
|
+
|
208
|
+
# Nested specs:
|
209
|
+
Siding: SidingV1 | None = None
|
210
|
+
InsulatedRoofPanels: InsulatedRoofPanelsV1 | None = None
|
211
|
+
InsulatedWallPanels: InsulatedWallPanelsV1 | None = None
|
212
|
+
RoofPanels: RoofPanelsV1 | None = None
|
213
|
+
StoneCladding: StoneCladdingV1 | None = None
|
214
|
+
WallPanels: WallPanelsV1 | None = None
|
@@ -0,0 +1,46 @@
|
|
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
|
+
# This software was developed with support from the Skanska USA,
|
17
|
+
# Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
|
18
|
+
# Find out more at www.BuildingTransparency.org
|
19
|
+
#
|
20
|
+
from openepd.compat.pydantic import pyd
|
21
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
22
|
+
from openepd.model.specs.generated.enums import CmuBlockType, CmuWeightClassification
|
23
|
+
from openepd.model.validation.quantity import GwpKgCo2eStr, PressureMPaStr, validate_unit_factory
|
24
|
+
|
25
|
+
|
26
|
+
class CMUV1(BaseOpenEpdHierarchicalSpec):
|
27
|
+
"""CMU performance specification."""
|
28
|
+
|
29
|
+
_EXT_VERSION = "1.0"
|
30
|
+
|
31
|
+
# Own fields:
|
32
|
+
white_cement: bool | None = pyd.Field(default=None, description="", example=True)
|
33
|
+
strength_28d: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
|
34
|
+
weight_classification: CmuWeightClassification | None = pyd.Field(default=None, description="", example="Normal")
|
35
|
+
block_type: CmuBlockType | None = pyd.Field(default=None, description="", example="Gray")
|
36
|
+
insulated: bool | None = pyd.Field(default=None, description="", example=True)
|
37
|
+
sound_performance: bool | None = pyd.Field(default=None, description="", example=True)
|
38
|
+
b1_recarbonation: GwpKgCo2eStr | None = pyd.Field(default=None, description="", example="1 kgCO2e")
|
39
|
+
b1_recarbonation_z: float | None = pyd.Field(default=None, description="", example=2.3)
|
40
|
+
|
41
|
+
_concrete_compressive_strength_28d_is_quantity_validator = pyd.validator("strength_28d", allow_reuse=True)(
|
42
|
+
validate_unit_factory("MPa")
|
43
|
+
)
|
44
|
+
_b1_recarbonation_is_quantity_validator = pyd.validator("b1_recarbonation", allow_reuse=True)(
|
45
|
+
validate_unit_factory("kgCO2e")
|
46
|
+
)
|
@@ -0,0 +1,27 @@
|
|
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
|
+
# This software was developed with support from the Skanska USA,
|
17
|
+
# Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
|
18
|
+
# Find out more at www.BuildingTransparency.org
|
19
|
+
#
|
20
|
+
from openepd.model.base import BaseOpenEpdSchema
|
21
|
+
from openepd.model.org import OrgRef
|
22
|
+
|
23
|
+
|
24
|
+
class HasForestPracticesCertifiers(BaseOpenEpdSchema):
|
25
|
+
"""An interface for models which are linked to forest practices certifiers."""
|
26
|
+
|
27
|
+
forest_practices_certifiers: list[OrgRef] | None
|
@@ -0,0 +1,151 @@
|
|
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
|
+
# This software was developed with support from the Skanska USA,
|
17
|
+
# Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
|
18
|
+
# Find out more at www.BuildingTransparency.org
|
19
|
+
#
|
20
|
+
from typing import Literal
|
21
|
+
|
22
|
+
from openepd.compat.pydantic import pyd
|
23
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
|
+
from openepd.model.specs.concrete import Cementitious, ConcreteTypicalApplication
|
25
|
+
from openepd.model.specs.generated.enums import AciExposureClass, CsaExposureClass, EnExposureClass
|
26
|
+
from openepd.model.validation.numbers import RatioFloat
|
27
|
+
from openepd.model.validation.quantity import (
|
28
|
+
LengthInchStr,
|
29
|
+
LengthMmStr,
|
30
|
+
MassKgStr,
|
31
|
+
PressureMPaStr,
|
32
|
+
validate_unit_factory,
|
33
|
+
)
|
34
|
+
|
35
|
+
|
36
|
+
class CementGroutV1(BaseOpenEpdHierarchicalSpec):
|
37
|
+
"""Cement grout performance specification."""
|
38
|
+
|
39
|
+
_EXT_VERSION = "1.0"
|
40
|
+
|
41
|
+
|
42
|
+
class ConcretePavingV1(BaseOpenEpdHierarchicalSpec):
|
43
|
+
"""Concrete paving performance specification."""
|
44
|
+
|
45
|
+
_EXT_VERSION = "1.0"
|
46
|
+
|
47
|
+
# Own fields:
|
48
|
+
flexion_strength: PressureMPaStr | None = pyd.Field(
|
49
|
+
default=None, description="Paving flexion strength", example="30 MPa"
|
50
|
+
)
|
51
|
+
|
52
|
+
_concrete_flexion_strength_is_quantity_validator = pyd.validator("flexion_strength", allow_reuse=True)(
|
53
|
+
validate_unit_factory("MPa")
|
54
|
+
)
|
55
|
+
|
56
|
+
|
57
|
+
class FlowableFillV1(BaseOpenEpdHierarchicalSpec):
|
58
|
+
"""Flowable fill performance specification."""
|
59
|
+
|
60
|
+
_EXT_VERSION = "1.0"
|
61
|
+
|
62
|
+
|
63
|
+
class OilPatchV1(BaseOpenEpdHierarchicalSpec):
|
64
|
+
"""Oil patch performance specification."""
|
65
|
+
|
66
|
+
_EXT_VERSION = "1.0"
|
67
|
+
|
68
|
+
|
69
|
+
class ReadyMixV1(BaseOpenEpdHierarchicalSpec):
|
70
|
+
"""Concretes that are mixed just before use, and then poured on-site into forms."""
|
71
|
+
|
72
|
+
_EXT_VERSION = "1.0"
|
73
|
+
|
74
|
+
|
75
|
+
class ShotcreteV1(BaseOpenEpdHierarchicalSpec):
|
76
|
+
"""Shotcrete performance specification."""
|
77
|
+
|
78
|
+
_EXT_VERSION = "1.0"
|
79
|
+
|
80
|
+
|
81
|
+
class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
82
|
+
"""Concrete performance specification."""
|
83
|
+
|
84
|
+
_EXT_VERSION = "1.0"
|
85
|
+
|
86
|
+
# Own fields:
|
87
|
+
lightweight: bool | None = pyd.Field(default=None, description="Lightweight", example=True)
|
88
|
+
|
89
|
+
strength_28d: PressureMPaStr | None = pyd.Field(
|
90
|
+
default=None, description="Concrete strength after 28 days", example="1 MPa"
|
91
|
+
)
|
92
|
+
strength_other: PressureMPaStr | None = pyd.Field(
|
93
|
+
default=None,
|
94
|
+
description="A strength spec which is to be reached later other 28 days (e.g. 42d)",
|
95
|
+
example="30 MPa",
|
96
|
+
)
|
97
|
+
strength_other_d: Literal[3, 7, 14, 42, 56, 72, 96, 120] | None = pyd.Field(
|
98
|
+
default=None, description="Test Day for the Late Strength", example=42
|
99
|
+
)
|
100
|
+
|
101
|
+
slump: LengthInchStr | None = pyd.Field(default=None, description="", example="2 in")
|
102
|
+
min_slump: LengthInchStr | None = pyd.Field(default=None, description="Minimum test slump", example="2 in")
|
103
|
+
max_slump: LengthInchStr | None = pyd.Field(default=None, description="", example="2 in")
|
104
|
+
|
105
|
+
min_pipeline_size: LengthMmStr | None = pyd.Field(default=None, description="", example="200 mm")
|
106
|
+
w_c_ratio: RatioFloat | None = pyd.Field(
|
107
|
+
default=None, description="Ratio of water to cement", example=0.5, ge=0, le=1
|
108
|
+
)
|
109
|
+
air_entrain: bool | None = pyd.Field(default=None, description="Air Entrainment", example=True)
|
110
|
+
co2_entrain: bool | None = pyd.Field(default=None, description="CO2 Curing", example=True)
|
111
|
+
self_consolidating: bool | None = pyd.Field(default=None, description="Self Compacting", example=True)
|
112
|
+
white_cement: bool | None = pyd.Field(default=None, description="White Cement", example=True)
|
113
|
+
plc: bool | None = pyd.Field(default=None, description="Portland Limestone Cement", example=True)
|
114
|
+
finishable: bool | None = pyd.Field(default=None, description="Finishable", example=True)
|
115
|
+
fiber_reinforced: bool | None = pyd.Field(default=None, description="fiber_reinforced", example=True)
|
116
|
+
|
117
|
+
cementitious: Cementitious | None = pyd.Field(default=None, description="")
|
118
|
+
|
119
|
+
aggregate_size_max: LengthMmStr | None = pyd.Field(default=None, description="", example="0.0254 m")
|
120
|
+
cement_content: MassKgStr | None = pyd.Field(default=None, description="", example="1 kg")
|
121
|
+
aci_exposure_classes: list[AciExposureClass] | None = pyd.Field(default=None, description="", example=["aci.F0"])
|
122
|
+
csa_exposure_classes: list[CsaExposureClass] | None = pyd.Field(default=None, description="", example=["csa.C-2"])
|
123
|
+
en_exposure_classes: list[EnExposureClass] | None = pyd.Field(default=None, description="", example=["en206.X0"])
|
124
|
+
typical_application: ConcreteTypicalApplication | None = pyd.Field(default=None, description="Typical Application")
|
125
|
+
|
126
|
+
_concrete_compressive_strength_28d_is_quantity_validator = pyd.validator("strength_28d", allow_reuse=True)(
|
127
|
+
validate_unit_factory("MPa")
|
128
|
+
)
|
129
|
+
_concrete_compressive_strength_other_is_quantity_validator = pyd.validator("strength_other", allow_reuse=True)(
|
130
|
+
validate_unit_factory("MPa")
|
131
|
+
)
|
132
|
+
_concrete_slump_is_quantity_validator = pyd.validator("slump", allow_reuse=True)(validate_unit_factory("m"))
|
133
|
+
_concrete_min_slump_is_quantity_validator = pyd.validator("min_slump", allow_reuse=True)(validate_unit_factory("m"))
|
134
|
+
_concrete_max_slump_is_quantity_validator = pyd.validator("max_slump", allow_reuse=True)(validate_unit_factory("m"))
|
135
|
+
_concrete_min_pipeline_size_is_quantity_validator = pyd.validator("min_pipeline_size", allow_reuse=True)(
|
136
|
+
validate_unit_factory("m")
|
137
|
+
)
|
138
|
+
_concrete_aggregate_size_max_is_quantity_validator = pyd.validator("aggregate_size_max", allow_reuse=True)(
|
139
|
+
validate_unit_factory("m")
|
140
|
+
)
|
141
|
+
_concrete_cement_content_is_quantity_validator = pyd.validator("cement_content", allow_reuse=True)(
|
142
|
+
validate_unit_factory("kg")
|
143
|
+
)
|
144
|
+
|
145
|
+
# Nested specs:
|
146
|
+
CementGrout: CementGroutV1 | None = None
|
147
|
+
ConcretePaving: ConcretePavingV1 | None = None
|
148
|
+
FlowableFill: FlowableFillV1 | None = None
|
149
|
+
OilPatch: OilPatchV1 | None = None
|
150
|
+
ReadyMix: ReadyMixV1 | None = None
|
151
|
+
Shotcrete: ShotcreteV1 | None = None
|
@@ -0,0 +1,57 @@
|
|
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
|
+
# This software was developed with support from the Skanska USA,
|
17
|
+
# Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
|
18
|
+
# Find out more at www.BuildingTransparency.org
|
19
|
+
#
|
20
|
+
from openepd.compat.pydantic import pyd
|
21
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
22
|
+
from openepd.model.specs.generated.enums import ElevatorsBuildingRise, ElevatorsUsageIntensity
|
23
|
+
from openepd.model.validation.quantity import LengthMStr, MassKgStr, validate_unit_factory
|
24
|
+
|
25
|
+
|
26
|
+
class ElevatorsV1(BaseOpenEpdHierarchicalSpec):
|
27
|
+
"""Elevators performance specification."""
|
28
|
+
|
29
|
+
_EXT_VERSION = "1.0"
|
30
|
+
|
31
|
+
# Own fields:
|
32
|
+
usage_intensity: list[ElevatorsUsageIntensity] | None = pyd.Field(
|
33
|
+
default=None, description="", example=["Very low"]
|
34
|
+
)
|
35
|
+
travel_length: LengthMStr | None = pyd.Field(default=None, description="", example="1 m")
|
36
|
+
rated_load: MassKgStr | None = pyd.Field(default=None, description="", example="1 kg")
|
37
|
+
rated_speed: str | None = pyd.Field(default=None, description="", example="1 m / s")
|
38
|
+
building_rise: ElevatorsBuildingRise | None = pyd.Field(default=None, description="", example="Low-rise")
|
39
|
+
|
40
|
+
_elevators_travel_length_is_quantity_validator = pyd.validator("travel_length", allow_reuse=True)(
|
41
|
+
validate_unit_factory("m")
|
42
|
+
)
|
43
|
+
_elevators_rated_load_is_quantity_validator = pyd.validator("rated_load", allow_reuse=True)(
|
44
|
+
validate_unit_factory("kg")
|
45
|
+
)
|
46
|
+
_elevators_rated_speed_is_quantity_validator = pyd.validator("rated_speed", allow_reuse=True)(
|
47
|
+
validate_unit_factory("m / s")
|
48
|
+
)
|
49
|
+
|
50
|
+
|
51
|
+
class ConveyingEquipmentV1(BaseOpenEpdHierarchicalSpec):
|
52
|
+
"""Conveying equipment performance specification."""
|
53
|
+
|
54
|
+
_EXT_VERSION = "1.0"
|
55
|
+
|
56
|
+
# Nested specs:
|
57
|
+
Elevators: ElevatorsV1 | None = None
|