openepd 6.13.2__py3-none-any.whl → 7.0.1__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/__init__.py +0 -6
- openepd/__version__.py +1 -1
- openepd/api/average_dataset/generic_estimate_sync_api.py +11 -10
- openepd/api/average_dataset/industry_epd_sync_api.py +9 -8
- openepd/api/base_sync_client.py +53 -9
- openepd/api/category/sync_api.py +1 -1
- openepd/api/dto/base.py +4 -4
- openepd/api/dto/common.py +24 -16
- openepd/api/dto/meta.py +15 -11
- openepd/api/dto/mf.py +9 -8
- openepd/api/epd/dto.py +43 -33
- openepd/api/epd/sync_api.py +9 -9
- openepd/api/pcr/sync_api.py +2 -2
- openepd/bundle/model.py +11 -10
- openepd/bundle/reader.py +12 -5
- openepd/bundle/writer.py +17 -6
- openepd/model/base.py +61 -44
- openepd/model/category.py +13 -10
- openepd/model/common.py +107 -59
- openepd/model/declaration.py +93 -64
- openepd/model/epd.py +51 -43
- openepd/model/generic_estimate.py +28 -13
- openepd/model/industry_epd.py +15 -9
- openepd/model/lcia.py +161 -136
- openepd/model/org.py +70 -37
- openepd/model/pcr.py +38 -32
- openepd/model/specs/asphalt.py +31 -22
- openepd/model/specs/base.py +14 -11
- openepd/model/specs/concrete.py +60 -39
- openepd/model/specs/range/aggregates.py +9 -9
- openepd/model/specs/range/aluminium.py +7 -7
- openepd/model/specs/range/asphalt.py +22 -19
- openepd/model/specs/range/cladding.py +16 -16
- openepd/model/specs/range/cmu.py +10 -9
- openepd/model/specs/range/concrete.py +36 -27
- openepd/model/specs/range/conveying_equipment.py +16 -15
- openepd/model/specs/range/electrical.py +24 -22
- openepd/model/specs/range/finishes.py +109 -104
- openepd/model/specs/range/fire_and_smoke_protection.py +7 -7
- openepd/model/specs/range/furnishings.py +16 -12
- openepd/model/specs/range/manufacturing_inputs.py +16 -16
- openepd/model/specs/range/masonry.py +16 -16
- openepd/model/specs/range/mechanical.py +47 -47
- openepd/model/specs/range/mechanical_insulation.py +7 -7
- openepd/model/specs/range/network_infrastructure.py +54 -46
- openepd/model/specs/range/openings.py +36 -31
- openepd/model/specs/range/plumbing.py +15 -13
- openepd/model/specs/range/precast_concrete.py +20 -16
- openepd/model/specs/range/sheathing.py +18 -18
- openepd/model/specs/range/steel.py +27 -25
- openepd/model/specs/range/thermal_moisture_protection.py +20 -20
- openepd/model/specs/range/utility_piping.py +9 -9
- openepd/model/specs/range/wood.py +19 -19
- openepd/model/specs/range/wood_joists.py +8 -8
- openepd/model/specs/singular/__init__.py +9 -5
- openepd/model/specs/singular/aggregates.py +22 -15
- openepd/model/specs/singular/aluminium.py +20 -5
- openepd/model/specs/singular/asphalt.py +44 -20
- openepd/model/specs/singular/cladding.py +38 -23
- openepd/model/specs/singular/cmu.py +26 -11
- openepd/model/specs/singular/common.py +3 -2
- openepd/model/specs/singular/concrete.py +85 -48
- openepd/model/specs/singular/conveying_equipment.py +30 -17
- openepd/model/specs/singular/deprecated/__init__.py +3 -2
- openepd/model/specs/singular/deprecated/concrete.py +68 -33
- openepd/model/specs/singular/deprecated/steel.py +28 -15
- openepd/model/specs/singular/electrical.py +69 -41
- openepd/model/specs/singular/finishes.py +250 -140
- openepd/model/specs/singular/fire_and_smoke_protection.py +9 -6
- openepd/model/specs/singular/furnishings.py +16 -14
- openepd/model/specs/singular/manufacturing_inputs.py +23 -14
- openepd/model/specs/singular/masonry.py +66 -21
- openepd/model/specs/singular/mechanical.py +48 -47
- openepd/model/specs/singular/mechanical_insulation.py +7 -6
- openepd/model/specs/singular/mixins/conduit_mixin.py +13 -10
- openepd/model/specs/singular/network_infrastructure.py +111 -52
- openepd/model/specs/singular/openings.py +127 -95
- openepd/model/specs/singular/plumbing.py +15 -12
- openepd/model/specs/singular/precast_concrete.py +68 -54
- openepd/model/specs/singular/sheathing.py +47 -27
- openepd/model/specs/singular/steel.py +69 -45
- openepd/model/specs/singular/thermal_moisture_protection.py +36 -20
- openepd/model/specs/singular/utility_piping.py +11 -8
- openepd/model/specs/singular/wood.py +48 -24
- openepd/model/specs/singular/wood_joists.py +19 -6
- openepd/model/standard.py +15 -8
- openepd/model/validation/common.py +9 -3
- openepd/model/validation/numbers.py +0 -13
- openepd/model/validation/quantity.py +88 -55
- openepd/model/versioning.py +9 -6
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/METADATA +2 -2
- openepd-7.0.1.dist-info/RECORD +141 -0
- openepd/compat/__init__.py +0 -15
- openepd/compat/compat_functional_validators.py +0 -25
- openepd/compat/pydantic.py +0 -30
- openepd/patch_pydantic.py +0 -108
- openepd-6.13.2.dist-info/RECORD +0 -145
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/LICENSE +0 -0
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/WHEEL +0 -0
@@ -32,10 +32,8 @@ __all__ = (
|
|
32
32
|
"MechanicalRangeV1",
|
33
33
|
)
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
import pydantic
|
37
36
|
|
38
|
-
from openepd.compat.pydantic import pyd
|
39
37
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
40
38
|
from openepd.model.specs.enums import (
|
41
39
|
AhuAirflowControl,
|
@@ -60,6 +58,8 @@ from openepd.model.validation.quantity import (
|
|
60
58
|
AmountRangeVolume,
|
61
59
|
)
|
62
60
|
|
61
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
62
|
+
|
63
63
|
|
64
64
|
class HvacVrfControlRangeV1(BaseOpenEpdHierarchicalSpec):
|
65
65
|
"""
|
@@ -80,11 +80,11 @@ class HvacVrfIndoorRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
80
80
|
|
81
81
|
_EXT_VERSION = "1.0"
|
82
82
|
|
83
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
84
|
-
heating_capacity: AmountRangePower | None =
|
85
|
-
cooling_capacity: AmountRangePower | None =
|
86
|
-
airflow_rate: AmountRangeAirflow | None =
|
87
|
-
air_volume: AmountRangeVolume | None =
|
83
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
84
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
85
|
+
cooling_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
86
|
+
airflow_rate: AmountRangeAirflow | None = pydantic.Field(default=None, description="")
|
87
|
+
air_volume: AmountRangeVolume | None = pydantic.Field(default=None, description="")
|
88
88
|
|
89
89
|
|
90
90
|
class HvacVrfOutdoorRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -96,11 +96,11 @@ class HvacVrfOutdoorRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
96
96
|
|
97
97
|
_EXT_VERSION = "1.0"
|
98
98
|
|
99
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
100
|
-
heating_capacity: AmountRangePower | None =
|
101
|
-
cooling_capacity: AmountRangePower | None =
|
102
|
-
airflow_rate: AmountRangeAirflow | None =
|
103
|
-
air_volume: AmountRangeVolume | None =
|
99
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
100
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
101
|
+
cooling_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
102
|
+
airflow_rate: AmountRangeAirflow | None = pydantic.Field(default=None, description="")
|
103
|
+
air_volume: AmountRangeVolume | None = pydantic.Field(default=None, description="")
|
104
104
|
|
105
105
|
|
106
106
|
class HvacAirDiffusersRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -122,8 +122,8 @@ class HvacAirFiltersRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
122
122
|
|
123
123
|
_EXT_VERSION = "1.0"
|
124
124
|
|
125
|
-
merv_rating: list[AirFiltersMervRating] | None =
|
126
|
-
media_type: list[AirFiltersMediaType] | None =
|
125
|
+
merv_rating: list[AirFiltersMervRating] | None = pydantic.Field(default=None, description="")
|
126
|
+
media_type: list[AirFiltersMediaType] | None = pydantic.Field(default=None, description="")
|
127
127
|
|
128
128
|
|
129
129
|
class HvacAHUsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -138,14 +138,14 @@ class HvacAHUsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
138
138
|
|
139
139
|
_EXT_VERSION = "1.0"
|
140
140
|
|
141
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
142
|
-
installation: list[MechanicalInstallation] | None =
|
143
|
-
airflow_rate: AmountRangeAirflow | None =
|
144
|
-
air_volume: AmountRangeVolume | None =
|
145
|
-
cooling_capacity: AmountRangePower | None =
|
146
|
-
heating_capacity: AmountRangePower | None =
|
147
|
-
airflow_control: list[AhuAirflowControl] | None =
|
148
|
-
zone_control: list[AhuZoneControl] | None =
|
141
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
142
|
+
installation: list[MechanicalInstallation] | None = pydantic.Field(default=None, description="")
|
143
|
+
airflow_rate: AmountRangeAirflow | None = pydantic.Field(default=None, description="")
|
144
|
+
air_volume: AmountRangeVolume | None = pydantic.Field(default=None, description="")
|
145
|
+
cooling_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
146
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
147
|
+
airflow_control: list[AhuAirflowControl] | None = pydantic.Field(default=None, description="")
|
148
|
+
zone_control: list[AhuZoneControl] | None = pydantic.Field(default=None, description="")
|
149
149
|
|
150
150
|
|
151
151
|
class HvacBoilersRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -157,10 +157,10 @@ class HvacBoilersRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
157
157
|
|
158
158
|
_EXT_VERSION = "1.0"
|
159
159
|
|
160
|
-
flow_rate: AmountRangeAreaPerVolume | None =
|
161
|
-
heating_capacity: AmountRangePower | None =
|
162
|
-
configuration: list[BoilerConfiguration] | None =
|
163
|
-
fuel_type: list[BoilerEquipmentFuelType] | None =
|
160
|
+
flow_rate: AmountRangeAreaPerVolume | None = pydantic.Field(default=None, description="")
|
161
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
162
|
+
configuration: list[BoilerConfiguration] | None = pydantic.Field(default=None, description="")
|
163
|
+
fuel_type: list[BoilerEquipmentFuelType] | None = pydantic.Field(default=None, description="")
|
164
164
|
|
165
165
|
|
166
166
|
class HvacChillersRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -175,12 +175,12 @@ class HvacChillersRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
175
175
|
|
176
176
|
_EXT_VERSION = "1.0"
|
177
177
|
|
178
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
179
|
-
installation: list[MechanicalInstallation] | None =
|
180
|
-
heating_capacity: AmountRangePower | None =
|
181
|
-
cooling_capacity: AmountRangePower | None =
|
182
|
-
air_volume: AmountRangeVolume | None =
|
183
|
-
airflow_rate: AmountRangeAirflow | None =
|
178
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
179
|
+
installation: list[MechanicalInstallation] | None = pydantic.Field(default=None, description="")
|
180
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
181
|
+
cooling_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
182
|
+
air_volume: AmountRangeVolume | None = pydantic.Field(default=None, description="")
|
183
|
+
airflow_rate: AmountRangeAirflow | None = pydantic.Field(default=None, description="")
|
184
184
|
|
185
185
|
|
186
186
|
class HvacFansRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -202,12 +202,12 @@ class HvacHeatPumpsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
202
202
|
|
203
203
|
_EXT_VERSION = "1.0"
|
204
204
|
|
205
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
206
|
-
cooling_capacity: AmountRangePower | None =
|
207
|
-
heating_capacity: AmountRangePower | None =
|
208
|
-
air_volume: AmountRangeVolume | None =
|
209
|
-
airflow_rate: AmountRangeAirflow | None =
|
210
|
-
heat_pumps_type: list[HeatPumpType] | None =
|
205
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
206
|
+
cooling_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
207
|
+
heating_capacity: AmountRangePower | None = pydantic.Field(default=None, description="")
|
208
|
+
air_volume: AmountRangeVolume | None = pydantic.Field(default=None, description="")
|
209
|
+
airflow_rate: AmountRangeAirflow | None = pydantic.Field(default=None, description="")
|
210
|
+
heat_pumps_type: list[HeatPumpType] | None = pydantic.Field(default=None, description="")
|
211
211
|
|
212
212
|
|
213
213
|
class HvacHeatExRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -222,8 +222,8 @@ class HvacHeatExRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
222
222
|
|
223
223
|
_EXT_VERSION = "1.0"
|
224
224
|
|
225
|
-
refrigerants: list[MechanicalRefrigerants] | None =
|
226
|
-
heat_exchangers_type: list[HvacHeatExchangersType] | None =
|
225
|
+
refrigerants: list[MechanicalRefrigerants] | None = pydantic.Field(default=None, description="")
|
226
|
+
heat_exchangers_type: list[HvacHeatExchangersType] | None = pydantic.Field(default=None, description="")
|
227
227
|
|
228
228
|
|
229
229
|
class HvacPumpsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -238,9 +238,9 @@ class HvacPumpsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
238
238
|
|
239
239
|
_EXT_VERSION = "1.0"
|
240
240
|
|
241
|
-
flow_rate: AmountRangeAreaPerVolume | None =
|
242
|
-
pump_discharge_pressure: AmountRangePressureMpa | None =
|
243
|
-
pump_horsepower: AmountRangePower | None =
|
241
|
+
flow_rate: AmountRangeAreaPerVolume | None = pydantic.Field(default=None, description="")
|
242
|
+
pump_discharge_pressure: AmountRangePressureMpa | None = pydantic.Field(default=None, description="")
|
243
|
+
pump_horsepower: AmountRangePower | None = pydantic.Field(default=None, description="")
|
244
244
|
|
245
245
|
|
246
246
|
class HvacRTUsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -279,9 +279,9 @@ class HvacDuctsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
279
279
|
|
280
280
|
_EXT_VERSION = "1.0"
|
281
281
|
|
282
|
-
shape: list[HvacDuctShape] | None =
|
283
|
-
material: list[HvacDuctMaterial] | None =
|
284
|
-
type: list[HvacDuctType] | None =
|
282
|
+
shape: list[HvacDuctShape] | None = pydantic.Field(default=None, description="Hvac duct shape")
|
283
|
+
material: list[HvacDuctMaterial] | None = pydantic.Field(default=None, description="Hvac duct material")
|
284
|
+
type: list[HvacDuctType] | None = pydantic.Field(default=None, description="Hvac duct type")
|
285
285
|
|
286
286
|
|
287
287
|
class MechanicalRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -15,15 +15,15 @@
|
|
15
15
|
#
|
16
16
|
__all__ = ("MechanicalInsulationRangeV1",)
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
import pydantic
|
20
19
|
|
21
|
-
from openepd.compat.pydantic import pyd
|
22
20
|
from openepd.model.common import RangeFloat
|
23
21
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
22
|
from openepd.model.specs.enums import InsulatingMaterial, InsulationIntendedApplication
|
25
23
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
26
24
|
|
25
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
26
|
+
|
27
27
|
|
28
28
|
class MechanicalInsulationRangeV1(BaseOpenEpdHierarchicalSpec):
|
29
29
|
"""
|
@@ -36,7 +36,7 @@ class MechanicalInsulationRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
36
36
|
|
37
37
|
_EXT_VERSION = "1.0"
|
38
38
|
|
39
|
-
r_value: RangeFloat | None =
|
40
|
-
material: list[InsulatingMaterial] | None =
|
41
|
-
intended_application: list[InsulationIntendedApplication] | None =
|
42
|
-
thickness_per_declared_unit: AmountRangeLengthMm | None =
|
39
|
+
r_value: RangeFloat | None = pydantic.Field(default=None, description="")
|
40
|
+
material: list[InsulatingMaterial] | None = pydantic.Field(default=None, description="")
|
41
|
+
intended_application: list[InsulationIntendedApplication] | None = pydantic.Field(default=None, description="")
|
42
|
+
thickness_per_declared_unit: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
@@ -24,10 +24,8 @@ __all__ = (
|
|
24
24
|
"NetworkInfrastructureRangeV1",
|
25
25
|
)
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
import pydantic
|
29
28
|
|
30
|
-
from openepd.compat.pydantic import pyd
|
31
29
|
from openepd.model.common import RangeInt
|
32
30
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
33
31
|
from openepd.model.specs.enums import (
|
@@ -45,6 +43,8 @@ from openepd.model.specs.enums import (
|
|
45
43
|
)
|
46
44
|
from openepd.model.validation.quantity import AmountRangeElectricalCurrent, AmountRangeLengthMm, AmountRangeMass
|
47
45
|
|
46
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
47
|
+
|
48
48
|
|
49
49
|
class PDURangeV1(BaseOpenEpdHierarchicalSpec):
|
50
50
|
"""
|
@@ -55,11 +55,11 @@ class PDURangeV1(BaseOpenEpdHierarchicalSpec):
|
|
55
55
|
|
56
56
|
_EXT_VERSION = "1.0"
|
57
57
|
|
58
|
-
amperage: AmountRangeElectricalCurrent | None =
|
59
|
-
outlet_level_metering: bool | None =
|
60
|
-
outlet_level_switching: bool | None =
|
61
|
-
pdu_technology: list[PduTechnology] | None =
|
62
|
-
pdu_outlets: RangeInt | None =
|
58
|
+
amperage: AmountRangeElectricalCurrent | None = pydantic.Field(default=None, description="")
|
59
|
+
outlet_level_metering: bool | None = pydantic.Field(default=None, description="")
|
60
|
+
outlet_level_switching: bool | None = pydantic.Field(default=None, description="")
|
61
|
+
pdu_technology: list[PduTechnology] | None = pydantic.Field(default=None, description="")
|
62
|
+
pdu_outlets: RangeInt | None = pydantic.Field(default=None, description="")
|
63
63
|
|
64
64
|
|
65
65
|
class CabinetsRacksAndEnclosuresRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -71,9 +71,9 @@ class CabinetsRacksAndEnclosuresRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
71
71
|
|
72
72
|
_EXT_VERSION = "1.0"
|
73
73
|
|
74
|
-
static_load: AmountRangeMass | None =
|
75
|
-
total_racking_units: RangeInt | None =
|
76
|
-
rack_type: list[RackType] | None =
|
74
|
+
static_load: AmountRangeMass | None = pydantic.Field(default=None, description="")
|
75
|
+
total_racking_units: RangeInt | None = pydantic.Field(default=None, description="")
|
76
|
+
rack_type: list[RackType] | None = pydantic.Field(default=None, description="")
|
77
77
|
|
78
78
|
|
79
79
|
class DataCablingRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -85,20 +85,20 @@ class DataCablingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
85
85
|
|
86
86
|
_EXT_VERSION = "1.0"
|
87
87
|
|
88
|
-
outdoor: bool | None =
|
89
|
-
cabling_category: list[CablingCategory] | None =
|
90
|
-
fire_rating: list[CablingFireRating] | None =
|
91
|
-
jacket_material: list[CablingJacketMaterial] | None =
|
92
|
-
shielded: bool | None =
|
93
|
-
armored: bool | None =
|
94
|
-
rohs: bool | None =
|
95
|
-
reach: bool | None =
|
96
|
-
zwtl: bool | None =
|
97
|
-
connectorized: bool | None =
|
88
|
+
outdoor: bool | None = pydantic.Field(default=None, description="")
|
89
|
+
cabling_category: list[CablingCategory] | None = pydantic.Field(default=None, description="")
|
90
|
+
fire_rating: list[CablingFireRating] | None = pydantic.Field(default=None, description="")
|
91
|
+
jacket_material: list[CablingJacketMaterial] | None = pydantic.Field(default=None, description="")
|
92
|
+
shielded: bool | None = pydantic.Field(default=None, description="Foil or similar electromagnetic shielding")
|
93
|
+
armored: bool | None = pydantic.Field(default=None, description="Steel or similar physical armor jacket")
|
94
|
+
rohs: bool | None = pydantic.Field(default=None, description="Certified ROHS Compliant")
|
95
|
+
reach: bool | None = pydantic.Field(default=None, description="Certified REACH compliant")
|
96
|
+
zwtl: bool | None = pydantic.Field(default=None, description="Certified ZWTL compliant")
|
97
|
+
connectorized: bool | None = pydantic.Field(
|
98
98
|
default=None,
|
99
99
|
description="This cable is shipped as a specific length with integrated connectors. Impacts include the connectors for the specific cable length. Connectors add impact similar to 0.1-0.5 additional meters of cable",
|
100
100
|
)
|
101
|
-
thin_ethernet: bool | None =
|
101
|
+
thin_ethernet: bool | None = pydantic.Field(
|
102
102
|
default=None,
|
103
103
|
description="At least part of this cable has a reduced outer diameter and thinner wires. Thin ethernet cables have handling advantages and tend to have a reduced impact, but also reduced channel length. See TIA 568.2-D Annex G.",
|
104
104
|
)
|
@@ -115,23 +115,28 @@ class FloorBoxesAndAccessoriesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
115
115
|
|
116
116
|
_EXT_VERSION = "1.0"
|
117
117
|
|
118
|
-
painted: bool | None =
|
119
|
-
fire_classified: bool | None =
|
120
|
-
default=None,
|
118
|
+
painted: bool | None = pydantic.Field(default=None, description="")
|
119
|
+
fire_classified: bool | None = pydantic.Field(
|
120
|
+
default=None,
|
121
|
+
description="Includes hardware to maintain fire rating of the floor",
|
121
122
|
)
|
122
|
-
outdoor: bool | None =
|
123
|
-
raised: bool | None =
|
124
|
-
poke_through: bool | None =
|
125
|
-
default=None,
|
123
|
+
outdoor: bool | None = pydantic.Field(default=None, description="Floor boxes installed in the ground")
|
124
|
+
raised: bool | None = pydantic.Field(default=None, description="Used in raised or computer style flooring")
|
125
|
+
poke_through: bool | None = pydantic.Field(
|
126
|
+
default=None,
|
127
|
+
description="Used primarily in retrofit or renovation and will maintain fire rating of the floor",
|
128
|
+
)
|
129
|
+
cover: bool | None = pydantic.Field(
|
130
|
+
default=None,
|
131
|
+
description="Floor box cover or lid for use with a separate floor box",
|
126
132
|
)
|
127
|
-
|
128
|
-
outlets: RangeInt | None = pyd.Field(
|
133
|
+
outlets: RangeInt | None = pydantic.Field(
|
129
134
|
default=None,
|
130
135
|
description="Number of outlet ports from floor box, including power, data, video, and other connections",
|
131
136
|
)
|
132
|
-
material: list[FloorBoxMaterial] | None =
|
133
|
-
cover_material: list[FloorBoxCoverMaterial] | None =
|
134
|
-
floor_material: list[FloorBoxFloorMaterial] | None =
|
137
|
+
material: list[FloorBoxMaterial] | None = pydantic.Field(default=None, description="")
|
138
|
+
cover_material: list[FloorBoxCoverMaterial] | None = pydantic.Field(default=None, description="")
|
139
|
+
floor_material: list[FloorBoxFloorMaterial] | None = pydantic.Field(default=None, description="")
|
135
140
|
|
136
141
|
|
137
142
|
class NetworkingCableTraysRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -146,12 +151,14 @@ class NetworkingCableTraysRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
146
151
|
|
147
152
|
_EXT_VERSION = "1.0"
|
148
153
|
|
149
|
-
height: AmountRangeLengthMm | None =
|
150
|
-
width: AmountRangeLengthMm | None =
|
151
|
-
depth: AmountRangeLengthMm | None =
|
152
|
-
static_load: AmountRangeMass | None =
|
153
|
-
ventilated: bool | None =
|
154
|
-
|
154
|
+
height: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
155
|
+
width: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
156
|
+
depth: AmountRangeLengthMm | None = pydantic.Field(default=None, description="Depth of enclosure system")
|
157
|
+
static_load: AmountRangeMass | None = pydantic.Field(default=None, description="Mass that the unit can hold")
|
158
|
+
ventilated: bool | None = pydantic.Field(
|
159
|
+
default=None, description="At least 40% of the tray base is open to air flow"
|
160
|
+
)
|
161
|
+
material: list[CableTraysMaterial] | None = pydantic.Field(default=None, description="")
|
155
162
|
|
156
163
|
|
157
164
|
class NetworkingRacewaysRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -165,13 +172,14 @@ class NetworkingRacewaysRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
165
172
|
|
166
173
|
_EXT_VERSION = "1.0"
|
167
174
|
|
168
|
-
width: AmountRangeLengthMm | None =
|
169
|
-
depth: AmountRangeLengthMm | None =
|
170
|
-
painted: bool | None =
|
171
|
-
divided: bool | None =
|
172
|
-
default=None,
|
175
|
+
width: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
176
|
+
depth: AmountRangeLengthMm | None = pydantic.Field(default=None, description="Depth of enclosure system")
|
177
|
+
painted: bool | None = pydantic.Field(default=None, description="")
|
178
|
+
divided: bool | None = pydantic.Field(
|
179
|
+
default=None,
|
180
|
+
description="Dual service raceway for high and low voltage data and power applications",
|
173
181
|
)
|
174
|
-
raceways_material: list[RacewaysMaterial] | None =
|
182
|
+
raceways_material: list[RacewaysMaterial] | None = pydantic.Field(default=None, description="")
|
175
183
|
|
176
184
|
|
177
185
|
class CommunicationsConduitRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -44,10 +44,8 @@ __all__ = (
|
|
44
44
|
"OpeningsRangeV1",
|
45
45
|
)
|
46
46
|
|
47
|
-
|
48
|
-
|
47
|
+
import pydantic
|
49
48
|
|
50
|
-
from openepd.compat.pydantic import pyd
|
51
49
|
from openepd.model.common import RangeInt, RangeRatioFloat
|
52
50
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
53
51
|
from openepd.model.specs.enums import (
|
@@ -66,6 +64,8 @@ from openepd.model.validation.quantity import (
|
|
66
64
|
AmountRangeUFactor,
|
67
65
|
)
|
68
66
|
|
67
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
68
|
+
|
69
69
|
|
70
70
|
class PanelDoorsRangeV1(BaseOpenEpdHierarchicalSpec):
|
71
71
|
"""
|
@@ -137,8 +137,8 @@ class FenestrationFramingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
137
137
|
|
138
138
|
_EXT_VERSION = "1.0"
|
139
139
|
|
140
|
-
thermal_separation: list[ThermalSeparation] | None =
|
141
|
-
material: list[FrameMaterial] | None =
|
140
|
+
thermal_separation: list[ThermalSeparation] | None = pydantic.Field(default=None)
|
141
|
+
material: list[FrameMaterial] | None = pydantic.Field(default=None)
|
142
142
|
|
143
143
|
|
144
144
|
class FenestrationHardwareRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -150,7 +150,7 @@ class FenestrationHardwareRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
150
150
|
|
151
151
|
_EXT_VERSION = "1.0"
|
152
152
|
|
153
|
-
function: list[HardwareFunction] | None =
|
153
|
+
function: list[HardwareFunction] | None = pydantic.Field(default=None, description="")
|
154
154
|
|
155
155
|
|
156
156
|
class FlatGlassPanesRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -162,7 +162,7 @@ class FlatGlassPanesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
162
162
|
|
163
163
|
_EXT_VERSION = "1.0"
|
164
164
|
|
165
|
-
thickness: list[FlatGlassPanesThickness] | None =
|
165
|
+
thickness: list[FlatGlassPanesThickness] | None = pydantic.Field(default=None)
|
166
166
|
|
167
167
|
|
168
168
|
class ProcessedNonInsulatingGlassPanesRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -289,7 +289,7 @@ class FenestrationPartsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
289
289
|
|
290
290
|
_EXT_VERSION = "1.0"
|
291
291
|
|
292
|
-
intended_application: GlazingIntendedApplication | None =
|
292
|
+
intended_application: GlazingIntendedApplication | None = pydantic.Field(
|
293
293
|
default=None, description="Intended application."
|
294
294
|
)
|
295
295
|
FenestrationAccessories: FenestrationAccessoriesRangeV1 | None = None
|
@@ -330,25 +330,28 @@ class NAFSFenestrationRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
330
330
|
pyrolytic_coated: bool | None = None
|
331
331
|
sputter_coat: bool | None = None
|
332
332
|
solar_heat_gain: RangeRatioFloat | None = None
|
333
|
-
hurricane_resistant: bool | None =
|
334
|
-
default=None,
|
333
|
+
hurricane_resistant: bool | None = pydantic.Field(
|
334
|
+
default=None,
|
335
|
+
description="The product has been designed to resist windborne debris.",
|
335
336
|
)
|
336
|
-
assembly_u_factor: AmountRangeUFactor | None =
|
337
|
-
default=None,
|
337
|
+
assembly_u_factor: AmountRangeUFactor | None = pydantic.Field(
|
338
|
+
default=None,
|
339
|
+
description="Weighted average conductance of heat across assembly (including frame).",
|
338
340
|
)
|
339
|
-
air_infiltration: AmountRangeSpeed | None =
|
340
|
-
default=None,
|
341
|
+
air_infiltration: AmountRangeSpeed | None = pydantic.Field(
|
342
|
+
default=None,
|
343
|
+
description="Air infiltration, measured at a certain level of Differential Pressure.",
|
341
344
|
)
|
342
|
-
thermal_separation: list[ThermalSeparation] | None =
|
343
|
-
dp_rating: AmountRangePressureMpa | None =
|
344
|
-
glass_panes: RangeInt | None =
|
345
|
+
thermal_separation: list[ThermalSeparation] | None = pydantic.Field(default=None)
|
346
|
+
dp_rating: AmountRangePressureMpa | None = pydantic.Field(default=None, description="")
|
347
|
+
glass_panes: RangeInt | None = pydantic.Field(
|
345
348
|
default=None,
|
346
349
|
description="Number of panes, each separated by a cavity. A 3 pane unit has 2 cavities. example: 3",
|
347
350
|
)
|
348
|
-
performance_class: NAFSPerformanceClass | None =
|
351
|
+
performance_class: NAFSPerformanceClass | None = pydantic.Field(
|
349
352
|
default=None, description="Performance class according to NAFS."
|
350
353
|
)
|
351
|
-
performance_grade: list[NAFSPerformanceGrade] | None =
|
354
|
+
performance_grade: list[NAFSPerformanceGrade] | None = pydantic.Field(
|
352
355
|
default=None,
|
353
356
|
description="NAFS Performance Grade. The NAFS Performance Grade is a number that represents the performance of the glazing product. The higher the number, the better the performance. The NAFS Performance Grade is calculated using the NAFS Performance Class, the NAFS Performance Index, and the NAFS Performance Factor. While it is expressed as pressure, there are specific values which are allowed. The values are listed in the enum.",
|
354
357
|
)
|
@@ -377,24 +380,26 @@ class InsulatingGlazingUnitsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
377
380
|
pyrolytic_coated: bool | None = None
|
378
381
|
sputter_coat: bool | None = None
|
379
382
|
solar_heat_gain: RangeRatioFloat | None = None
|
380
|
-
intended_application: GlazingIntendedApplication | None =
|
383
|
+
intended_application: GlazingIntendedApplication | None = pydantic.Field(
|
381
384
|
default=None, description="Intended application for IGUs."
|
382
385
|
)
|
383
|
-
hurricane_resistant: bool | None =
|
384
|
-
dp_rating: AmountRangePressureMpa | None =
|
385
|
-
default=None,
|
386
|
+
hurricane_resistant: bool | None = pydantic.Field(default=None)
|
387
|
+
dp_rating: AmountRangePressureMpa | None = pydantic.Field(
|
388
|
+
default=None,
|
389
|
+
description="Maximum Differential Pressure, a measure of wind tolerance.",
|
386
390
|
)
|
387
|
-
air_infiltration: AmountRangeSpeed | None =
|
388
|
-
default=None,
|
391
|
+
air_infiltration: AmountRangeSpeed | None = pydantic.Field(
|
392
|
+
default=None,
|
393
|
+
description="Air infiltration, measured at a certain level of Differential Pressure.",
|
389
394
|
)
|
390
|
-
glass_panes: RangeInt | None =
|
395
|
+
glass_panes: RangeInt | None = pydantic.Field(
|
391
396
|
default=None,
|
392
397
|
description="Number of panes, each separated by a cavity. A 3 pane unit has 2 cavities. example: 3",
|
393
398
|
)
|
394
|
-
cog_u_factor: AmountRangeUFactor | None =
|
399
|
+
cog_u_factor: AmountRangeUFactor | None = pydantic.Field(
|
395
400
|
default=None, description="Conductance of heat at center of glass."
|
396
401
|
)
|
397
|
-
spacer: list[Spacer] | None =
|
402
|
+
spacer: list[Spacer] | None = pydantic.Field(default=None, description="Spacer material for Integrated Glass Unit.")
|
398
403
|
|
399
404
|
|
400
405
|
class CurtainWallsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -422,8 +427,8 @@ class DoorsAndFramesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
422
427
|
|
423
428
|
_EXT_VERSION = "1.0"
|
424
429
|
|
425
|
-
height: AmountRangeLengthMm | None =
|
426
|
-
width: AmountRangeLengthMm | None =
|
430
|
+
height: AmountRangeLengthMm | None = pydantic.Field(default=None)
|
431
|
+
width: AmountRangeLengthMm | None = pydantic.Field(default=None)
|
427
432
|
IntegratedDoorsOpeningAssemblies: IntegratedDoorsOpeningAssembliesRangeV1 | None = None
|
428
433
|
MetalDoorAndFrames: MetalDoorAndFramesRangeV1 | None = None
|
429
434
|
SpecialtyDoorsAndFrames: SpecialtyDoorsAndFramesRangeV1 | None = None
|
@@ -509,7 +514,7 @@ class OpeningsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
509
514
|
|
510
515
|
_EXT_VERSION = "1.0"
|
511
516
|
|
512
|
-
thickness: AmountRangeLengthMm | None =
|
517
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None)
|
513
518
|
CurtainWalls: CurtainWallsRangeV1 | None = None
|
514
519
|
DoorsAndFrames: DoorsAndFramesRangeV1 | None = None
|
515
520
|
Entrances: EntrancesRangeV1 | None = None
|
@@ -29,15 +29,15 @@ __all__ = (
|
|
29
29
|
"PlumbingRangeV1",
|
30
30
|
)
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
import pydantic
|
34
33
|
|
35
|
-
from openepd.compat.pydantic import pyd
|
36
34
|
from openepd.model.common import RangeAmount
|
37
35
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
38
36
|
from openepd.model.specs.enums import FireProtectionPipingMaterial, PipingAnsiSchedule, PlumbingPipingMaterial
|
39
37
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
40
38
|
|
39
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
40
|
+
|
41
41
|
|
42
42
|
class BathtubsRangeV1(BaseOpenEpdHierarchicalSpec):
|
43
43
|
"""
|
@@ -88,11 +88,13 @@ class FireProtectionPipingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
88
88
|
|
89
89
|
_EXT_VERSION = "1.0"
|
90
90
|
|
91
|
-
thickness: AmountRangeLengthMm | None =
|
92
|
-
piping_diameter: AmountRangeLengthMm | None =
|
93
|
-
mass_per_unit_length: RangeAmount | None =
|
94
|
-
piping_ansi_schedule: list[PipingAnsiSchedule] | None =
|
95
|
-
fire_protection_piping_material: list[FireProtectionPipingMaterial] | None =
|
91
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
92
|
+
piping_diameter: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
93
|
+
mass_per_unit_length: RangeAmount | None = pydantic.Field(default=None, description="")
|
94
|
+
piping_ansi_schedule: list[PipingAnsiSchedule] | None = pydantic.Field(default=None, description="")
|
95
|
+
fire_protection_piping_material: list[FireProtectionPipingMaterial] | None = pydantic.Field(
|
96
|
+
default=None, description=""
|
97
|
+
)
|
96
98
|
|
97
99
|
|
98
100
|
class FireSprinklersRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -165,11 +167,11 @@ class PipingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
165
167
|
|
166
168
|
_EXT_VERSION = "1.0"
|
167
169
|
|
168
|
-
thickness: AmountRangeLengthMm | None =
|
169
|
-
piping_diameter: AmountRangeLengthMm | None =
|
170
|
-
mass_per_unit_length: RangeAmount | None =
|
171
|
-
piping_ansi_schedule: list[PipingAnsiSchedule] | None =
|
172
|
-
plumbing_piping_material: list[PlumbingPipingMaterial] | None =
|
170
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
171
|
+
piping_diameter: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
172
|
+
mass_per_unit_length: RangeAmount | None = pydantic.Field(default=None, description="")
|
173
|
+
piping_ansi_schedule: list[PipingAnsiSchedule] | None = pydantic.Field(default=None, description="")
|
174
|
+
plumbing_piping_material: list[PlumbingPipingMaterial] | None = pydantic.Field(default=None, description="")
|
173
175
|
|
174
176
|
|
175
177
|
class PlumbingEquipmentRangeV1(BaseOpenEpdHierarchicalSpec):
|