openepd 5.1.0__py3-none-any.whl → 6.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/api/average_dataset/generic_estimate_sync_api.py +11 -3
- openepd/api/epd/sync_api.py +6 -2
- openepd/api/utils.py +40 -0
- openepd/bundle/model.py +3 -0
- openepd/model/common.py +65 -1
- openepd/model/epd.py +1 -1
- openepd/model/org.py +0 -1
- openepd/model/specs/__init__.py +34 -75
- openepd/model/specs/base.py +2 -1
- openepd/model/specs/{generated/enums.py → enums.py} +51 -3
- openepd/model/specs/range/aggregates.py +2 -2
- openepd/model/specs/range/aluminium.py +1 -1
- openepd/model/specs/range/asphalt.py +4 -4
- openepd/model/specs/range/cladding.py +1 -1
- openepd/model/specs/range/cmu.py +6 -5
- openepd/model/specs/range/concrete.py +1 -1
- openepd/model/specs/range/conveying_equipment.py +1 -1
- openepd/model/specs/range/electrical.py +3 -2
- openepd/model/specs/range/finishes.py +13 -6
- openepd/model/specs/range/fire_and_smoke_protection.py +1 -1
- openepd/model/specs/range/furnishings.py +1 -1
- openepd/model/specs/range/manufacturing_inputs.py +1 -1
- openepd/model/specs/range/masonry.py +2 -2
- openepd/model/specs/range/mechanical.py +1 -1
- openepd/model/specs/range/mechanical_insulation.py +1 -1
- openepd/model/specs/range/network_infrastructure.py +1 -1
- openepd/model/specs/range/openings.py +12 -5
- openepd/model/specs/range/plumbing.py +1 -1
- openepd/model/specs/range/precast_concrete.py +1 -1
- openepd/model/specs/range/sheathing.py +3 -3
- openepd/model/specs/range/steel.py +10 -5
- openepd/model/specs/range/thermal_moisture_protection.py +1 -1
- openepd/model/specs/range/utility_piping.py +1 -1
- openepd/model/specs/range/wood.py +8 -6
- openepd/model/specs/range/wood_joists.py +1 -1
- openepd/model/specs/{generated → singular}/__init__.py +37 -35
- openepd/model/specs/{generated → singular}/aggregates.py +1 -1
- openepd/model/specs/{generated → singular}/aluminium.py +1 -1
- openepd/model/specs/{generated → singular}/asphalt.py +6 -4
- openepd/model/specs/{generated → singular}/cladding.py +1 -1
- openepd/model/specs/{generated → singular}/cmu.py +10 -4
- openepd/model/specs/{generated → singular}/concrete.py +12 -1
- openepd/model/specs/{generated → singular}/conveying_equipment.py +1 -1
- openepd/model/specs/{generated → singular}/electrical.py +4 -3
- openepd/model/specs/{generated → singular}/finishes.py +9 -6
- openepd/model/specs/{generated → singular}/fire_and_smoke_protection.py +1 -1
- openepd/model/specs/{generated → singular}/furnishings.py +1 -1
- openepd/model/specs/{generated → singular}/manufacturing_inputs.py +1 -1
- openepd/model/specs/{generated → singular}/masonry.py +4 -1
- openepd/model/specs/{generated → singular}/mechanical.py +1 -1
- openepd/model/specs/{generated → singular}/mechanical_insulation.py +1 -1
- openepd/model/specs/{generated → singular}/mixins/conduit_mixin.py +1 -1
- openepd/model/specs/{generated → singular}/network_infrastructure.py +2 -2
- openepd/model/specs/{generated → singular}/openings.py +10 -4
- openepd/model/specs/{generated → singular}/plumbing.py +1 -1
- openepd/model/specs/{generated → singular}/sheathing.py +3 -3
- openepd/model/specs/{generated → singular}/steel.py +11 -5
- openepd/model/specs/{generated → singular}/thermal_moisture_protection.py +1 -1
- openepd/model/specs/{generated → singular}/utility_piping.py +1 -1
- openepd/model/specs/{generated → singular}/wood.py +13 -7
- openepd/model/specs/{generated → singular}/wood_joists.py +2 -2
- openepd/model/validation/enum.py +42 -0
- openepd/model/validation/quantity.py +179 -0
- {openepd-5.1.0.dist-info → openepd-6.1.0.dist-info}/METADATA +1 -1
- openepd-6.1.0.dist-info/RECORD +139 -0
- openepd-5.1.0.dist-info/RECORD +0 -138
- /openepd/model/specs/{generated → singular}/accessories.py +0 -0
- /openepd/model/specs/{generated → singular}/bulk_materials.py +0 -0
- /openepd/model/specs/{generated → singular}/cast_decks_and_underlayment.py +0 -0
- /openepd/model/specs/{generated → singular}/common.py +0 -0
- /openepd/model/specs/{generated → singular}/electrical_transmission_and_distribution_equipment.py +0 -0
- /openepd/model/specs/{generated → singular}/electricity.py +0 -0
- /openepd/model/specs/{generated → singular}/grouting.py +0 -0
- /openepd/model/specs/{generated → singular}/material_handling.py +0 -0
- /openepd/model/specs/{generated → singular}/mixins/__init__.py +0 -0
- /openepd/model/specs/{generated → singular}/other_electrical_equipment.py +0 -0
- /openepd/model/specs/{generated → singular}/other_materials.py +0 -0
- /openepd/model/specs/{generated → singular}/precast_concrete.py +0 -0
- {openepd-5.1.0.dist-info → openepd-6.1.0.dist-info}/LICENSE +0 -0
- {openepd-5.1.0.dist-info → openepd-6.1.0.dist-info}/WHEEL +0 -0
@@ -51,7 +51,7 @@ from openepd.compat.pydantic import pyd
|
|
51
51
|
from openepd.model.common import RangeAmount, RangeFloat, RangeInt, RangeRatioFloat
|
52
52
|
from openepd.model.org import OrgRef
|
53
53
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
54
|
-
from openepd.model.specs.
|
54
|
+
from openepd.model.specs.enums import (
|
55
55
|
AccessFlooringCoreMaterial,
|
56
56
|
AccessFlooringFinishMaterial,
|
57
57
|
AccessFlooringSeismicRating,
|
@@ -78,7 +78,14 @@ from openepd.model.specs.generated.enums import (
|
|
78
78
|
WoodFlooringFabrication,
|
79
79
|
WoodFlooringTimberSpecies,
|
80
80
|
)
|
81
|
-
from openepd.model.validation.quantity import
|
81
|
+
from openepd.model.validation.quantity import (
|
82
|
+
AmountRangeForce,
|
83
|
+
AmountRangeGWP,
|
84
|
+
AmountRangeLengthMm,
|
85
|
+
AmountRangePressureMpa,
|
86
|
+
AmountRangeRFactor,
|
87
|
+
AmountRangeYarnWeight,
|
88
|
+
)
|
82
89
|
|
83
90
|
|
84
91
|
class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -106,8 +113,8 @@ class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
106
113
|
panel_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
107
114
|
concentrated_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
|
108
115
|
uniform_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
|
109
|
-
rolling_load_10_pass:
|
110
|
-
rolling_load_10000_pass:
|
116
|
+
rolling_load_10_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
|
117
|
+
rolling_load_10000_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
|
111
118
|
|
112
119
|
|
113
120
|
class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -124,7 +131,7 @@ class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
124
131
|
intended_application: list[CarpetIntendedApplication] | None = pyd.Field(default=None, description="")
|
125
132
|
manufacture_type: list[CarpetManufactureType] | None = pyd.Field(default=None, description="")
|
126
133
|
form_factor: list[CarpetFormFactor] | None = pyd.Field(default=None, description="")
|
127
|
-
yarn_weight:
|
134
|
+
yarn_weight: AmountRangeYarnWeight | None = pyd.Field(default=None, description="")
|
128
135
|
yarn_type: list[CarpetYarnType] | None = pyd.Field(default=None, description="")
|
129
136
|
fire_radiant_panel_rating_astme648: str | None = pyd.Field(default=None, description="")
|
130
137
|
fire_smoke_density_rating_astme648: str | None = pyd.Field(default=None, description="")
|
@@ -457,7 +464,7 @@ class GypsumRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
457
464
|
fire_rating: list[GypsumFireRating] | None = pyd.Field(default=None, description="")
|
458
465
|
thickness: list[GypsumThickness] | None = pyd.Field(default=None, description="")
|
459
466
|
facing: list[GypsumFacing] | None = pyd.Field(default=None, description="")
|
460
|
-
r_factor:
|
467
|
+
r_factor: AmountRangeRFactor | None = pyd.Field(default=None, description="")
|
461
468
|
flame_spread_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
|
462
469
|
smoke_production_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
|
463
470
|
surface_abrasion_d4977: RangeInt | None = pyd.Field(default=None, description="")
|
@@ -26,7 +26,7 @@ __all__ = (
|
|
26
26
|
|
27
27
|
from openepd.compat.pydantic import pyd
|
28
28
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
29
|
-
from openepd.model.specs.
|
29
|
+
from openepd.model.specs.enums import (
|
30
30
|
IntumescentFireproofingMaterialType,
|
31
31
|
SprayFireproofingDensity,
|
32
32
|
SprayFireproofingMaterialType,
|
@@ -30,7 +30,7 @@ __all__ = (
|
|
30
30
|
|
31
31
|
from openepd.compat.pydantic import pyd
|
32
32
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
33
|
-
from openepd.model.specs.
|
33
|
+
from openepd.model.specs.enums import CountertopMaterial
|
34
34
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
35
35
|
|
36
36
|
|
@@ -33,7 +33,7 @@ from openepd.compat.pydantic import pyd
|
|
33
33
|
from openepd.model.common import RangeFloat
|
34
34
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
35
35
|
from openepd.model.specs.concrete import Cementitious
|
36
|
-
from openepd.model.specs.
|
36
|
+
from openepd.model.specs.enums import (
|
37
37
|
AdmixtureEffects,
|
38
38
|
CarpetYarnType,
|
39
39
|
CementAstmType,
|
@@ -25,7 +25,7 @@ __all__ = (
|
|
25
25
|
|
26
26
|
from openepd.compat.pydantic import pyd
|
27
27
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
28
|
-
from openepd.model.validation.quantity import AmountRangePressureMpa
|
28
|
+
from openepd.model.validation.quantity import AmountRangePressureMpa, AmountRangeThermalConductivity
|
29
29
|
|
30
30
|
|
31
31
|
class GMURangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -48,7 +48,7 @@ class AutoclavedAeratedConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
48
48
|
_EXT_VERSION = "1.0"
|
49
49
|
|
50
50
|
strength_28d: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
|
51
|
-
thermal_conductivity:
|
51
|
+
thermal_conductivity: AmountRangeThermalConductivity | None = pyd.Field(default=None, description="")
|
52
52
|
white: bool | None = pyd.Field(default=None, description="")
|
53
53
|
|
54
54
|
|
@@ -37,7 +37,7 @@ __all__ = (
|
|
37
37
|
|
38
38
|
from openepd.compat.pydantic import pyd
|
39
39
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
40
|
-
from openepd.model.specs.
|
40
|
+
from openepd.model.specs.enums import (
|
41
41
|
AhuAirflowControl,
|
42
42
|
AhuZoneControl,
|
43
43
|
AirFiltersMediaType,
|
@@ -21,7 +21,7 @@ __all__ = ("MechanicalInsulationRangeV1",)
|
|
21
21
|
from openepd.compat.pydantic import pyd
|
22
22
|
from openepd.model.common import RangeFloat
|
23
23
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
|
-
from openepd.model.specs.
|
24
|
+
from openepd.model.specs.enums import InsulatingMaterial, InsulationIntendedApplication
|
25
25
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
26
26
|
|
27
27
|
|
@@ -30,7 +30,7 @@ __all__ = (
|
|
30
30
|
from openepd.compat.pydantic import pyd
|
31
31
|
from openepd.model.common import RangeInt
|
32
32
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
33
|
-
from openepd.model.specs.
|
33
|
+
from openepd.model.specs.enums import (
|
34
34
|
CableTraysMaterial,
|
35
35
|
CablingCategory,
|
36
36
|
CablingFireRating,
|
@@ -50,7 +50,7 @@ __all__ = (
|
|
50
50
|
from openepd.compat.pydantic import pyd
|
51
51
|
from openepd.model.common import RangeInt, RangeRatioFloat
|
52
52
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
53
|
-
from openepd.model.specs.
|
53
|
+
from openepd.model.specs.enums import (
|
54
54
|
FlatGlassPanesThickness,
|
55
55
|
FrameMaterial,
|
56
56
|
HardwareFunction,
|
@@ -58,8 +58,13 @@ from openepd.model.specs.generated.enums import (
|
|
58
58
|
Spacer,
|
59
59
|
ThermalSeparation,
|
60
60
|
)
|
61
|
-
from openepd.model.specs.
|
62
|
-
from openepd.model.validation.quantity import
|
61
|
+
from openepd.model.specs.singular.openings import GlazingIntendedApplication, NAFSPerformanceClass
|
62
|
+
from openepd.model.validation.quantity import (
|
63
|
+
AmountRangeLengthMm,
|
64
|
+
AmountRangePressureMpa,
|
65
|
+
AmountRangeSpeed,
|
66
|
+
AmountRangeUFactor,
|
67
|
+
)
|
63
68
|
|
64
69
|
|
65
70
|
class PanelDoorsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -328,7 +333,7 @@ class NAFSFenestrationRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
328
333
|
hurricane_resistant: bool | None = pyd.Field(
|
329
334
|
default=None, description="The product has been designed to resist windborne debris."
|
330
335
|
)
|
331
|
-
assembly_u_factor:
|
336
|
+
assembly_u_factor: AmountRangeUFactor | None = pyd.Field(
|
332
337
|
default=None, description="Weighted average conductance of heat across assembly (including frame)."
|
333
338
|
)
|
334
339
|
air_infiltration: AmountRangeSpeed | None = pyd.Field(
|
@@ -386,7 +391,9 @@ class InsulatingGlazingUnitsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
386
391
|
default=None,
|
387
392
|
description="Number of panes, each separated by a cavity. A 3 pane unit has 2 cavities. example: 3",
|
388
393
|
)
|
389
|
-
cog_u_factor:
|
394
|
+
cog_u_factor: AmountRangeUFactor | None = pyd.Field(
|
395
|
+
default=None, description="Conductance of heat at center of glass."
|
396
|
+
)
|
390
397
|
spacer: list[Spacer] | None = pyd.Field(default=None, description="Spacer material for Integrated Glass Unit.")
|
391
398
|
|
392
399
|
|
@@ -35,7 +35,7 @@ __all__ = (
|
|
35
35
|
from openepd.compat.pydantic import pyd
|
36
36
|
from openepd.model.common import RangeAmount
|
37
37
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
38
|
-
from openepd.model.specs.
|
38
|
+
from openepd.model.specs.enums import FireProtectionPipingMaterial, PipingAnsiSchedule, PlumbingPipingMaterial
|
39
39
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
40
40
|
|
41
41
|
|
@@ -27,7 +27,7 @@ __all__ = (
|
|
27
27
|
from openepd.compat.pydantic import pyd
|
28
28
|
from openepd.model.common import RangeRatioFloat
|
29
29
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
30
|
-
from openepd.model.specs.
|
30
|
+
from openepd.model.specs.singular.precast_concrete import (
|
31
31
|
ArchitecturalPrecastElementType,
|
32
32
|
CivilPrecastElementType,
|
33
33
|
StructuralPrecastElementType,
|
@@ -25,8 +25,8 @@ __all__ = (
|
|
25
25
|
from openepd.compat.pydantic import pyd
|
26
26
|
from openepd.model.common import RangeInt
|
27
27
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
28
|
-
from openepd.model.specs.
|
29
|
-
from openepd.model.validation.quantity import AmountRangeLengthMm
|
28
|
+
from openepd.model.specs.enums import GypsumFacing, GypsumFireRating, GypsumThickness
|
29
|
+
from openepd.model.validation.quantity import AmountRangeLengthMm, AmountRangeRFactor
|
30
30
|
|
31
31
|
|
32
32
|
class CementitiousSheathingBoardRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -58,7 +58,7 @@ class GypsumSheathingBoardRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
58
58
|
fire_rating: list[GypsumFireRating] | None = pyd.Field(default=None, description="")
|
59
59
|
thickness: list[GypsumThickness] | None = pyd.Field(default=None, description="")
|
60
60
|
facing: list[GypsumFacing] | None = pyd.Field(default=None, description="")
|
61
|
-
r_factor:
|
61
|
+
r_factor: AmountRangeRFactor | None = pyd.Field(default=None, description="")
|
62
62
|
flame_spread_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
|
63
63
|
smoke_production_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
|
64
64
|
surface_abrasion_d4977: RangeInt | None = pyd.Field(default=None, description="")
|
@@ -41,10 +41,15 @@ __all__ = (
|
|
41
41
|
from openepd.compat.pydantic import pyd
|
42
42
|
from openepd.model.common import RangeFloat, RangeRatioFloat
|
43
43
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
44
|
-
from openepd.model.specs.
|
45
|
-
from openepd.model.specs.
|
44
|
+
from openepd.model.specs.enums import SteelComposition, SteelRebarGrade
|
45
|
+
from openepd.model.specs.singular.steel import SteelMakingRoute
|
46
46
|
from openepd.model.standard import Standard
|
47
|
-
from openepd.model.validation.quantity import
|
47
|
+
from openepd.model.validation.quantity import (
|
48
|
+
AmountRangeLengthMm,
|
49
|
+
AmountRangePressureMpa,
|
50
|
+
AmountRangeThermalConductivity,
|
51
|
+
AmountRangeThermalExpansion,
|
52
|
+
)
|
48
53
|
|
49
54
|
|
50
55
|
class ColdFormedFramingRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -224,10 +229,10 @@ class StructuralSteelRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
224
229
|
modulus_of_elasticity: AmountRangePressureMpa | None = pyd.Field(
|
225
230
|
default=None, description="Modulus of Elasticity, https://en.wikipedia.org/wiki/Elastic_modulus "
|
226
231
|
)
|
227
|
-
thermal_expansion:
|
232
|
+
thermal_expansion: AmountRangeThermalExpansion | None = pyd.Field(
|
228
233
|
default=None, description="Thermal Expansion, https://en.wikipedia.org/wiki/Thermal_expansion"
|
229
234
|
)
|
230
|
-
thermal_conductivity:
|
235
|
+
thermal_conductivity: AmountRangeThermalConductivity | None = pyd.Field(
|
231
236
|
default=None,
|
232
237
|
description="Thermal Conductivity, https://en.wikipedia.org/wiki/Thermal_conductivity_and_resistivity",
|
233
238
|
)
|
@@ -44,7 +44,7 @@ __all__ = (
|
|
44
44
|
from openepd.compat.pydantic import pyd
|
45
45
|
from openepd.model.common import RangeFloat, RangeRatioFloat
|
46
46
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
47
|
-
from openepd.model.specs.
|
47
|
+
from openepd.model.specs.enums import (
|
48
48
|
FoamType,
|
49
49
|
InsulatingMaterial,
|
50
50
|
InsulationIntendedApplication,
|
@@ -25,7 +25,7 @@ __all__ = (
|
|
25
25
|
from openepd.compat.pydantic import pyd
|
26
26
|
from openepd.model.common import RangeAmount
|
27
27
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
28
|
-
from openepd.model.specs.
|
28
|
+
from openepd.model.specs.enums import BuriedPipingType, PipingAnsiSchedule, UtilityPipingMaterial
|
29
29
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
30
30
|
|
31
31
|
|
@@ -32,11 +32,12 @@ __all__ = (
|
|
32
32
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
33
33
|
|
34
34
|
|
35
|
+
from builtins import float
|
36
|
+
|
35
37
|
from openepd.compat.pydantic import pyd
|
36
|
-
from openepd.model.common import RangeFloat, RangeRatioFloat
|
37
38
|
from openepd.model.org import OrgRef
|
38
39
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
39
|
-
from openepd.model.specs.
|
40
|
+
from openepd.model.specs.enums import (
|
40
41
|
AllFabrication,
|
41
42
|
AllTimberSpecies,
|
42
43
|
CompositeLumberFabrication,
|
@@ -45,6 +46,7 @@ from openepd.model.specs.generated.enums import (
|
|
45
46
|
SawnTimberSpecies,
|
46
47
|
SheathingPanelsFabrication,
|
47
48
|
)
|
49
|
+
from openepd.model.validation.numbers import RatioFloat
|
48
50
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
49
51
|
|
50
52
|
|
@@ -212,12 +214,12 @@ class WoodRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
212
214
|
weather_exposed: bool | None = pyd.Field(default=None, description="Weather exposed")
|
213
215
|
fire_retardant: bool | None = pyd.Field(default=None, description="Fire retardant")
|
214
216
|
decay_resistant: bool | None = pyd.Field(default=None, description="Decay resistant")
|
215
|
-
fsc_certified:
|
217
|
+
fsc_certified: RatioFloat | None = pyd.Field(
|
216
218
|
default=None, description="Forest Stewardship Council certified proportion"
|
217
219
|
)
|
218
|
-
fsc_certified_z:
|
219
|
-
recycled_content:
|
220
|
-
recycled_content_z:
|
220
|
+
fsc_certified_z: float | None = pyd.Field(default=None, description="")
|
221
|
+
recycled_content: RatioFloat | None = pyd.Field(default=None, description="Recycled content")
|
222
|
+
recycled_content_z: float | None = pyd.Field(default=None, description="")
|
221
223
|
CompositeLumber: CompositeLumberRangeV1 | None = None
|
222
224
|
DimensionLumber: DimensionLumberRangeV1 | None = None
|
223
225
|
HeavyTimber: HeavyTimberRangeV1 | None = None
|
@@ -21,7 +21,7 @@ __all__ = ("WoodJoistsRangeV1",)
|
|
21
21
|
from openepd.compat.pydantic import pyd
|
22
22
|
from openepd.model.org import OrgRef
|
23
23
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
|
-
from openepd.model.specs.
|
24
|
+
from openepd.model.specs.enums import AllFabrication, AllTimberSpecies
|
25
25
|
|
26
26
|
|
27
27
|
class WoodJoistsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -13,44 +13,46 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
-
|
16
|
+
from openepd.model.base import BaseOpenEpdSchema
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
19
|
-
from openepd.model.specs.
|
20
|
-
from openepd.model.specs.
|
21
|
-
from openepd.model.specs.
|
22
|
-
from openepd.model.specs.
|
23
|
-
from openepd.model.specs.
|
24
|
-
from openepd.model.specs.
|
25
|
-
from openepd.model.specs.
|
26
|
-
from openepd.model.specs.
|
27
|
-
from openepd.model.specs.
|
28
|
-
from openepd.model.specs.
|
29
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.singular.accessories import AccessoriesV1
|
19
|
+
from openepd.model.specs.singular.aggregates import AggregatesV1
|
20
|
+
from openepd.model.specs.singular.aluminium import AluminiumV1
|
21
|
+
from openepd.model.specs.singular.asphalt import AsphaltV1
|
22
|
+
from openepd.model.specs.singular.bulk_materials import BulkMaterialsV1
|
23
|
+
from openepd.model.specs.singular.cast_decks_and_underlayment import CastDecksAndUnderlaymentV1
|
24
|
+
from openepd.model.specs.singular.cladding import CladdingV1
|
25
|
+
from openepd.model.specs.singular.cmu import CMUV1
|
26
|
+
from openepd.model.specs.singular.concrete import ConcreteV1
|
27
|
+
from openepd.model.specs.singular.conveying_equipment import ConveyingEquipmentV1
|
28
|
+
from openepd.model.specs.singular.electrical import ElectricalV1
|
29
|
+
from openepd.model.specs.singular.electrical_transmission_and_distribution_equipment import (
|
30
30
|
ElectricalTransmissionAndDistributionEquipmentV1,
|
31
31
|
)
|
32
|
-
from openepd.model.specs.
|
33
|
-
from openepd.model.specs.
|
34
|
-
from openepd.model.specs.
|
35
|
-
from openepd.model.specs.
|
36
|
-
from openepd.model.specs.
|
37
|
-
from openepd.model.specs.
|
38
|
-
from openepd.model.specs.
|
39
|
-
from openepd.model.specs.
|
40
|
-
from openepd.model.specs.
|
41
|
-
from openepd.model.specs.
|
42
|
-
from openepd.model.specs.
|
43
|
-
from openepd.model.specs.
|
44
|
-
from openepd.model.specs.
|
45
|
-
from openepd.model.specs.
|
46
|
-
from openepd.model.specs.
|
47
|
-
from openepd.model.specs.
|
48
|
-
from openepd.model.specs.
|
49
|
-
from openepd.model.specs.
|
50
|
-
from openepd.model.specs.
|
51
|
-
from openepd.model.specs.
|
52
|
-
from openepd.model.specs.
|
53
|
-
from openepd.model.specs.
|
32
|
+
from openepd.model.specs.singular.electricity import ElectricityV1
|
33
|
+
from openepd.model.specs.singular.finishes import FinishesV1
|
34
|
+
from openepd.model.specs.singular.fire_and_smoke_protection import FireAndSmokeProtectionV1
|
35
|
+
from openepd.model.specs.singular.furnishings import FurnishingsV1
|
36
|
+
from openepd.model.specs.singular.grouting import GroutingV1
|
37
|
+
from openepd.model.specs.singular.manufacturing_inputs import ManufacturingInputsV1
|
38
|
+
from openepd.model.specs.singular.masonry import MasonryV1
|
39
|
+
from openepd.model.specs.singular.material_handling import MaterialHandlingV1
|
40
|
+
from openepd.model.specs.singular.mechanical import MechanicalV1
|
41
|
+
from openepd.model.specs.singular.mechanical_insulation import MechanicalInsulationV1
|
42
|
+
from openepd.model.specs.singular.network_infrastructure import NetworkInfrastructureV1
|
43
|
+
from openepd.model.specs.singular.openings import OpeningsV1
|
44
|
+
from openepd.model.specs.singular.other_electrical_equipment import OtherElectricalEquipmentV1
|
45
|
+
from openepd.model.specs.singular.other_materials import OtherMaterialsV1
|
46
|
+
from openepd.model.specs.singular.plumbing import PlumbingV1
|
47
|
+
from openepd.model.specs.singular.precast_concrete import PrecastConcreteV1
|
48
|
+
from openepd.model.specs.singular.sheathing import SheathingV1
|
49
|
+
from openepd.model.specs.singular.steel import SteelV1
|
50
|
+
from openepd.model.specs.singular.thermal_moisture_protection import ThermalMoistureProtectionV1
|
51
|
+
from openepd.model.specs.singular.utility_piping import UtilityPipingV1
|
52
|
+
from openepd.model.specs.singular.wood import WoodV1
|
53
|
+
from openepd.model.specs.singular.wood_joists import WoodJoistsV1
|
54
|
+
|
55
|
+
__all__ = ("Specs",)
|
54
56
|
|
55
57
|
|
56
58
|
class Specs(BaseOpenEpdHierarchicalSpec):
|
@@ -16,7 +16,7 @@
|
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.base import BaseOpenEpdSchema
|
18
18
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
19
|
-
from openepd.model.specs.
|
19
|
+
from openepd.model.specs.enums import AggregateGradation, AggregateWeightClassification
|
20
20
|
from openepd.model.validation.numbers import RatioFloat
|
21
21
|
from openepd.model.validation.quantity import LengthMmStr
|
22
22
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import AluminiumAlloy
|
19
19
|
|
20
20
|
|
21
21
|
class AluminiumBilletsV1(BaseOpenEpdHierarchicalSpec):
|
@@ -13,9 +13,11 @@
|
|
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
|
-
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
19
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, CodegenSpec
|
20
|
+
from openepd.model.specs.enums import AsphaltGradation, AsphaltMixType
|
19
21
|
from openepd.model.validation.numbers import RatioFloat
|
20
22
|
from openepd.model.validation.quantity import LengthMmStr, TemperatureCStr
|
21
23
|
|
@@ -48,14 +50,14 @@ class AsphaltV1(BaseOpenEpdHierarchicalSpec):
|
|
48
50
|
ge=0,
|
49
51
|
le=1,
|
50
52
|
)
|
51
|
-
max_temperature: TemperatureCStr | None = pyd.Field(
|
53
|
+
max_temperature: Annotated[TemperatureCStr | None, CodegenSpec(override_type=TemperatureCStr)] = pyd.Field(
|
52
54
|
default=None,
|
53
55
|
description="The upper threshold temperature to which an asphalt "
|
54
56
|
"binder can be heated preventing the asphalt mixture "
|
55
57
|
"from rutting",
|
56
58
|
example="90 °C",
|
57
59
|
)
|
58
|
-
min_temperature: TemperatureCStr | None = pyd.Field(
|
60
|
+
min_temperature: Annotated[TemperatureCStr | None, CodegenSpec(override_type=TemperatureCStr)] = pyd.Field(
|
59
61
|
default=None,
|
60
62
|
description="The lower threshold temperature for an asphalt "
|
61
63
|
"binder to prevent thermal cracking of the asphalt"
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import CladdingFacingMaterial, CladdingInsulatingMaterial, SidingFormFactor
|
19
19
|
from openepd.model.validation.quantity import LengthMmStr, LengthMStr, RValueStr, validate_quantity_unit_factory
|
20
20
|
|
21
21
|
|
@@ -13,9 +13,11 @@
|
|
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
|
-
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
19
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, CodegenSpec
|
20
|
+
from openepd.model.specs.enums import CmuBlockType, CmuWeightClassification
|
19
21
|
from openepd.model.validation.quantity import GwpKgCo2eStr, PressureMPaStr
|
20
22
|
|
21
23
|
|
@@ -31,5 +33,9 @@ class CMUV1(BaseOpenEpdHierarchicalSpec):
|
|
31
33
|
block_type: CmuBlockType | None = pyd.Field(default=None, description="", example="Gray")
|
32
34
|
insulated: bool | None = pyd.Field(default=None, description="", example=True)
|
33
35
|
sound_performance: bool | None = pyd.Field(default=None, description="", example=True)
|
34
|
-
b1_recarbonation: GwpKgCo2eStr | None = pyd.Field(
|
35
|
-
|
36
|
+
b1_recarbonation: Annotated[GwpKgCo2eStr | None, CodegenSpec(override_type=GwpKgCo2eStr)] = pyd.Field(
|
37
|
+
default=None, description="", example="1 kgCO2e"
|
38
|
+
)
|
39
|
+
b1_recarbonation_z: Annotated[float | None, CodegenSpec(override_type=float)] = pyd.Field(
|
40
|
+
default=None, description="", example=2.3
|
41
|
+
)
|
@@ -18,7 +18,8 @@ from typing import Annotated, Literal
|
|
18
18
|
from openepd.compat.pydantic import pyd
|
19
19
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, CodegenSpec
|
20
20
|
from openepd.model.specs.concrete import Cementitious, ConcreteTypicalApplication
|
21
|
-
from openepd.model.specs.
|
21
|
+
from openepd.model.specs.enums import AciExposureClass, CsaExposureClass, EnExposureClass
|
22
|
+
from openepd.model.validation.enum import exclusive_groups_validator_factory
|
22
23
|
from openepd.model.validation.numbers import RatioFloat
|
23
24
|
from openepd.model.validation.quantity import (
|
24
25
|
LengthInchStr,
|
@@ -172,3 +173,13 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
|
172
173
|
OilPatch: OilPatchV1 | None = None
|
173
174
|
ReadyMix: ReadyMixV1 | None = None
|
174
175
|
Shotcrete: ShotcreteV1 | None = None
|
176
|
+
|
177
|
+
_aci_exposure_classes_exclusive_groups_validator = pyd.validator("aci_exposure_classes", allow_reuse=True)(
|
178
|
+
exclusive_groups_validator_factory(AciExposureClass)
|
179
|
+
)
|
180
|
+
_en_exposure_classes_exclusive_groups_validator = pyd.validator("en_exposure_classes", allow_reuse=True)(
|
181
|
+
exclusive_groups_validator_factory(EnExposureClass)
|
182
|
+
)
|
183
|
+
_csa_exposure_classes_exclusive_groups_validator = pyd.validator("csa_exposure_classes", allow_reuse=True)(
|
184
|
+
exclusive_groups_validator_factory(CsaExposureClass)
|
185
|
+
)
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import ElevatorsBuildingRise, ElevatorsUsageIntensity
|
19
19
|
from openepd.model.validation.quantity import CapacityPerHourStr, LengthMStr, MassKgStr, SpeedStr
|
20
20
|
|
21
21
|
|
@@ -15,8 +15,8 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
19
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import CableTraysMaterial, EnergySource, RacewaysMaterial
|
19
|
+
from openepd.model.specs.singular.mixins.conduit_mixin import ConduitMixin
|
20
20
|
from openepd.model.validation.quantity import (
|
21
21
|
ColorTemperatureStr,
|
22
22
|
LengthMmStr,
|
@@ -24,6 +24,7 @@ from openepd.model.validation.quantity import (
|
|
24
24
|
LuminosityStr,
|
25
25
|
MassKgStr,
|
26
26
|
PowerStr,
|
27
|
+
UtilizationStr,
|
27
28
|
validate_quantity_ge_factory,
|
28
29
|
validate_quantity_le_factory,
|
29
30
|
validate_quantity_unit_factory,
|
@@ -255,7 +256,7 @@ class LightingV1(BaseOpenEpdHierarchicalSpec):
|
|
255
256
|
|
256
257
|
# Own fields:
|
257
258
|
color_temperature: ColorTemperatureStr | None = pyd.Field(default=None, description="", example="1 K")
|
258
|
-
typical_utilization:
|
259
|
+
typical_utilization: UtilizationStr | None = pyd.Field(default=None, description="", example="1 h / yr")
|
259
260
|
luminosity: LuminosityStr | None = pyd.Field(default=None, description="", example="1 lumen")
|
260
261
|
wattage: PowerStr | None = pyd.Field(default=None, description="")
|
261
262
|
color_rendering_index: float | None = pyd.Field(default=None, description="", example=2.3)
|
@@ -15,8 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
19
|
-
from openepd.model.specs.generated.enums import (
|
18
|
+
from openepd.model.specs.enums import (
|
20
19
|
AccessFlooringCoreMaterial,
|
21
20
|
AccessFlooringFinishMaterial,
|
22
21
|
AccessFlooringSeismicRating,
|
@@ -43,13 +42,17 @@ from openepd.model.specs.generated.enums import (
|
|
43
42
|
WoodFlooringFabrication,
|
44
43
|
WoodFlooringTimberSpecies,
|
45
44
|
)
|
45
|
+
from openepd.model.specs.singular.common import HasForestPracticesCertifiers
|
46
46
|
from openepd.model.validation.numbers import RatioFloat
|
47
47
|
from openepd.model.validation.quantity import (
|
48
48
|
AreaPerVolumeStr,
|
49
|
+
ForceNStr,
|
49
50
|
GwpKgCo2eStr,
|
50
51
|
LengthMmStr,
|
51
52
|
LengthMStr,
|
52
53
|
PressureMPaStr,
|
54
|
+
RFactorStr,
|
55
|
+
YarnWeightStr,
|
53
56
|
validate_quantity_ge_factory,
|
54
57
|
validate_quantity_le_factory,
|
55
58
|
validate_quantity_unit_factory,
|
@@ -80,8 +83,8 @@ class AccessFlooringV1(BaseOpenEpdHierarchicalSpec):
|
|
80
83
|
panel_thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="1 m")
|
81
84
|
concentrated_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
|
82
85
|
uniform_load: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
|
83
|
-
rolling_load_10_pass:
|
84
|
-
rolling_load_10000_pass:
|
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")
|
85
88
|
|
86
89
|
_access_flooring_rolling_load_10_pass_is_quantity_validator = pyd.validator(
|
87
90
|
"rolling_load_10_pass", allow_reuse=True
|
@@ -104,7 +107,7 @@ class CarpetV1(BaseOpenEpdHierarchicalSpec):
|
|
104
107
|
)
|
105
108
|
manufacture_type: CarpetManufactureType | None = pyd.Field(default=None, description="", example="Tufted")
|
106
109
|
form_factor: CarpetFormFactor | None = pyd.Field(default=None, description="", example="Tiles")
|
107
|
-
yarn_weight:
|
110
|
+
yarn_weight: YarnWeightStr | None = pyd.Field(default=None, description="", example="1 g / m2")
|
108
111
|
yarn_type: CarpetYarnType | None = pyd.Field(default=None, description="", example="Nylon 6,6")
|
109
112
|
fire_radiant_panel_rating_astme648: str | None = pyd.Field(default=None, description="")
|
110
113
|
fire_smoke_density_rating_astme648: str | None = pyd.Field(default=None, description="")
|
@@ -446,7 +449,7 @@ class GypsumV1(BaseOpenEpdHierarchicalSpec):
|
|
446
449
|
fire_rating: GypsumFireRating | None = pyd.Field(default=None, description="", example="-")
|
447
450
|
thickness: GypsumThickness | None = pyd.Field(default=None, description="", example="1 m")
|
448
451
|
facing: GypsumFacing | None = pyd.Field(default=None, description="", example="Paper")
|
449
|
-
r_factor:
|
452
|
+
r_factor: RFactorStr | None = pyd.Field(default=None, description="", example="1 RSI")
|
450
453
|
flame_spread_astm_e84: int | None = pyd.Field(default=None, description="", example=3)
|
451
454
|
smoke_production_astm_e84: int | None = pyd.Field(default=None, description="", example=3)
|
452
455
|
surface_abrasion_d4977: int | None = pyd.Field(default=None, description="", example=3)
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import (
|
19
19
|
IntumescentFireproofingMaterialType,
|
20
20
|
SprayFireproofingDensity,
|
21
21
|
SprayFireproofingMaterialType,
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
from openepd.compat.pydantic import pyd
|
17
17
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
18
|
-
from openepd.model.specs.
|
18
|
+
from openepd.model.specs.enums import CountertopMaterial
|
19
19
|
from openepd.model.validation.quantity import LengthMmStr
|
20
20
|
|
21
21
|
|