openepd 4.13.1__py3-none-any.whl → 5.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/common.py +40 -1
- openepd/model/declaration.py +7 -2
- openepd/model/geography.py +1 -1
- openepd/model/lcia.py +191 -19
- openepd/model/pcr.py +2 -2
- openepd/model/specs/README.md +34 -8
- openepd/model/specs/asphalt.py +2 -2
- openepd/model/specs/base.py +15 -5
- openepd/model/specs/generated/__init__.py +80 -0
- openepd/model/specs/generated/cladding.py +4 -4
- openepd/model/specs/generated/concrete.py +8 -7
- openepd/model/specs/generated/electrical.py +2 -2
- openepd/model/specs/generated/finishes.py +10 -6
- openepd/model/specs/generated/masonry.py +6 -2
- openepd/model/specs/generated/network_infrastructure.py +7 -2
- openepd/model/specs/generated/openings.py +10 -6
- openepd/model/specs/generated/sheathing.py +8 -4
- openepd/model/specs/generated/steel.py +10 -5
- openepd/model/specs/range/__init__.py +101 -0
- openepd/model/specs/range/accessories.py +97 -0
- openepd/model/specs/range/aggregates.py +57 -0
- openepd/model/specs/range/aluminium.py +92 -0
- openepd/model/specs/range/asphalt.py +61 -0
- openepd/model/specs/range/bulk_materials.py +31 -0
- openepd/model/specs/range/cast_decks_and_underlayment.py +34 -0
- openepd/model/specs/range/cladding.py +275 -0
- openepd/model/specs/range/cmu.py +44 -0
- openepd/model/specs/range/concrete.py +179 -0
- openepd/model/specs/range/conveying_equipment.py +86 -0
- openepd/model/specs/range/electrical.py +422 -0
- openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +96 -0
- openepd/model/specs/range/electricity.py +31 -0
- openepd/model/specs/range/finishes.py +585 -0
- openepd/model/specs/range/fire_and_smoke_protection.py +108 -0
- openepd/model/specs/range/furnishings.py +137 -0
- openepd/model/specs/range/grouting.py +34 -0
- openepd/model/specs/range/manufacturing_inputs.py +190 -0
- openepd/model/specs/range/masonry.py +87 -0
- openepd/model/specs/range/material_handling.py +50 -0
- openepd/model/specs/range/mechanical.py +307 -0
- openepd/model/specs/range/mechanical_insulation.py +42 -0
- openepd/model/specs/range/network_infrastructure.py +208 -0
- openepd/model/specs/range/openings.py +512 -0
- openepd/model/specs/range/other_electrical_equipment.py +31 -0
- openepd/model/specs/range/other_materials.py +194 -0
- openepd/model/specs/range/plumbing.py +200 -0
- openepd/model/specs/range/precast_concrete.py +115 -0
- openepd/model/specs/range/sheathing.py +86 -0
- openepd/model/specs/range/steel.py +332 -0
- openepd/model/specs/range/thermal_moisture_protection.py +336 -0
- openepd/model/specs/range/utility_piping.py +75 -0
- openepd/model/specs/range/wood.py +228 -0
- openepd/model/specs/range/wood_joists.py +44 -0
- openepd/model/validation/numbers.py +11 -5
- openepd/model/validation/quantity.py +469 -58
- {openepd-4.13.1.dist-info → openepd-5.1.0.dist-info}/METADATA +6 -1
- {openepd-4.13.1.dist-info → openepd-5.1.0.dist-info}/RECORD +60 -25
- {openepd-4.13.1.dist-info → openepd-5.1.0.dist-info}/LICENSE +0 -0
- {openepd-4.13.1.dist-info → openepd-5.1.0.dist-info}/WHEEL +0 -0
@@ -13,10 +13,10 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
-
from typing import Literal
|
16
|
+
from typing import Annotated, Literal
|
17
17
|
|
18
18
|
from openepd.compat.pydantic import pyd
|
19
|
-
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
19
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, CodegenSpec
|
20
20
|
from openepd.model.specs.concrete import Cementitious, ConcreteTypicalApplication
|
21
21
|
from openepd.model.specs.generated.enums import AciExposureClass, CsaExposureClass, EnExposureClass
|
22
22
|
from openepd.model.validation.numbers import RatioFloat
|
@@ -25,7 +25,7 @@ from openepd.model.validation.quantity import (
|
|
25
25
|
LengthMmStr,
|
26
26
|
MassKgStr,
|
27
27
|
PressureMPaStr,
|
28
|
-
|
28
|
+
validate_quantity_unit_factory,
|
29
29
|
)
|
30
30
|
|
31
31
|
|
@@ -53,7 +53,7 @@ class ConcretePavingV1(BaseOpenEpdHierarchicalSpec):
|
|
53
53
|
)
|
54
54
|
|
55
55
|
_concrete_flexion_strength_is_quantity_validator = pyd.validator("flexion_strength", allow_reuse=True)(
|
56
|
-
|
56
|
+
validate_quantity_unit_factory("MPa")
|
57
57
|
)
|
58
58
|
|
59
59
|
|
@@ -119,9 +119,10 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
|
119
119
|
description="A strength spec which is to be reached later other 28 days (e.g. 42d)",
|
120
120
|
example="30 MPa",
|
121
121
|
)
|
122
|
-
strength_other_d:
|
123
|
-
|
124
|
-
|
122
|
+
strength_other_d: Annotated[
|
123
|
+
Literal[3, 7, 14, 42, 56, 72, 96, 120] | None,
|
124
|
+
CodegenSpec(override_type=Literal[3, 7, 14, 42, 56, 72, 96, 120]),
|
125
|
+
] = pyd.Field(default=None, description="Test Day for strength_other", example=42)
|
125
126
|
|
126
127
|
slump: LengthInchStr | None = pyd.Field(default=None, description="", example="2 in")
|
127
128
|
min_slump: LengthInchStr | None = pyd.Field(default=None, description="Minimum test slump", example="2 in")
|
@@ -26,7 +26,7 @@ from openepd.model.validation.quantity import (
|
|
26
26
|
PowerStr,
|
27
27
|
validate_quantity_ge_factory,
|
28
28
|
validate_quantity_le_factory,
|
29
|
-
|
29
|
+
validate_quantity_unit_factory,
|
30
30
|
)
|
31
31
|
|
32
32
|
|
@@ -268,7 +268,7 @@ class LightingV1(BaseOpenEpdHierarchicalSpec):
|
|
268
268
|
validate_quantity_le_factory("1E+04 K")
|
269
269
|
)
|
270
270
|
_typical_utilization_unit_validator = pyd.validator("typical_utilization", allow_reuse=True)(
|
271
|
-
|
271
|
+
validate_quantity_unit_factory("h / yr")
|
272
272
|
)
|
273
273
|
_typical_utilization_quantity_ge_validator = pyd.validator("typical_utilization", allow_reuse=True)(
|
274
274
|
validate_quantity_ge_factory("25 h / yr")
|
@@ -52,7 +52,7 @@ from openepd.model.validation.quantity import (
|
|
52
52
|
PressureMPaStr,
|
53
53
|
validate_quantity_ge_factory,
|
54
54
|
validate_quantity_le_factory,
|
55
|
-
|
55
|
+
validate_quantity_unit_factory,
|
56
56
|
)
|
57
57
|
|
58
58
|
|
@@ -85,10 +85,10 @@ class AccessFlooringV1(BaseOpenEpdHierarchicalSpec):
|
|
85
85
|
|
86
86
|
_access_flooring_rolling_load_10_pass_is_quantity_validator = pyd.validator(
|
87
87
|
"rolling_load_10_pass", allow_reuse=True
|
88
|
-
)(
|
88
|
+
)(validate_quantity_unit_factory("N"))
|
89
89
|
_access_flooring_rolling_load_10000_pass_is_quantity_validator = pyd.validator(
|
90
90
|
"rolling_load_10000_pass", allow_reuse=True
|
91
|
-
)(
|
91
|
+
)(validate_quantity_unit_factory("N"))
|
92
92
|
|
93
93
|
|
94
94
|
class CarpetV1(BaseOpenEpdHierarchicalSpec):
|
@@ -114,7 +114,9 @@ class CarpetV1(BaseOpenEpdHierarchicalSpec):
|
|
114
114
|
gwp_factor_base: GwpKgCo2eStr | None = pyd.Field(default=None, description="", example="1 kgCO2e")
|
115
115
|
gwp_factor_yarn: GwpKgCo2eStr | None = pyd.Field(default=None, description="", example="1 kgCO2e")
|
116
116
|
|
117
|
-
_yarn_weight_is_quantity_validator = pyd.validator("yarn_weight", allow_reuse=True)(
|
117
|
+
_yarn_weight_is_quantity_validator = pyd.validator("yarn_weight", allow_reuse=True)(
|
118
|
+
validate_quantity_unit_factory("g / m2")
|
119
|
+
)
|
118
120
|
_yarn_weight_ge_validator = pyd.validator("yarn_weight", allow_reuse=True)(validate_quantity_ge_factory("0 g / m2"))
|
119
121
|
|
120
122
|
|
@@ -348,7 +350,7 @@ class CementBoardV1(BaseOpenEpdHierarchicalSpec):
|
|
348
350
|
)
|
349
351
|
|
350
352
|
_cement_board_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
351
|
-
|
353
|
+
validate_quantity_unit_factory("m")
|
352
354
|
)
|
353
355
|
|
354
356
|
|
@@ -456,7 +458,9 @@ class GypsumV1(BaseOpenEpdHierarchicalSpec):
|
|
456
458
|
moisture_resistant: bool | None = pyd.Field(default=None, description="", example=True)
|
457
459
|
abuse_resistant: bool | None = pyd.Field(default=None, description="", example=True)
|
458
460
|
|
459
|
-
_gypsum_r_factor_is_quantity_validator = pyd.validator("r_factor", allow_reuse=True)(
|
461
|
+
_gypsum_r_factor_is_quantity_validator = pyd.validator("r_factor", allow_reuse=True)(
|
462
|
+
validate_quantity_unit_factory("RSI")
|
463
|
+
)
|
460
464
|
|
461
465
|
# Nested specs:
|
462
466
|
GypsumSupports: GypsumSupportsV1 | None = None
|
@@ -15,7 +15,11 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.validation.quantity import
|
18
|
+
from openepd.model.validation.quantity import (
|
19
|
+
PressureMPaStr,
|
20
|
+
validate_quantity_ge_factory,
|
21
|
+
validate_quantity_unit_factory,
|
22
|
+
)
|
19
23
|
|
20
24
|
|
21
25
|
class GMUV1(BaseOpenEpdHierarchicalSpec):
|
@@ -35,7 +39,7 @@ class AutoclavedAeratedConcreteV1(BaseOpenEpdHierarchicalSpec):
|
|
35
39
|
white: bool | None = pyd.Field(default=None, description="", example=True)
|
36
40
|
|
37
41
|
_aac_thermal_conductivity_is_quantity_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
|
38
|
-
|
42
|
+
validate_quantity_unit_factory("W / (m * K)")
|
39
43
|
)
|
40
44
|
|
41
45
|
_aac_thermal_conductivity_min_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
|
@@ -28,7 +28,12 @@ from openepd.model.specs.generated.enums import (
|
|
28
28
|
RackType,
|
29
29
|
)
|
30
30
|
from openepd.model.specs.generated.mixins.conduit_mixin import ConduitMixin
|
31
|
-
from openepd.model.validation.quantity import
|
31
|
+
from openepd.model.validation.quantity import (
|
32
|
+
ElectricalCurrentStr,
|
33
|
+
LengthMmStr,
|
34
|
+
MassKgStr,
|
35
|
+
validate_quantity_unit_factory,
|
36
|
+
)
|
32
37
|
|
33
38
|
|
34
39
|
class PDUV1(BaseOpenEpdHierarchicalSpec):
|
@@ -43,7 +48,7 @@ class PDUV1(BaseOpenEpdHierarchicalSpec):
|
|
43
48
|
pdu_technology: PduTechnology | None = pyd.Field(default=None, description="", example="Basic")
|
44
49
|
pdu_outlets: int | None = pyd.Field(default=None, description="", example=3, le=200)
|
45
50
|
|
46
|
-
_amperage_is_quantity_validator = pyd.validator("amperage", allow_reuse=True)(
|
51
|
+
_amperage_is_quantity_validator = pyd.validator("amperage", allow_reuse=True)(validate_quantity_unit_factory("A"))
|
47
52
|
|
48
53
|
|
49
54
|
class CabinetsRacksAndEnclosuresV1(BaseOpenEpdHierarchicalSpec):
|
@@ -26,7 +26,7 @@ from openepd.model.specs.generated.enums import (
|
|
26
26
|
ThermalSeparation,
|
27
27
|
)
|
28
28
|
from openepd.model.validation.numbers import RatioFloat
|
29
|
-
from openepd.model.validation.quantity import LengthMmStr, PressureMPaStr, SpeedStr,
|
29
|
+
from openepd.model.validation.quantity import LengthMmStr, PressureMPaStr, SpeedStr, validate_quantity_unit_factory
|
30
30
|
|
31
31
|
|
32
32
|
class GlazingIntendedApplication(BaseOpenEpdSchema):
|
@@ -197,7 +197,7 @@ class FlatGlassPanesV1(BaseOpenEpdHierarchicalSpec):
|
|
197
197
|
thickness: FlatGlassPanesThickness | None = pyd.Field(default=None, example="12 mm")
|
198
198
|
|
199
199
|
_flat_glass_panes_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
200
|
-
|
200
|
+
validate_quantity_unit_factory("m")
|
201
201
|
)
|
202
202
|
|
203
203
|
|
@@ -380,10 +380,10 @@ class NAFSFenestrationV1(BaseOpenEpdHierarchicalSpec, GlazingOptionsMixin):
|
|
380
380
|
)
|
381
381
|
|
382
382
|
_assembly_u_factor_is_quantity_validator = pyd.validator("assembly_u_factor", allow_reuse=True)(
|
383
|
-
|
383
|
+
validate_quantity_unit_factory("USI")
|
384
384
|
)
|
385
385
|
_nafs_performance_grade_is_quantity_validator = pyd.validator("performance_grade", allow_reuse=True)(
|
386
|
-
|
386
|
+
validate_quantity_unit_factory("psf")
|
387
387
|
)
|
388
388
|
|
389
389
|
# Nested specs:
|
@@ -424,8 +424,12 @@ class InsulatingGlazingUnitsV1(BaseOpenEpdHierarchicalSpec, GlazingOptionsMixin)
|
|
424
424
|
default=None, description="Spacer material for Integrated Glass Unit.", example="Aluminium"
|
425
425
|
)
|
426
426
|
|
427
|
-
_dp_rating_is_quantity_validator = pyd.validator("dp_rating", allow_reuse=True)(
|
428
|
-
|
427
|
+
_dp_rating_is_quantity_validator = pyd.validator("dp_rating", allow_reuse=True)(
|
428
|
+
validate_quantity_unit_factory("MPa")
|
429
|
+
)
|
430
|
+
_cog_u_factor_is_quantity_validator = pyd.validator("cog_u_factor", allow_reuse=True)(
|
431
|
+
validate_quantity_unit_factory("USI")
|
432
|
+
)
|
429
433
|
|
430
434
|
|
431
435
|
class CurtainWallsV1(BaseOpenEpdHierarchicalSpec):
|
@@ -16,7 +16,7 @@
|
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
18
|
from openepd.model.specs.generated.enums import GypsumFacing, GypsumFireRating, GypsumThickness
|
19
|
-
from openepd.model.validation.quantity import LengthMmStr,
|
19
|
+
from openepd.model.validation.quantity import LengthMmStr, validate_quantity_unit_factory
|
20
20
|
|
21
21
|
|
22
22
|
class CementitiousSheathingBoardV1(BaseOpenEpdHierarchicalSpec):
|
@@ -33,7 +33,7 @@ class CementitiousSheathingBoardV1(BaseOpenEpdHierarchicalSpec):
|
|
33
33
|
cement_board_thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="10 mm")
|
34
34
|
|
35
35
|
_cement_board_thickness_is_quantity_validator = pyd.validator("cement_board_thickness", allow_reuse=True)(
|
36
|
-
|
36
|
+
validate_quantity_unit_factory("m")
|
37
37
|
)
|
38
38
|
|
39
39
|
|
@@ -65,8 +65,12 @@ class GypsumSheathingBoardV1(BaseOpenEpdHierarchicalSpec):
|
|
65
65
|
moisture_resistant: bool | None = pyd.Field(default=None, description="", example=True)
|
66
66
|
abuse_resistant: bool | None = pyd.Field(default=None, description="", example=True)
|
67
67
|
|
68
|
-
_gypsum_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
69
|
-
|
68
|
+
_gypsum_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
69
|
+
validate_quantity_unit_factory("m")
|
70
|
+
)
|
71
|
+
_gypsum_r_factor_is_quantity_validator = pyd.validator("r_factor", allow_reuse=True)(
|
72
|
+
validate_quantity_unit_factory("RSI")
|
73
|
+
)
|
70
74
|
|
71
75
|
|
72
76
|
class SheathingV1(BaseOpenEpdHierarchicalSpec):
|
@@ -13,13 +13,15 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
+
from typing import Annotated
|
17
|
+
|
16
18
|
from openepd.compat.pydantic import pyd
|
17
19
|
from openepd.model.base import BaseOpenEpdSchema
|
18
|
-
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, BaseOpenEpdSpec
|
20
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, BaseOpenEpdSpec, CodegenSpec
|
19
21
|
from openepd.model.specs.generated.enums import SteelComposition, SteelRebarGrade
|
20
22
|
from openepd.model.standard import Standard
|
21
23
|
from openepd.model.validation.numbers import RatioFloat
|
22
|
-
from openepd.model.validation.quantity import LengthMmStr, PressureMPaStr,
|
24
|
+
from openepd.model.validation.quantity import LengthMmStr, PressureMPaStr, validate_quantity_unit_factory
|
23
25
|
|
24
26
|
|
25
27
|
class SteelMakingRoute(BaseOpenEpdSchema):
|
@@ -185,10 +187,10 @@ class StructuralSteelV1(BaseOpenEpdHierarchicalSpec):
|
|
185
187
|
)
|
186
188
|
|
187
189
|
_steel_thermal_expansion_is_quantity_validator = pyd.validator("thermal_expansion", allow_reuse=True)(
|
188
|
-
|
190
|
+
validate_quantity_unit_factory("1 / K")
|
189
191
|
)
|
190
192
|
_steel_thermal_conductivity_is_quantity_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
|
191
|
-
|
193
|
+
validate_quantity_unit_factory("W / (m * K)")
|
192
194
|
)
|
193
195
|
|
194
196
|
# Nested specs:
|
@@ -252,6 +254,7 @@ class SteelV1(BaseOpenEpdHierarchicalSpec):
|
|
252
254
|
default=None, description="Increase in length at break, in percent. Typically 10%-20%", example=0.2
|
253
255
|
)
|
254
256
|
recycled_content: RatioFloat | None = pyd.Field(default=None, description="", example=0.5, ge=0, le=1)
|
257
|
+
# todo look how to pass validation down to range fields
|
255
258
|
post_consumer_recycled_content: RatioFloat | None = pyd.Field(
|
256
259
|
default=None,
|
257
260
|
description="Should be a number between zero and the Recycled Content (steel_recycled_content)",
|
@@ -271,7 +274,9 @@ class SteelV1(BaseOpenEpdHierarchicalSpec):
|
|
271
274
|
cold_finished: bool | None = pyd.Field(default=None, example=True)
|
272
275
|
galvanized: bool | None = pyd.Field(default=None, example=True)
|
273
276
|
stainless: bool | None = pyd.Field(default=None, example=True)
|
274
|
-
making_route: SteelMakingRoute | None = pyd.Field(
|
277
|
+
making_route: Annotated[SteelMakingRoute | None, CodegenSpec(override_type=SteelMakingRoute)] = pyd.Field(
|
278
|
+
default=None
|
279
|
+
)
|
275
280
|
astm_standards: list[Standard] | None = pyd.Field(default=None, description="List of ASTM standards")
|
276
281
|
sae_standards: list[Standard] | None = pyd.Field(default=None, description="List of SAE standards")
|
277
282
|
en_standards: list[Standard] | None = pyd.Field(default=None, description="List of EN standards")
|
@@ -0,0 +1,101 @@
|
|
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__ = ("SpecsRange",)
|
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.model.specs.base import BaseOpenEpdHierarchicalSpec
|
22
|
+
|
23
|
+
from .accessories import AccessoriesRangeV1
|
24
|
+
from .aggregates import AggregatesRangeV1
|
25
|
+
from .aluminium import AluminiumRangeV1
|
26
|
+
from .asphalt import AsphaltRangeV1
|
27
|
+
from .bulk_materials import BulkMaterialsRangeV1
|
28
|
+
from .cast_decks_and_underlayment import CastDecksAndUnderlaymentRangeV1
|
29
|
+
from .cladding import CladdingRangeV1
|
30
|
+
from .cmu import CMURangeV1
|
31
|
+
from .concrete import ConcreteRangeV1
|
32
|
+
from .conveying_equipment import ConveyingEquipmentRangeV1
|
33
|
+
from .electrical import ElectricalRangeV1
|
34
|
+
from .electrical_transmission_and_distribution_equipment import ElectricalTransmissionAndDistributionEquipmentRangeV1
|
35
|
+
from .electricity import ElectricityRangeV1
|
36
|
+
from .finishes import FinishesRangeV1
|
37
|
+
from .fire_and_smoke_protection import FireAndSmokeProtectionRangeV1
|
38
|
+
from .furnishings import FurnishingsRangeV1
|
39
|
+
from .grouting import GroutingRangeV1
|
40
|
+
from .manufacturing_inputs import ManufacturingInputsRangeV1
|
41
|
+
from .masonry import MasonryRangeV1
|
42
|
+
from .material_handling import MaterialHandlingRangeV1
|
43
|
+
from .mechanical import MechanicalRangeV1
|
44
|
+
from .mechanical_insulation import MechanicalInsulationRangeV1
|
45
|
+
from .network_infrastructure import NetworkInfrastructureRangeV1
|
46
|
+
from .openings import OpeningsRangeV1
|
47
|
+
from .other_electrical_equipment import OtherElectricalEquipmentRangeV1
|
48
|
+
from .other_materials import OtherMaterialsRangeV1
|
49
|
+
from .plumbing import PlumbingRangeV1
|
50
|
+
from .precast_concrete import PrecastConcreteRangeV1
|
51
|
+
from .sheathing import SheathingRangeV1
|
52
|
+
from .steel import SteelRangeV1
|
53
|
+
from .thermal_moisture_protection import ThermalMoistureProtectionRangeV1
|
54
|
+
from .utility_piping import UtilityPipingRangeV1
|
55
|
+
from .wood import WoodRangeV1
|
56
|
+
from .wood_joists import WoodJoistsRangeV1
|
57
|
+
|
58
|
+
|
59
|
+
class SpecsRange(BaseOpenEpdHierarchicalSpec):
|
60
|
+
"""
|
61
|
+
Material specific specs.
|
62
|
+
|
63
|
+
Range version.
|
64
|
+
"""
|
65
|
+
|
66
|
+
_EXT_VERSION = "1.0"
|
67
|
+
|
68
|
+
CMU: CMURangeV1 | None = None
|
69
|
+
Masonry: MasonryRangeV1 | None = None
|
70
|
+
Steel: SteelRangeV1 | None = None
|
71
|
+
NetworkInfrastructure: NetworkInfrastructureRangeV1 | None = None
|
72
|
+
Finishes: FinishesRangeV1 | None = None
|
73
|
+
ManufacturingInputs: ManufacturingInputsRangeV1 | None = None
|
74
|
+
Accessories: AccessoriesRangeV1 | None = None
|
75
|
+
ElectricalTransmissionAndDistributionEquipment: ElectricalTransmissionAndDistributionEquipmentRangeV1 | None = None
|
76
|
+
Aggregates: AggregatesRangeV1 | None = None
|
77
|
+
ThermalMoistureProtection: ThermalMoistureProtectionRangeV1 | None = None
|
78
|
+
Mechanical: MechanicalRangeV1 | None = None
|
79
|
+
Aluminium: AluminiumRangeV1 | None = None
|
80
|
+
Cladding: CladdingRangeV1 | None = None
|
81
|
+
FireAndSmokeProtection: FireAndSmokeProtectionRangeV1 | None = None
|
82
|
+
PrecastConcrete: PrecastConcreteRangeV1 | None = None
|
83
|
+
Asphalt: AsphaltRangeV1 | None = None
|
84
|
+
OtherMaterials: OtherMaterialsRangeV1 | None = None
|
85
|
+
Plumbing: PlumbingRangeV1 | None = None
|
86
|
+
Electrical: ElectricalRangeV1 | None = None
|
87
|
+
UtilityPiping: UtilityPipingRangeV1 | None = None
|
88
|
+
BulkMaterials: BulkMaterialsRangeV1 | None = None
|
89
|
+
CastDecksAndUnderlayment: CastDecksAndUnderlaymentRangeV1 | None = None
|
90
|
+
Concrete: ConcreteRangeV1 | None = None
|
91
|
+
Sheathing: SheathingRangeV1 | None = None
|
92
|
+
Furnishings: FurnishingsRangeV1 | None = None
|
93
|
+
Wood: WoodRangeV1 | None = None
|
94
|
+
ConveyingEquipment: ConveyingEquipmentRangeV1 | None = None
|
95
|
+
MaterialHandling: MaterialHandlingRangeV1 | None = None
|
96
|
+
Openings: OpeningsRangeV1 | None = None
|
97
|
+
Electricity: ElectricityRangeV1 | None = None
|
98
|
+
Grouting: GroutingRangeV1 | None = None
|
99
|
+
MechanicalInsulation: MechanicalInsulationRangeV1 | None = None
|
100
|
+
OtherElectricalEquipment: OtherElectricalEquipmentRangeV1 | None = None
|
101
|
+
WoodJoists: WoodJoistsRangeV1 | None = None
|
@@ -0,0 +1,97 @@
|
|
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
|
+
"BlanketFacingRangeV1",
|
18
|
+
"DoorsHardwareRangeV1",
|
19
|
+
"FlooringAccessoriesRangeV1",
|
20
|
+
"MortarRangeV1",
|
21
|
+
"TileGroutRangeV1",
|
22
|
+
"AccessoriesRangeV1",
|
23
|
+
)
|
24
|
+
|
25
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
26
|
+
|
27
|
+
|
28
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
29
|
+
|
30
|
+
|
31
|
+
class BlanketFacingRangeV1(BaseOpenEpdHierarchicalSpec):
|
32
|
+
"""
|
33
|
+
Facing materials for insulation products.
|
34
|
+
|
35
|
+
Such as kraft, white vinyl sheeting, or aluminum foil, which can serve as air barrier, vapor barrier, radiant
|
36
|
+
barrier, or flame resistive layer.
|
37
|
+
|
38
|
+
Range version.
|
39
|
+
"""
|
40
|
+
|
41
|
+
_EXT_VERSION = "1.0"
|
42
|
+
|
43
|
+
|
44
|
+
class DoorsHardwareRangeV1(BaseOpenEpdHierarchicalSpec):
|
45
|
+
"""
|
46
|
+
Door hardware, including automatic and security door hardware.
|
47
|
+
|
48
|
+
Range version.
|
49
|
+
"""
|
50
|
+
|
51
|
+
_EXT_VERSION = "1.0"
|
52
|
+
|
53
|
+
|
54
|
+
class FlooringAccessoriesRangeV1(BaseOpenEpdHierarchicalSpec):
|
55
|
+
"""
|
56
|
+
Products used in flooring, other than the actual flooring product itself.
|
57
|
+
|
58
|
+
Range version.
|
59
|
+
"""
|
60
|
+
|
61
|
+
_EXT_VERSION = "1.0"
|
62
|
+
|
63
|
+
|
64
|
+
class MortarRangeV1(BaseOpenEpdHierarchicalSpec):
|
65
|
+
"""
|
66
|
+
Cementitious paste used to bind building blocks such as stones, bricks, and concrete masonry.
|
67
|
+
|
68
|
+
Range version.
|
69
|
+
"""
|
70
|
+
|
71
|
+
_EXT_VERSION = "1.0"
|
72
|
+
|
73
|
+
|
74
|
+
class TileGroutRangeV1(BaseOpenEpdHierarchicalSpec):
|
75
|
+
"""
|
76
|
+
Water-cement-sand mixture for laying ceramic tile.
|
77
|
+
|
78
|
+
Range version.
|
79
|
+
"""
|
80
|
+
|
81
|
+
_EXT_VERSION = "1.0"
|
82
|
+
|
83
|
+
|
84
|
+
class AccessoriesRangeV1(BaseOpenEpdHierarchicalSpec):
|
85
|
+
"""
|
86
|
+
Materials that are used alongside other materials.
|
87
|
+
|
88
|
+
Range version.
|
89
|
+
"""
|
90
|
+
|
91
|
+
_EXT_VERSION = "1.0"
|
92
|
+
|
93
|
+
BlanketFacing: BlanketFacingRangeV1 | None = None
|
94
|
+
DoorsHardware: DoorsHardwareRangeV1 | None = None
|
95
|
+
FlooringAccessories: FlooringAccessoriesRangeV1 | None = None
|
96
|
+
Mortar: MortarRangeV1 | None = None
|
97
|
+
TileGrout: TileGroutRangeV1 | 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
|
+
__all__ = ("AggregatesRangeV1",)
|
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 RangeRatioFloat
|
23
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
|
+
from openepd.model.specs.generated.aggregates import AggregateApplication
|
25
|
+
from openepd.model.specs.generated.enums import AggregateGradation, AggregateWeightClassification
|
26
|
+
from openepd.model.validation.quantity import AmountRangeLengthMm
|
27
|
+
|
28
|
+
|
29
|
+
class AggregatesRangeV1(BaseOpenEpdHierarchicalSpec):
|
30
|
+
"""
|
31
|
+
Construction Aggregates.
|
32
|
+
|
33
|
+
Includes sand, gravel, crushed stone, etc. for use as bases, ballasts, or as a component in concrete or asphalt.
|
34
|
+
|
35
|
+
Range version.
|
36
|
+
"""
|
37
|
+
|
38
|
+
_EXT_VERSION = "1.0"
|
39
|
+
|
40
|
+
recycled_content: RangeRatioFloat | None = pyd.Field(
|
41
|
+
default=None, description="Percent of total mass that is recycled aggregate"
|
42
|
+
)
|
43
|
+
nominal_max_size: AmountRangeLengthMm | None = pyd.Field(
|
44
|
+
default=None,
|
45
|
+
description="Nominal maximum aggregate size is defined as one sieve size smaller than the maximum aggregate size. The maximum aggregate size is defined as the smallest sieve size that requires 100% passing.",
|
46
|
+
)
|
47
|
+
weight_classification: list[AggregateWeightClassification] | None = pyd.Field(default=None)
|
48
|
+
gradation: list[AggregateGradation] | None = pyd.Field(default=None)
|
49
|
+
manufactured: bool | None = pyd.Field(
|
50
|
+
default=None,
|
51
|
+
description="Aggregate produced via expansion or sintering at high temperatures of the following materials: clay, shale, slate, perlite, vermiculite, or slag. Typically used to produce lightweight aggregate",
|
52
|
+
)
|
53
|
+
slag: bool | None = pyd.Field(
|
54
|
+
default=None,
|
55
|
+
description="Pelletized, foamed, and granulated blast furnace slag can be used as construction aggregate.",
|
56
|
+
)
|
57
|
+
application: AggregateApplication | None = None
|
@@ -0,0 +1,92 @@
|
|
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
|
+
"AluminiumBilletsRangeV1",
|
18
|
+
"AluminiumExtrusionsRangeV1",
|
19
|
+
"AluminiumSheetGoodsRangeV1",
|
20
|
+
"AluminiumSuspensionAssemblyRangeV1",
|
21
|
+
"AluminiumRangeV1",
|
22
|
+
)
|
23
|
+
|
24
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
25
|
+
|
26
|
+
|
27
|
+
from openepd.compat.pydantic import pyd
|
28
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
29
|
+
from openepd.model.specs.generated.enums import AluminiumAlloy
|
30
|
+
|
31
|
+
|
32
|
+
class AluminiumBilletsRangeV1(BaseOpenEpdHierarchicalSpec):
|
33
|
+
"""
|
34
|
+
Cast Aluminium ingots or billets for use in manufacturing more finished products.
|
35
|
+
|
36
|
+
Range version.
|
37
|
+
"""
|
38
|
+
|
39
|
+
_EXT_VERSION = "1.0"
|
40
|
+
|
41
|
+
|
42
|
+
class AluminiumExtrusionsRangeV1(BaseOpenEpdHierarchicalSpec):
|
43
|
+
"""
|
44
|
+
Extruded aluminum products used in construction.
|
45
|
+
|
46
|
+
Includes range of finish options including mill finish, painted, and anodized.
|
47
|
+
|
48
|
+
|
49
|
+
Range version.
|
50
|
+
"""
|
51
|
+
|
52
|
+
_EXT_VERSION = "1.0"
|
53
|
+
|
54
|
+
thermally_improved: bool | None = pyd.Field(default=None, description="")
|
55
|
+
|
56
|
+
|
57
|
+
class AluminiumSheetGoodsRangeV1(BaseOpenEpdHierarchicalSpec):
|
58
|
+
"""
|
59
|
+
Rolled and/or Stamped Aluminium coil or sheets, often used in flashing, trim, panels, and deck.
|
60
|
+
|
61
|
+
Range version.
|
62
|
+
"""
|
63
|
+
|
64
|
+
_EXT_VERSION = "1.0"
|
65
|
+
|
66
|
+
|
67
|
+
class AluminiumSuspensionAssemblyRangeV1(BaseOpenEpdHierarchicalSpec):
|
68
|
+
"""
|
69
|
+
Aluminum suspension assemblies for acoustical ceiling systems.
|
70
|
+
|
71
|
+
Range version.
|
72
|
+
"""
|
73
|
+
|
74
|
+
_EXT_VERSION = "1.0"
|
75
|
+
|
76
|
+
|
77
|
+
class AluminiumRangeV1(BaseOpenEpdHierarchicalSpec):
|
78
|
+
"""
|
79
|
+
Broad category for construction materials made primarily from Aluminium and its alloys.
|
80
|
+
|
81
|
+
Range version.
|
82
|
+
"""
|
83
|
+
|
84
|
+
_EXT_VERSION = "1.0"
|
85
|
+
|
86
|
+
alloy: list[AluminiumAlloy] | None = pyd.Field(default=None, description="")
|
87
|
+
anodized: bool | None = pyd.Field(default=None, description="")
|
88
|
+
painted: bool | None = pyd.Field(default=None, description="")
|
89
|
+
AluminiumBillets: AluminiumBilletsRangeV1 | None = None
|
90
|
+
AluminiumExtrusions: AluminiumExtrusionsRangeV1 | None = None
|
91
|
+
AluminiumSheetGoods: AluminiumSheetGoodsRangeV1 | None = None
|
92
|
+
AluminiumSuspensionAssembly: AluminiumSuspensionAssemblyRangeV1 | None = None
|