openepd 7.1.0__py3-none-any.whl → 7.3.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 +47 -6
- openepd/bundle/model.py +1 -0
- openepd/bundle/reader.py +35 -10
- openepd/bundle/writer.py +21 -12
- 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.3.0.dist-info}/METADATA +23 -13
- {openepd-7.1.0.dist-info → openepd-7.3.0.dist-info}/RECORD +78 -67
- {openepd-7.1.0.dist-info → openepd-7.3.0.dist-info}/WHEEL +1 -1
- {openepd-7.1.0.dist-info → openepd-7.3.0.dist-info}/LICENSE +0 -0
openepd/model/specs/__init__.py
CHANGED
@@ -14,6 +14,43 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
+
__all__ = [
|
18
|
+
"CMUV1",
|
19
|
+
"AccessoriesV1",
|
20
|
+
"AggregatesV1",
|
21
|
+
"AluminiumV1",
|
22
|
+
"AsphaltV1",
|
23
|
+
"BulkMaterialsV1",
|
24
|
+
"CastDecksAndUnderlaymentV1",
|
25
|
+
"CladdingV1",
|
26
|
+
"ConcreteV1",
|
27
|
+
"ConveyingEquipmentV1",
|
28
|
+
"ElectricalTransmissionAndDistributionEquipmentV1",
|
29
|
+
"ElectricalV1",
|
30
|
+
"ElectricityV1",
|
31
|
+
"FinishesV1",
|
32
|
+
"FireAndSmokeProtectionV1",
|
33
|
+
"FurnishingsV1",
|
34
|
+
"GroutingV1",
|
35
|
+
"ManufacturingInputsV1",
|
36
|
+
"MasonryV1",
|
37
|
+
"MaterialHandlingV1",
|
38
|
+
"MechanicalInsulationV1",
|
39
|
+
"MechanicalV1",
|
40
|
+
"NetworkInfrastructureV1",
|
41
|
+
"OpeningsV1",
|
42
|
+
"OtherElectricalEquipmentV1",
|
43
|
+
"OtherMaterialsV1",
|
44
|
+
"PlumbingV1",
|
45
|
+
"PrecastConcreteV1",
|
46
|
+
"SheathingV1",
|
47
|
+
"SteelV1",
|
48
|
+
"ThermalMoistureProtectionV1",
|
49
|
+
"UtilityPipingV1",
|
50
|
+
"WoodJoistsV1",
|
51
|
+
"WoodV1",
|
52
|
+
]
|
53
|
+
|
17
54
|
from openepd.model.specs.singular.accessories import AccessoriesV1
|
18
55
|
from openepd.model.specs.singular.aggregates import AggregatesV1
|
19
56
|
from openepd.model.specs.singular.aluminium import AluminiumV1
|
openepd/model/specs/asphalt.py
CHANGED
@@ -51,19 +51,19 @@ class AsphaltV1(BaseOpenEpdHierarchicalSpec):
|
|
51
51
|
|
52
52
|
asphalt_rap: float | None = pydantic.Field(
|
53
53
|
default=None,
|
54
|
-
description="Percent of mixture that has been replaced by recycled
|
54
|
+
description="Percent of mixture that has been replaced by recycled asphalt pavement (RAP).",
|
55
55
|
ge=0,
|
56
56
|
le=1,
|
57
57
|
)
|
58
58
|
asphalt_ras: float | None = pydantic.Field(
|
59
59
|
default=None,
|
60
|
-
description="Percent of mixture that has been replaced by recycled
|
60
|
+
description="Percent of mixture that has been replaced by recycled asphalt shingles (RAS).",
|
61
61
|
ge=0,
|
62
62
|
le=1,
|
63
63
|
)
|
64
64
|
asphalt_ground_tire_rubber: float | None = pydantic.Field(
|
65
65
|
default=None,
|
66
|
-
description="Percent of mixture that has been replaced
|
66
|
+
description="Percent of mixture that has been replaced by ground tire rubber (GTR).",
|
67
67
|
ge=0,
|
68
68
|
le=1,
|
69
69
|
)
|
openepd/model/specs/base.py
CHANGED
@@ -40,7 +40,8 @@ class BaseOpenEpdHierarchicalSpec(BaseOpenEpdSpec, WithExtVersionMixin):
|
|
40
40
|
# ensure that all the concrete spec objects fail on creations if they dont have _EXT_VERSION declared to
|
41
41
|
# something meaningful
|
42
42
|
if not hasattr(self, "_EXT_VERSION") or self._EXT_VERSION is None:
|
43
|
-
|
43
|
+
msg = f"Class {self.__class__} must declare an extension version"
|
44
|
+
raise ValueError(msg)
|
44
45
|
Version.parse_version(self._EXT_VERSION) # validate format correctness
|
45
46
|
super().__init__(**{"ext_version": self._EXT_VERSION, **data})
|
46
47
|
|
openepd/model/specs/enums.py
CHANGED
@@ -2017,7 +2017,8 @@ class InsulatingMaterial(StrEnum):
|
|
2017
2017
|
- Polyisocyanurate: Polyisocyanurate
|
2018
2018
|
- Expanded Polyethylene: Expanded Polyethylene
|
2019
2019
|
- EPS: EPS
|
2020
|
-
-
|
2020
|
+
- Wood Fiber = Wood Fiber
|
2021
|
+
- Other: Other
|
2021
2022
|
|
2022
2023
|
"""
|
2023
2024
|
|
@@ -2029,6 +2030,8 @@ class InsulatingMaterial(StrEnum):
|
|
2029
2030
|
POLYISOCYANURATE = "Polyisocyanurate"
|
2030
2031
|
EXPANDED_POLYETHYLENE = "Expanded Polyethylene"
|
2031
2032
|
EPS = "EPS"
|
2033
|
+
WOOD_FIBER = "Wood Fiber"
|
2034
|
+
POLYURETHANE = "Polyurethane"
|
2032
2035
|
OTHER = "Other"
|
2033
2036
|
|
2034
2037
|
|
@@ -2439,13 +2442,18 @@ class CementBoardThickness(StrEnum):
|
|
2439
2442
|
INCH_3_8 = '3/8"'
|
2440
2443
|
INCH_1_2 = '1/2"'
|
2441
2444
|
INCH_5_8 = '5/8"'
|
2445
|
+
MM_4 = "4 mm"
|
2446
|
+
MM_6 = "6 mm"
|
2442
2447
|
MM_6_5 = "6.5 mm"
|
2443
2448
|
MM_8_0 = "8.0 mm"
|
2444
2449
|
MM_9_0 = "9.0 mm"
|
2445
2450
|
MM_9_5 = "9.5 mm"
|
2451
|
+
MM_10 = "10 mm"
|
2452
|
+
MM_12 = "12 mm"
|
2446
2453
|
MM_12_5 = "12.5 mm"
|
2447
2454
|
MM_13 = "13 mm"
|
2448
2455
|
MM_15 = "15 mm"
|
2456
|
+
MM_16 = "16 mm"
|
2449
2457
|
MM_18 = "18 mm"
|
2450
2458
|
|
2451
2459
|
|
@@ -13,9 +13,9 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
-
__all__ =
|
17
|
-
|
18
|
-
|
16
|
+
__all__ = [
|
17
|
+
"SpecsRange",
|
18
|
+
]
|
19
19
|
|
20
20
|
|
21
21
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
@@ -33,6 +33,7 @@ from .conveying_equipment import ConveyingEquipmentRangeV1
|
|
33
33
|
from .electrical import ElectricalRangeV1
|
34
34
|
from .electrical_transmission_and_distribution_equipment import ElectricalTransmissionAndDistributionEquipmentRangeV1
|
35
35
|
from .electricity import ElectricityRangeV1
|
36
|
+
from .exterior_improvements import ExteriorImprovementsRangeV1
|
36
37
|
from .finishes import FinishesRangeV1
|
37
38
|
from .fire_and_smoke_protection import FireAndSmokeProtectionRangeV1
|
38
39
|
from .furnishings import FurnishingsRangeV1
|
@@ -99,3 +100,4 @@ class SpecsRange(BaseOpenEpdHierarchicalSpec):
|
|
99
100
|
MechanicalInsulation: MechanicalInsulationRangeV1 | None = None
|
100
101
|
OtherElectricalEquipment: OtherElectricalEquipmentRangeV1 | None = None
|
101
102
|
WoodJoists: WoodJoistsRangeV1 | None = None
|
103
|
+
ExteriorImprovements: ExteriorImprovementsRangeV1 | None = None
|
@@ -14,12 +14,12 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
__all__ = (
|
17
|
+
"AccessoriesRangeV1",
|
17
18
|
"BlanketFacingRangeV1",
|
18
19
|
"DoorsHardwareRangeV1",
|
19
20
|
"FlooringAccessoriesRangeV1",
|
20
21
|
"MortarRangeV1",
|
21
22
|
"TileGroutRangeV1",
|
22
|
-
"AccessoriesRangeV1",
|
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
|
@@ -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
|
+
#
|