openepd 7.1.0__py3-none-any.whl → 7.2.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 +2 -1
- openepd/api/average_dataset/industry_epd_sync_api.py +2 -1
- openepd/api/base_sync_client.py +10 -8
- openepd/api/common.py +17 -11
- openepd/api/dto/common.py +1 -1
- openepd/api/epd/sync_api.py +2 -1
- openepd/api/org/__init__.py +15 -0
- openepd/api/org/sync_api.py +79 -0
- openepd/api/pcr/sync_api.py +35 -0
- openepd/api/plant/__init__.py +15 -0
- openepd/api/plant/sync_api.py +79 -0
- openepd/api/standard/__init__.py +15 -0
- openepd/api/standard/sync_api.py +79 -0
- openepd/api/sync_client.py +27 -0
- openepd/bundle/base.py +5 -4
- openepd/bundle/reader.py +13 -7
- openepd/bundle/writer.py +11 -6
- openepd/m49/__init__.py +2 -0
- openepd/m49/const.py +1 -1
- openepd/m49/utils.py +16 -10
- openepd/model/base.py +20 -15
- openepd/model/common.py +10 -5
- openepd/model/declaration.py +2 -2
- openepd/model/epd.py +2 -1
- openepd/model/factory.py +5 -3
- openepd/model/generic_estimate.py +4 -0
- openepd/model/lcia.py +10 -10
- openepd/model/org.py +14 -7
- openepd/model/pcr.py +2 -2
- openepd/model/specs/__init__.py +37 -0
- openepd/model/specs/asphalt.py +3 -3
- openepd/model/specs/base.py +2 -1
- openepd/model/specs/enums.py +9 -1
- openepd/model/specs/range/__init__.py +5 -3
- openepd/model/specs/range/accessories.py +1 -1
- openepd/model/specs/range/aluminium.py +1 -1
- openepd/model/specs/range/cladding.py +10 -10
- openepd/model/specs/range/cmu.py +0 -2
- openepd/model/specs/range/concrete.py +25 -2
- openepd/model/specs/range/conveying_equipment.py +2 -2
- openepd/model/specs/range/electrical.py +18 -18
- openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +1 -1
- openepd/model/specs/range/exterior_improvements.py +47 -0
- openepd/model/specs/range/finishes.py +19 -40
- openepd/model/specs/range/fire_and_smoke_protection.py +3 -3
- openepd/model/specs/range/furnishings.py +7 -7
- openepd/model/specs/range/manufacturing_inputs.py +17 -5
- openepd/model/specs/range/masonry.py +1 -1
- openepd/model/specs/range/mechanical.py +6 -6
- openepd/model/specs/range/mixins/__init__.py +15 -0
- openepd/model/specs/range/mixins/access_flooring_mixin.py +43 -0
- openepd/model/specs/range/network_infrastructure.py +3 -3
- openepd/model/specs/range/openings.py +17 -17
- openepd/model/specs/range/other_materials.py +4 -4
- openepd/model/specs/range/plumbing.py +5 -5
- openepd/model/specs/range/precast_concrete.py +2 -2
- openepd/model/specs/range/steel.py +18 -9
- openepd/model/specs/range/thermal_moisture_protection.py +12 -12
- openepd/model/specs/range/wood.py +4 -6
- openepd/model/specs/singular/__init__.py +119 -2
- openepd/model/specs/singular/aluminium.py +2 -1
- openepd/model/specs/singular/concrete.py +25 -1
- openepd/model/specs/singular/deprecated/__init__.py +1 -1
- openepd/model/specs/singular/exterior_improvements.py +47 -0
- openepd/model/specs/singular/finishes.py +3 -59
- openepd/model/specs/singular/manufacturing_inputs.py +13 -1
- openepd/model/specs/singular/mixins/access_flooring_mixin.py +55 -0
- openepd/model/specs/singular/steel.py +10 -2
- openepd/model/validation/common.py +10 -6
- openepd/model/validation/enum.py +4 -2
- openepd/model/validation/quantity.py +13 -6
- openepd/model/versioning.py +8 -6
- {openepd-7.1.0.dist-info → openepd-7.2.0.dist-info}/METADATA +3 -4
- {openepd-7.1.0.dist-info → openepd-7.2.0.dist-info}/RECORD +77 -66
- {openepd-7.1.0.dist-info → openepd-7.2.0.dist-info}/WHEEL +1 -1
- {openepd-7.1.0.dist-info → openepd-7.2.0.dist-info}/LICENSE +0 -0
@@ -15,24 +15,24 @@
|
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
17
|
"AluminiumSidingRangeV1",
|
18
|
-
"
|
19
|
-
"ZincSidingRangeV1",
|
20
|
-
"ShingleAndShakeSidingRangeV1",
|
21
|
-
"MetalSidingRangeV1",
|
18
|
+
"CladdingRangeV1",
|
22
19
|
"CompositionSidingRangeV1",
|
23
20
|
"FiberCementSidingRangeV1",
|
21
|
+
"InsulatedRoofPanelsRangeV1",
|
24
22
|
"InsulatedVinylSidingRangeV1",
|
23
|
+
"InsulatedWallPanelsRangeV1",
|
24
|
+
"MetalSidingRangeV1",
|
25
25
|
"PlywoodSidingRangeV1",
|
26
26
|
"PolypropyleneSidingRangeV1",
|
27
|
-
"SolidWoodSidingRangeV1",
|
28
|
-
"VinylSidingRangeV1",
|
29
|
-
"SidingRangeV1",
|
30
|
-
"InsulatedRoofPanelsRangeV1",
|
31
|
-
"InsulatedWallPanelsRangeV1",
|
32
27
|
"RoofPanelsRangeV1",
|
28
|
+
"ShingleAndShakeSidingRangeV1",
|
29
|
+
"SidingRangeV1",
|
30
|
+
"SolidWoodSidingRangeV1",
|
31
|
+
"SteelSidingRangeV1",
|
33
32
|
"StoneCladdingRangeV1",
|
33
|
+
"VinylSidingRangeV1",
|
34
34
|
"WallPanelsRangeV1",
|
35
|
-
"
|
35
|
+
"ZincSidingRangeV1",
|
36
36
|
)
|
37
37
|
|
38
38
|
import pydantic
|
openepd/model/specs/range/cmu.py
CHANGED
@@ -16,11 +16,11 @@
|
|
16
16
|
__all__ = (
|
17
17
|
"CementGroutRangeV1",
|
18
18
|
"ConcretePavingRangeV1",
|
19
|
+
"ConcreteRangeV1",
|
19
20
|
"FlowableFillRangeV1",
|
20
21
|
"OilPatchRangeV1",
|
21
22
|
"ReadyMixRangeV1",
|
22
23
|
"ShotcreteRangeV1",
|
23
|
-
"ConcreteRangeV1",
|
24
24
|
)
|
25
25
|
|
26
26
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
@@ -124,6 +124,27 @@ class ShotcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
124
124
|
_EXT_VERSION = "1.0"
|
125
125
|
|
126
126
|
|
127
|
+
class OtherConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
128
|
+
"""
|
129
|
+
Other Concrete.
|
130
|
+
|
131
|
+
Range version.
|
132
|
+
"""
|
133
|
+
|
134
|
+
_EXT_VERSION = "1.0"
|
135
|
+
|
136
|
+
|
137
|
+
class CellularConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
138
|
+
"""
|
139
|
+
Cellular concrete is typically composed of cementitious material, water, and pre-formed foam with air entrainment.
|
140
|
+
|
141
|
+
Such a product is a homogeneous void or cell structure.
|
142
|
+
It is self-compacting and can be pumped over extensive heights and distances.
|
143
|
+
"""
|
144
|
+
|
145
|
+
_EXT_VERSION = "1.0"
|
146
|
+
|
147
|
+
|
127
148
|
class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
128
149
|
"""
|
129
150
|
Concrete.
|
@@ -134,7 +155,7 @@ class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
134
155
|
Range version.
|
135
156
|
"""
|
136
157
|
|
137
|
-
_EXT_VERSION = "1.
|
158
|
+
_EXT_VERSION = "1.1"
|
138
159
|
|
139
160
|
lightweight: bool | None = pydantic.Field(default=None, description="Product is lightweight")
|
140
161
|
strength_28d: AmountRangePressureMpa | None = pydantic.Field(
|
@@ -186,3 +207,5 @@ class ConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
186
207
|
OilPatch: OilPatchRangeV1 | None = None
|
187
208
|
ReadyMix: ReadyMixRangeV1 | None = None
|
188
209
|
Shotcrete: ShotcreteRangeV1 | None = None
|
210
|
+
OtherConcrete: OtherConcreteRangeV1 | None = None
|
211
|
+
CellularConcrete: CellularConcreteRangeV1 | None = None
|
@@ -14,35 +14,35 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"LowVoltBusesRangeV1",
|
18
|
-
"MedVoltBusesRangeV1",
|
19
17
|
"BatteriesRangeV1",
|
20
|
-
"OtherElectricalPowerStorageRangeV1",
|
21
18
|
"CableTraysRangeV1",
|
19
|
+
"ElectricPowerRangeV1",
|
22
20
|
"ElectricalBusesRangeV1",
|
23
|
-
"
|
24
|
-
"
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"OtherGenerationRangeV1",
|
28
|
-
"PhotovoltaicsRangeV1",
|
29
|
-
"WindTurbinesRangeV1",
|
21
|
+
"ElectricalConduitRangeV1",
|
22
|
+
"ElectricalGenerationEquipmentRangeV1",
|
23
|
+
"ElectricalPowerStorageRangeV1",
|
24
|
+
"ElectricalRangeV1",
|
30
25
|
"ElectricityFromPowerGridRangeV1",
|
31
26
|
"ElectricityFromSpecificGeneratorRangeV1",
|
32
|
-
"
|
27
|
+
"FloorEquipmentBoxesRangeV1",
|
28
|
+
"FueledElectricalGeneratorsRangeV1",
|
33
29
|
"LightbulbsRangeV1",
|
34
30
|
"LightingControlsRangeV1",
|
35
31
|
"LightingFixturesRangeV1",
|
32
|
+
"LightingRangeV1",
|
33
|
+
"LowVoltBusesRangeV1",
|
34
|
+
"LowVoltageElectricalDistributionRangeV1",
|
35
|
+
"MedVoltBusesRangeV1",
|
36
|
+
"OtherElectricalPowerStorageRangeV1",
|
37
|
+
"OtherGenerationRangeV1",
|
36
38
|
"OutdoorLightingRangeV1",
|
39
|
+
"PhotovoltaicsRangeV1",
|
40
|
+
"PowerDistributionUnitsRangeV1",
|
41
|
+
"PowerPurchaseAgreementsRangeV1",
|
42
|
+
"RacewaysRangeV1",
|
37
43
|
"SpecialtyLightingRangeV1",
|
38
44
|
"TaskLightingRangeV1",
|
39
|
-
"
|
40
|
-
"LowVoltageElectricalDistributionRangeV1",
|
41
|
-
"ElectricalGenerationEquipmentRangeV1",
|
42
|
-
"ElectricPowerRangeV1",
|
43
|
-
"LightingRangeV1",
|
44
|
-
"ElectricalConduitRangeV1",
|
45
|
-
"ElectricalRangeV1",
|
45
|
+
"WindTurbinesRangeV1",
|
46
46
|
)
|
47
47
|
|
48
48
|
import pydantic
|
@@ -18,8 +18,8 @@ __all__ = (
|
|
18
18
|
"ElectricalInsulatorsRangeV1",
|
19
19
|
"ElectricalSubstationsRangeV1",
|
20
20
|
"ElectricalSwitchgearRangeV1",
|
21
|
-
"PowerCablingRangeV1",
|
22
21
|
"ElectricalTransmissionAndDistributionEquipmentRangeV1",
|
22
|
+
"PowerCablingRangeV1",
|
23
23
|
)
|
24
24
|
|
25
25
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
import pydantic as pyd
|
17
|
+
|
18
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
19
|
+
from openepd.model.validation.quantity import AmountRangePressureMpa
|
20
|
+
|
21
|
+
|
22
|
+
class ConcretePaversRangeV1(BaseOpenEpdHierarchicalSpec):
|
23
|
+
"""
|
24
|
+
Segmental units of concrete of standardized sizes and shapes for use in paving applications.
|
25
|
+
|
26
|
+
Includes pavers and paving slabs.
|
27
|
+
"""
|
28
|
+
|
29
|
+
_EXT_VERSION = "1.0"
|
30
|
+
|
31
|
+
compressive_strength: AmountRangePressureMpa | None = pyd.Field(
|
32
|
+
default=None,
|
33
|
+
description=(
|
34
|
+
"Unit strength in MPa, ksi, or psi. "
|
35
|
+
"This is the net compressive strength, also known as unit strength, as opposed to f′ₘ (f prime m) which is "
|
36
|
+
"the strength of the completed wall module."
|
37
|
+
),
|
38
|
+
)
|
39
|
+
white_cement: bool | None = pyd.Field(default=None, description="CMU using some portion of white cement")
|
40
|
+
|
41
|
+
|
42
|
+
class ExteriorImprovementsRangeV1(BaseOpenEpdHierarchicalSpec):
|
43
|
+
"""Products that alter the exterior appearance of a lot or its structures."""
|
44
|
+
|
45
|
+
_EXT_VERSION = "1.0"
|
46
|
+
|
47
|
+
ConcretePavers: ConcretePaversRangeV1 | None = None
|
@@ -15,33 +15,33 @@
|
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
17
|
"AccessFlooringRangeV1",
|
18
|
-
"CarpetRangeV1",
|
19
|
-
"LaminateRangeV1",
|
20
|
-
"OtherFlooringRangeV1",
|
21
|
-
"ResilientFlooringRangeV1",
|
22
|
-
"WallBaseRangeV1",
|
23
|
-
"WoodFlooringRangeV1",
|
24
18
|
"AcousticalCeilingsRangeV1",
|
25
|
-
"CeramicTileRangeV1",
|
26
|
-
"GaugedTileRangeV1",
|
27
|
-
"GlassTileRangeV1",
|
28
|
-
"GypsumSupportsRangeV1",
|
29
|
-
"FlooringRangeV1",
|
30
|
-
"CeilingPanelRangeV1",
|
31
19
|
"BackingAndUnderlayRangeV1",
|
20
|
+
"CarpetRangeV1",
|
21
|
+
"CeilingPanelRangeV1",
|
32
22
|
"CementBoardRangeV1",
|
33
|
-
"
|
23
|
+
"CeramicTileRangeV1",
|
34
24
|
"DeckingBoardsRangeV1",
|
25
|
+
"FinishesRangeV1",
|
26
|
+
"FlooringRangeV1",
|
27
|
+
"GaugedTileRangeV1",
|
35
28
|
"GlassFiberReinforcedGypsumFabricationsRangeV1",
|
29
|
+
"GlassTileRangeV1",
|
36
30
|
"GypsumRangeV1",
|
31
|
+
"GypsumSupportsRangeV1",
|
32
|
+
"LaminateRangeV1",
|
37
33
|
"MirrorsRangeV1",
|
34
|
+
"OtherFlooringRangeV1",
|
35
|
+
"PaintByAreaRangeV1",
|
38
36
|
"PaintByMassRangeV1",
|
39
37
|
"PaintByVolumeRangeV1",
|
40
|
-
"PaintByAreaRangeV1",
|
41
38
|
"PaintingAndCoatingRangeV1",
|
42
|
-
"WallFinishesRangeV1",
|
43
39
|
"PlasterRangeV1",
|
44
|
-
"
|
40
|
+
"ResilientFlooringRangeV1",
|
41
|
+
"TilingRangeV1",
|
42
|
+
"WallBaseRangeV1",
|
43
|
+
"WallFinishesRangeV1",
|
44
|
+
"WoodFlooringRangeV1",
|
45
45
|
)
|
46
46
|
|
47
47
|
import pydantic
|
@@ -50,10 +50,6 @@ from openepd.model.common import RangeAmount, RangeFloat, RangeInt, RangeRatioFl
|
|
50
50
|
from openepd.model.org import OrgRef
|
51
51
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
52
52
|
from openepd.model.specs.enums import (
|
53
|
-
AccessFlooringCoreMaterial,
|
54
|
-
AccessFlooringFinishMaterial,
|
55
|
-
AccessFlooringSeismicRating,
|
56
|
-
AccessFlooringStringers,
|
57
53
|
AllFabrication,
|
58
54
|
CarpetFormFactor,
|
59
55
|
CarpetIntendedApplication,
|
@@ -76,11 +72,10 @@ from openepd.model.specs.enums import (
|
|
76
72
|
WoodFlooringFabrication,
|
77
73
|
WoodFlooringTimberSpecies,
|
78
74
|
)
|
75
|
+
from openepd.model.specs.range.mixins.access_flooring_mixin import AccessFlooringRangeMixin
|
79
76
|
from openepd.model.validation.quantity import (
|
80
|
-
AmountRangeForce,
|
81
77
|
AmountRangeGWP,
|
82
78
|
AmountRangeLengthMm,
|
83
|
-
AmountRangePressureMpa,
|
84
79
|
AmountRangeRFactor,
|
85
80
|
AmountRangeYarnWeight,
|
86
81
|
)
|
@@ -88,7 +83,7 @@ from openepd.model.validation.quantity import (
|
|
88
83
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
89
84
|
|
90
85
|
|
91
|
-
class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
86
|
+
class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec, AccessFlooringRangeMixin):
|
92
87
|
"""
|
93
88
|
Elevated floor system built on top of concrete slab surface.
|
94
89
|
|
@@ -100,22 +95,6 @@ class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
100
95
|
|
101
96
|
_EXT_VERSION = "1.0"
|
102
97
|
|
103
|
-
core_material: list[AccessFlooringCoreMaterial] | None = pydantic.Field(default=None, description="")
|
104
|
-
finish_material: list[AccessFlooringFinishMaterial] | None = pydantic.Field(default=None, description="")
|
105
|
-
stringers: list[AccessFlooringStringers] | None = pydantic.Field(default=None, description="")
|
106
|
-
seismic_rating: list[AccessFlooringSeismicRating] | None = pydantic.Field(default=None, description="")
|
107
|
-
magnetically_attached_finish: bool | None = pydantic.Field(default=None, description="")
|
108
|
-
permanent_finish: bool | None = pydantic.Field(default=None, description="")
|
109
|
-
drylay: bool | None = pydantic.Field(default=None, description="")
|
110
|
-
adjustable_height: bool | None = pydantic.Field(default=None, description="")
|
111
|
-
fixed_height: bool | None = pydantic.Field(default=None, description="")
|
112
|
-
finished_floor_height: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
113
|
-
panel_thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
114
|
-
concentrated_load: AmountRangePressureMpa | None = pydantic.Field(default=None, description="")
|
115
|
-
uniform_load: AmountRangePressureMpa | None = pydantic.Field(default=None, description="")
|
116
|
-
rolling_load_10_pass: AmountRangeForce | None = pydantic.Field(default=None, description="")
|
117
|
-
rolling_load_10000_pass: AmountRangeForce | None = pydantic.Field(default=None, description="")
|
118
|
-
|
119
98
|
|
120
99
|
class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
|
121
100
|
"""
|
@@ -377,7 +356,7 @@ class CementBoardRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
377
356
|
Range version.
|
378
357
|
"""
|
379
358
|
|
380
|
-
_EXT_VERSION = "1.
|
359
|
+
_EXT_VERSION = "1.1"
|
381
360
|
|
382
361
|
thickness: list[CementBoardThickness] | None = pydantic.Field(default=None, description="")
|
383
362
|
|
@@ -14,11 +14,11 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"IntumescentFireproofingRangeV1",
|
18
|
-
"SprayFireproofingRangeV1",
|
19
17
|
"AppliedFireproofingRangeV1",
|
20
|
-
"FirestoppingRangeV1",
|
21
18
|
"FireAndSmokeProtectionRangeV1",
|
19
|
+
"FirestoppingRangeV1",
|
20
|
+
"IntumescentFireproofingRangeV1",
|
21
|
+
"SprayFireproofingRangeV1",
|
22
22
|
)
|
23
23
|
|
24
24
|
import pydantic
|
@@ -14,22 +14,22 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"DemountablePartitionTrackRangeV1",
|
18
17
|
"ChairsRangeV1",
|
18
|
+
"ClosedStorageFurnitureRangeV1",
|
19
19
|
"CountertopsRangeV1",
|
20
|
+
"DemountablePartitionTrackRangeV1",
|
20
21
|
"DemountablePartitionsRangeV1",
|
21
|
-
"
|
22
|
-
"OpenStorageFurnitureRangeV1",
|
23
|
-
"ClosedStorageFurnitureRangeV1",
|
24
|
-
"RetractableStorageFurnitureRangeV1",
|
22
|
+
"FurnishingsRangeV1",
|
25
23
|
"MobileStorageFurnitureRangeV1",
|
26
|
-
"
|
24
|
+
"OpenStorageFurnitureRangeV1",
|
25
|
+
"OtherFurnishingsRangeV1",
|
27
26
|
"OtherStorageFurnitureRangeV1",
|
27
|
+
"RetractableStorageFurnitureRangeV1",
|
28
28
|
"StorageFurnitureRangeV1",
|
29
29
|
"TablesRangeV1",
|
30
|
+
"WallMountedStorageShelvingRangeV1",
|
30
31
|
"WorkSurfacesRangeV1",
|
31
32
|
"WorkspacesRangeV1",
|
32
|
-
"FurnishingsRangeV1",
|
33
33
|
)
|
34
34
|
|
35
35
|
import pydantic
|
@@ -14,16 +14,16 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"CementRangeV1",
|
18
|
-
"MasonryCementRangeV1",
|
19
|
-
"SupplementaryCementitiousMaterialsRangeV1",
|
20
17
|
"AccessFlooringPedestalsRangeV1",
|
21
18
|
"CarpetBackingRangeV1",
|
22
19
|
"CarpetFiberRangeV1",
|
20
|
+
"CementRangeV1",
|
23
21
|
"CementitiousMaterialsRangeV1",
|
24
22
|
"ConcreteAdmixturesRangeV1",
|
25
|
-
"TextilesRangeV1",
|
26
23
|
"ManufacturingInputsRangeV1",
|
24
|
+
"MasonryCementRangeV1",
|
25
|
+
"SupplementaryCementitiousMaterialsRangeV1",
|
26
|
+
"TextilesRangeV1",
|
27
27
|
)
|
28
28
|
|
29
29
|
import pydantic
|
@@ -42,6 +42,7 @@ from openepd.model.specs.enums import (
|
|
42
42
|
MasonryCementAstmC91Type,
|
43
43
|
TextilesFabricType,
|
44
44
|
)
|
45
|
+
from openepd.model.specs.range.mixins.access_flooring_mixin import AccessFlooringRangeMixin
|
45
46
|
|
46
47
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
47
48
|
|
@@ -170,6 +171,16 @@ class TextilesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
170
171
|
fabric_type: list[TextilesFabricType] | None = pydantic.Field(default=None, description="")
|
171
172
|
|
172
173
|
|
174
|
+
class AccessFlooringPanelsRangeV1(BaseOpenEpdHierarchicalSpec, AccessFlooringRangeMixin):
|
175
|
+
"""
|
176
|
+
Part of an access floor system.
|
177
|
+
|
178
|
+
Panels are laid on top of an access floor pedestal, creating a finish floor.
|
179
|
+
"""
|
180
|
+
|
181
|
+
_EXT_VERSION = "1.0"
|
182
|
+
|
183
|
+
|
173
184
|
class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
|
174
185
|
"""
|
175
186
|
Manufacturing inputs.
|
@@ -180,7 +191,7 @@ class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
180
191
|
Range version.
|
181
192
|
"""
|
182
193
|
|
183
|
-
_EXT_VERSION = "1.
|
194
|
+
_EXT_VERSION = "1.1"
|
184
195
|
|
185
196
|
AccessFlooringPedestals: AccessFlooringPedestalsRangeV1 | None = None
|
186
197
|
CarpetBacking: CarpetBackingRangeV1 | None = None
|
@@ -188,3 +199,4 @@ class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
188
199
|
CementitiousMaterials: CementitiousMaterialsRangeV1 | None = None
|
189
200
|
ConcreteAdmixtures: ConcreteAdmixturesRangeV1 | None = None
|
190
201
|
Textiles: TextilesRangeV1 | None = None
|
202
|
+
AccessFlooringPanels: AccessFlooringPanelsRangeV1 | None = None
|
@@ -14,21 +14,21 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"
|
18
|
-
"HvacVrfIndoorRangeV1",
|
19
|
-
"HvacVrfOutdoorRangeV1",
|
17
|
+
"HvacAHUsRangeV1",
|
20
18
|
"HvacAirDiffusersRangeV1",
|
21
19
|
"HvacAirFiltersRangeV1",
|
22
|
-
"HvacAHUsRangeV1",
|
23
20
|
"HvacBoilersRangeV1",
|
24
21
|
"HvacChillersRangeV1",
|
22
|
+
"HvacDuctsRangeV1",
|
25
23
|
"HvacFansRangeV1",
|
26
|
-
"HvacHeatPumpsRangeV1",
|
27
24
|
"HvacHeatExRangeV1",
|
25
|
+
"HvacHeatPumpsRangeV1",
|
28
26
|
"HvacPumpsRangeV1",
|
29
27
|
"HvacRTUsRangeV1",
|
28
|
+
"HvacVrfControlRangeV1",
|
29
|
+
"HvacVrfIndoorRangeV1",
|
30
|
+
"HvacVrfOutdoorRangeV1",
|
30
31
|
"HvacVrfSystemsRangeV1",
|
31
|
-
"HvacDuctsRangeV1",
|
32
32
|
"MechanicalRangeV1",
|
33
33
|
)
|
34
34
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2025 by C Change Labs Inc. www.c-change-labs.com
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
import pydantic as pyd
|
17
|
+
|
18
|
+
from openepd.model.specs.base import BaseOpenEpdSpec
|
19
|
+
from openepd.model.specs.enums import (
|
20
|
+
AccessFlooringCoreMaterial,
|
21
|
+
AccessFlooringFinishMaterial,
|
22
|
+
AccessFlooringSeismicRating,
|
23
|
+
AccessFlooringStringers,
|
24
|
+
)
|
25
|
+
from openepd.model.validation.quantity import AmountRangeForce, AmountRangeLengthMm, AmountRangePressureMpa
|
26
|
+
|
27
|
+
|
28
|
+
class AccessFlooringRangeMixin(BaseOpenEpdSpec):
|
29
|
+
core_material: list[AccessFlooringCoreMaterial] | None = pyd.Field(default=None, description="")
|
30
|
+
finish_material: list[AccessFlooringFinishMaterial] | None = pyd.Field(default=None, description="")
|
31
|
+
stringers: list[AccessFlooringStringers] | None = pyd.Field(default=None, description="")
|
32
|
+
seismic_rating: list[AccessFlooringSeismicRating] | None = pyd.Field(default=None, description="")
|
33
|
+
magnetically_attached_finish: bool | None = pyd.Field(default=None, description="")
|
34
|
+
permanent_finish: bool | None = pyd.Field(default=None, description="")
|
35
|
+
drylay: bool | None = pyd.Field(default=None, description="")
|
36
|
+
adjustable_height: bool | None = pyd.Field(default=None, description="")
|
37
|
+
fixed_height: bool | None = pyd.Field(default=None, description="")
|
38
|
+
finished_floor_height: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
39
|
+
panel_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
40
|
+
concentrated_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
|
41
|
+
uniform_load: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
|
42
|
+
rolling_load_10_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
|
43
|
+
rolling_load_10000_pass: AmountRangeForce | None = pyd.Field(default=None, description="")
|
@@ -14,14 +14,14 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"PDURangeV1",
|
18
17
|
"CabinetsRacksAndEnclosuresRangeV1",
|
18
|
+
"CommunicationsConduitRangeV1",
|
19
19
|
"DataCablingRangeV1",
|
20
20
|
"FloorBoxesAndAccessoriesRangeV1",
|
21
|
+
"NetworkInfrastructureRangeV1",
|
21
22
|
"NetworkingCableTraysRangeV1",
|
22
23
|
"NetworkingRacewaysRangeV1",
|
23
|
-
"
|
24
|
-
"NetworkInfrastructureRangeV1",
|
24
|
+
"PDURangeV1",
|
25
25
|
)
|
26
26
|
|
27
27
|
import pydantic
|
@@ -14,34 +14,34 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
-
"
|
18
|
-
"
|
19
|
-
"
|
20
|
-
"SlidingGlassDoorsRangeV1",
|
17
|
+
"CurtainWallsRangeV1",
|
18
|
+
"DoorsAndFramesRangeV1",
|
19
|
+
"EntrancesRangeV1",
|
21
20
|
"FenestrationAccessoriesRangeV1",
|
22
21
|
"FenestrationFramingRangeV1",
|
23
22
|
"FenestrationHardwareRangeV1",
|
23
|
+
"FenestrationPartsRangeV1",
|
24
24
|
"FlatGlassPanesRangeV1",
|
25
|
-
"
|
25
|
+
"GlassPanesRangeV1",
|
26
26
|
"GlazedDoorsRangeV1",
|
27
|
-
"
|
28
|
-
"
|
27
|
+
"GlazingRangeV1",
|
28
|
+
"InsulatingGlazingUnitsRangeV1",
|
29
29
|
"IntegratedDoorsOpeningAssembliesRangeV1",
|
30
30
|
"MetalDoorAndFramesRangeV1",
|
31
|
-
"SpecialtyDoorsAndFramesRangeV1",
|
32
|
-
"WoodDoorsRangeV1",
|
33
|
-
"FenestrationPartsRangeV1",
|
34
|
-
"GlassPanesRangeV1",
|
35
31
|
"NAFSFenestrationRangeV1",
|
36
|
-
"
|
37
|
-
"
|
38
|
-
"
|
39
|
-
"
|
40
|
-
"
|
32
|
+
"OpeningsRangeV1",
|
33
|
+
"PanelDoorsRangeV1",
|
34
|
+
"PressureResistantDoorsRangeV1",
|
35
|
+
"ProcessedNonInsulatingGlassPanesRangeV1",
|
36
|
+
"SlidingGlassDoorsRangeV1",
|
37
|
+
"SpecialFunctionDoorsRangeV1",
|
38
|
+
"SpecialtyDoorsAndFramesRangeV1",
|
41
39
|
"StorefrontsRangeV1",
|
42
40
|
"TranslucentWallAndRoofAssembliesRangeV1",
|
41
|
+
"UnitSkylightsRangeV1",
|
43
42
|
"WindowWallAssembliesRangeV1",
|
44
|
-
"
|
43
|
+
"WindowsRangeV1",
|
44
|
+
"WoodDoorsRangeV1",
|
45
45
|
)
|
46
46
|
|
47
47
|
import pydantic
|
@@ -17,17 +17,17 @@ __all__ = (
|
|
17
17
|
"AuxiliariesRangeV1",
|
18
18
|
"CleaningProductsRangeV1",
|
19
19
|
"ClothingRangeV1",
|
20
|
-
"FoodBeverageRangeV1",
|
21
|
-
"TransportationInfrastructureRangeV1",
|
22
|
-
"UnsupportedRangeV1",
|
23
20
|
"CopperRangeV1",
|
24
21
|
"EarthworkRangeV1",
|
25
22
|
"ExteriorSunControlDevicesRangeV1",
|
23
|
+
"FoodBeverageRangeV1",
|
26
24
|
"GypsumFinishingCompoundsRangeV1",
|
25
|
+
"OtherMaterialsRangeV1",
|
27
26
|
"ProfilesRangeV1",
|
27
|
+
"TransportationInfrastructureRangeV1",
|
28
28
|
"UnknownRangeV1",
|
29
|
+
"UnsupportedRangeV1",
|
29
30
|
"ZincRangeV1",
|
30
|
-
"OtherMaterialsRangeV1",
|
31
31
|
)
|
32
32
|
|
33
33
|
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
@@ -16,17 +16,17 @@
|
|
16
16
|
__all__ = (
|
17
17
|
"BathtubsRangeV1",
|
18
18
|
"FaucetsRangeV1",
|
19
|
-
"OtherPlumbingFixturesRangeV1",
|
20
|
-
"WaterClosetsRangeV1",
|
21
19
|
"FireProtectionPipingRangeV1",
|
22
20
|
"FireSprinklersRangeV1",
|
23
|
-
"StorageTanksRangeV1",
|
24
|
-
"WaterHeatersRangeV1",
|
25
|
-
"PlumbingFixturesRangeV1",
|
26
21
|
"FireSuppressionRangeV1",
|
22
|
+
"OtherPlumbingFixturesRangeV1",
|
27
23
|
"PipingRangeV1",
|
28
24
|
"PlumbingEquipmentRangeV1",
|
25
|
+
"PlumbingFixturesRangeV1",
|
29
26
|
"PlumbingRangeV1",
|
27
|
+
"StorageTanksRangeV1",
|
28
|
+
"WaterClosetsRangeV1",
|
29
|
+
"WaterHeatersRangeV1",
|
30
30
|
)
|
31
31
|
|
32
32
|
import pydantic
|