openepd 3.1.1__py3-none-any.whl → 3.1.3__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.
Files changed (34) hide show
  1. openepd/__version__.py +1 -1
  2. openepd/compat/compat_functional_validators.py +29 -0
  3. openepd/compat/pydantic.py +6 -1
  4. openepd/model/specs/concrete.py +1 -157
  5. openepd/model/specs/generated/asphalt.py +1 -11
  6. openepd/model/specs/generated/cladding.py +4 -16
  7. openepd/model/specs/generated/cmu.py +1 -8
  8. openepd/model/specs/generated/concrete.py +59 -33
  9. openepd/model/specs/generated/conveying_equipment.py +2 -12
  10. openepd/model/specs/generated/electrical.py +9 -12
  11. openepd/model/specs/generated/enums.py +26 -20
  12. openepd/model/specs/generated/finishes.py +2 -36
  13. openepd/model/specs/generated/fire_and_smoke_protection.py +1 -3
  14. openepd/model/specs/generated/furnishings.py +1 -3
  15. openepd/model/specs/generated/masonry.py +5 -4
  16. openepd/model/specs/generated/mechanical.py +25 -93
  17. openepd/model/specs/generated/mechanical_insulation.py +1 -5
  18. openepd/model/specs/generated/network_infrastructure.py +2 -12
  19. openepd/model/specs/generated/openings.py +209 -91
  20. openepd/model/specs/generated/plumbing.py +3 -19
  21. openepd/model/specs/generated/precast_concrete.py +1 -5
  22. openepd/model/specs/generated/steel.py +117 -53
  23. openepd/model/specs/generated/thermal_moisture_protection.py +1 -15
  24. openepd/model/specs/generated/utility_piping.py +2 -10
  25. openepd/model/specs/generated/wood.py +1 -5
  26. openepd/model/validation/quantity.py +158 -16
  27. {openepd-3.1.1.dist-info → openepd-3.1.3.dist-info}/METADATA +2 -1
  28. {openepd-3.1.1.dist-info → openepd-3.1.3.dist-info}/RECORD +30 -33
  29. openepd/model/specs/aluminium.py +0 -67
  30. openepd/model/specs/glass.py +0 -360
  31. openepd/model/specs/steel.py +0 -184
  32. openepd/model/specs/wood.py +0 -130
  33. {openepd-3.1.1.dist-info → openepd-3.1.3.dist-info}/LICENSE +0 -0
  34. {openepd-3.1.1.dist-info → openepd-3.1.3.dist-info}/WHEEL +0 -0
@@ -81,18 +81,6 @@ class AccessFlooringV1(BaseOpenEpdHierarchicalSpec):
81
81
  rolling_load_10_pass: str | None = pyd.Field(default=None, description="", example="1 N")
82
82
  rolling_load_10000_pass: str | None = pyd.Field(default=None, description="", example="1 N")
83
83
 
84
- _access_flooring_finished_floor_height_is_quantity_validator = pyd.validator(
85
- "finished_floor_height", allow_reuse=True
86
- )(validate_unit_factory("m"))
87
- _access_flooring_panel_thickness_is_quantity_validator = pyd.validator("panel_thickness", allow_reuse=True)(
88
- validate_unit_factory("m")
89
- )
90
- _access_flooring_concentrated_load_is_quantity_validator = pyd.validator("concentrated_load", allow_reuse=True)(
91
- validate_unit_factory("MPa")
92
- )
93
- _access_flooring_uniform_load_is_quantity_validator = pyd.validator("uniform_load", allow_reuse=True)(
94
- validate_unit_factory("MPa")
95
- )
96
84
  _access_flooring_rolling_load_10_pass_is_quantity_validator = pyd.validator(
97
85
  "rolling_load_10_pass", allow_reuse=True
98
86
  )(validate_unit_factory("N"))
@@ -124,15 +112,8 @@ class CarpetV1(BaseOpenEpdHierarchicalSpec):
124
112
  gwp_factor_base: GwpKgCo2eStr | None = pyd.Field(default=None, description="", example="1 kgCO2e")
125
113
  gwp_factor_yarn: GwpKgCo2eStr | None = pyd.Field(default=None, description="", example="1 kgCO2e")
126
114
 
127
- _length_is_quantity_validator = pyd.validator("length", allow_reuse=True)(validate_unit_factory("m"))
128
- _width_is_quantity_validator = pyd.validator("width", allow_reuse=True)(validate_unit_factory("m"))
129
115
  _yarn_weight_is_quantity_validator = pyd.validator("yarn_weight", allow_reuse=True)(validate_unit_factory("g / m2"))
130
- _gwp_factor_base_is_quantity_validator = pyd.validator("gwp_factor_base", allow_reuse=True)(
131
- validate_unit_factory("kgCO2e")
132
- )
133
- _gwp_factor_yarn_is_quantity_validator = pyd.validator("gwp_factor_yarn", allow_reuse=True)(
134
- validate_unit_factory("kgCO2e")
135
- )
116
+ _yarn_weight_ge_validator = pyd.validator("yarn_weight", allow_reuse=True)(validate_quantity_ge_factory("0 g / m2"))
136
117
 
137
118
 
138
119
  class LaminateV1(BaseOpenEpdHierarchicalSpec):
@@ -167,12 +148,6 @@ class ResilientFlooringV1(BaseOpenEpdHierarchicalSpec):
167
148
  floor_score: bool | None = pyd.Field(default=None, description="", example=True)
168
149
  nsf332: bool | None = pyd.Field(default=None, description="", example=True)
169
150
 
170
- _length_is_quantity_validator = pyd.validator("length", allow_reuse=True)(validate_unit_factory("m"))
171
- _width_is_quantity_validator = pyd.validator("width", allow_reuse=True)(validate_unit_factory("m"))
172
- _resilient_flooring_wear_layer_is_quantity_validator = pyd.validator("wear_layer", allow_reuse=True)(
173
- validate_unit_factory("m")
174
- )
175
-
176
151
 
177
152
  class WallBaseV1(BaseOpenEpdHierarchicalSpec):
178
153
  """Wall base performance specification."""
@@ -194,8 +169,6 @@ class WoodFlooringV1(BaseOpenEpdHierarchicalSpec, HasForestPracticesCertifiers):
194
169
  fabrication: WoodFlooringFabrication | None = pyd.Field(default=None, description="", example="Solid hardwood")
195
170
  forest_practices_certifiers: list[OrgRef] | None = pyd.Field(default=None, description="")
196
171
 
197
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
198
-
199
172
 
200
173
  class AcousticalCeilingsV1(BaseOpenEpdHierarchicalSpec):
201
174
  """Acoustical ceilings performance specification."""
@@ -205,8 +178,6 @@ class AcousticalCeilingsV1(BaseOpenEpdHierarchicalSpec):
205
178
  # Own fields:
206
179
  thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="10 mm")
207
180
 
208
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
209
-
210
181
 
211
182
  class CeramicTileV1(BaseOpenEpdHierarchicalSpec):
212
183
  """Ceramic tile performance specification."""
@@ -373,7 +344,7 @@ class TilingV1(BaseOpenEpdHierarchicalSpec):
373
344
  _EXT_VERSION = "1.0"
374
345
 
375
346
  # Own fields:
376
- thickness: LengthMStr | None = pyd.Field(default=None, description="", example="1 m")
347
+ thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="9 mm")
377
348
  flooring: bool | None = pyd.Field(default=None, description="Tiling intended for walking.", example=True)
378
349
  wall_finish: bool | None = pyd.Field(
379
350
  default=None,
@@ -418,8 +389,6 @@ class TilingV1(BaseOpenEpdHierarchicalSpec):
418
389
  le=1,
419
390
  )
420
391
 
421
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
422
- _thickness_min_validator = pyd.validator("thickness", allow_reuse=True)(validate_quantity_ge_factory("0 mm"))
423
392
  _thickness_max_validator = pyd.validator("thickness", allow_reuse=True)(validate_quantity_le_factory("50 mm"))
424
393
 
425
394
  # Nested specs:
@@ -470,7 +439,6 @@ class GypsumV1(BaseOpenEpdHierarchicalSpec):
470
439
  moisture_resistant: bool | None = pyd.Field(default=None, description="", example=True)
471
440
  abuse_resistant: bool | None = pyd.Field(default=None, description="", example=True)
472
441
 
473
- _gypsum_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
474
442
  _gypsum_r_factor_is_quantity_validator = pyd.validator("r_factor", allow_reuse=True)(validate_unit_factory("RSI"))
475
443
 
476
444
  # Nested specs:
@@ -497,8 +465,6 @@ class WallFinishesV1(BaseOpenEpdHierarchicalSpec):
497
465
  # Own fields:
498
466
  thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="10 mm")
499
467
 
500
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
501
-
502
468
 
503
469
  class FinishesV1(BaseOpenEpdHierarchicalSpec):
504
470
  """Finishes performance specification."""
@@ -24,7 +24,7 @@ from openepd.model.specs.generated.enums import (
24
24
  SprayFireproofingDensity,
25
25
  SprayFireproofingMaterialType,
26
26
  )
27
- from openepd.model.validation.quantity import LengthMmStr, validate_unit_factory
27
+ from openepd.model.validation.quantity import LengthMmStr
28
28
 
29
29
 
30
30
  class IntumescentFireproofingV1(BaseOpenEpdHierarchicalSpec):
@@ -56,8 +56,6 @@ class AppliedFireproofingV1(BaseOpenEpdHierarchicalSpec):
56
56
  # Own fields:
57
57
  thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="10 mm")
58
58
 
59
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
60
-
61
59
  # Nested specs:
62
60
  IntumescentFireproofing: IntumescentFireproofingV1 | None = None
63
61
  SprayFireproofing: SprayFireproofingV1 | None = None
@@ -20,7 +20,7 @@
20
20
  from openepd.compat.pydantic import pyd
21
21
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
22
22
  from openepd.model.specs.generated.enums import CountertopMaterial
23
- from openepd.model.validation.quantity import LengthMmStr, validate_unit_factory
23
+ from openepd.model.validation.quantity import LengthMmStr
24
24
 
25
25
 
26
26
  class DemountablePartitionTrackV1(BaseOpenEpdHierarchicalSpec):
@@ -44,8 +44,6 @@ class CountertopsV1(BaseOpenEpdHierarchicalSpec):
44
44
  thickness: LengthMmStr | None = pyd.Field(default=None, description="", example="30 mm")
45
45
  countertop_material: CountertopMaterial | None = pyd.Field(default=None, description="", example="Stone")
46
46
 
47
- _thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
48
-
49
47
 
50
48
  class DemountablePartitionsV1(BaseOpenEpdHierarchicalSpec):
51
49
  """Demountable partitions performance specification."""
@@ -19,7 +19,7 @@
19
19
  #
20
20
  from openepd.compat.pydantic import pyd
21
21
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
22
- from openepd.model.validation.quantity import PressureMPaStr, validate_unit_factory
22
+ from openepd.model.validation.quantity import PressureMPaStr, validate_quantity_ge_factory, validate_unit_factory
23
23
 
24
24
 
25
25
  class GMUV1(BaseOpenEpdHierarchicalSpec):
@@ -38,13 +38,14 @@ class AutoclavedAeratedConcreteV1(BaseOpenEpdHierarchicalSpec):
38
38
  thermal_conductivity: str | None = pyd.Field(default=None, description="", example="1 W / (m * K)")
39
39
  white: bool | None = pyd.Field(default=None, description="", example=True)
40
40
 
41
- _concrete_compressive_strength_28d_is_quantity_validator = pyd.validator("strength_28d", allow_reuse=True)(
42
- validate_unit_factory("MPa")
43
- )
44
41
  _aac_thermal_conductivity_is_quantity_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
45
42
  validate_unit_factory("W / (m * K)")
46
43
  )
47
44
 
45
+ _aac_thermal_conductivity_min_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
46
+ validate_quantity_ge_factory("0 W / (m * K)")
47
+ )
48
+
48
49
 
49
50
  class BrickV1(BaseOpenEpdHierarchicalSpec):
50
51
  """Brick performance specification."""
@@ -31,7 +31,7 @@ from openepd.model.specs.generated.enums import (
31
31
  MechanicalInstallation,
32
32
  MechanicalRefrigerants,
33
33
  )
34
- from openepd.model.validation.quantity import PressureMPaStr, validate_unit_factory
34
+ from openepd.model.validation.quantity import AirflowStr, FlowRateStr, PowerStr, PressureMPaStr, VolumeStr
35
35
 
36
36
 
37
37
  class HvacVrfControlV1(BaseOpenEpdHierarchicalSpec):
@@ -47,21 +47,10 @@ class HvacVrfIndoorV1(BaseOpenEpdHierarchicalSpec):
47
47
 
48
48
  # Own fields:
49
49
  refrigerants: list[MechanicalRefrigerants] | None = pyd.Field(default=None, description="", example=["R11"])
50
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
51
- cooling_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
52
- airflow_rate: str | None = pyd.Field(default=None, description="", example="1 m3 / s")
53
- air_volume: str | None = pyd.Field(default=None, description="", example="1 m3")
54
-
55
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
56
- validate_unit_factory("W")
57
- )
58
- _cooling_capacity_is_quantity_validator = pyd.validator("cooling_capacity", allow_reuse=True)(
59
- validate_unit_factory("W")
60
- )
61
- _airflow_rate_is_quantity_validator = pyd.validator("airflow_rate", allow_reuse=True)(
62
- validate_unit_factory("m3 / s")
63
- )
64
- _air_volume_is_quantity_validator = pyd.validator("air_volume", allow_reuse=True)(validate_unit_factory("m3"))
50
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
51
+ cooling_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
52
+ airflow_rate: AirflowStr | None = pyd.Field(default=None, description="", example="1 m3 / s")
53
+ air_volume: VolumeStr | None = pyd.Field(default=None, description="", example="1 m3")
65
54
 
66
55
 
67
56
  class HvacVrfOutdoorV1(BaseOpenEpdHierarchicalSpec):
@@ -71,21 +60,10 @@ class HvacVrfOutdoorV1(BaseOpenEpdHierarchicalSpec):
71
60
 
72
61
  # Own fields:
73
62
  refrigerants: list[MechanicalRefrigerants] | None = pyd.Field(default=None, description="", example=["R11"])
74
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
75
- cooling_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
76
- airflow_rate: str | None = pyd.Field(default=None, description="", example="1 m3 / s")
77
- air_volume: str | None = pyd.Field(default=None, description="", example="1 m3")
78
-
79
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
80
- validate_unit_factory("W")
81
- )
82
- _cooling_capacity_is_quantity_validator = pyd.validator("cooling_capacity", allow_reuse=True)(
83
- validate_unit_factory("W")
84
- )
85
- _airflow_rate_is_quantity_validator = pyd.validator("airflow_rate", allow_reuse=True)(
86
- validate_unit_factory("m3 / s")
87
- )
88
- _air_volume_is_quantity_validator = pyd.validator("air_volume", allow_reuse=True)(validate_unit_factory("m3"))
63
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
64
+ cooling_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
65
+ airflow_rate: AirflowStr | None = pyd.Field(default=None, description="", example="1 m3 / s")
66
+ air_volume: VolumeStr | None = pyd.Field(default=None, description="", example="1 m3")
89
67
 
90
68
 
91
69
  class HvacAirDiffusersV1(BaseOpenEpdHierarchicalSpec):
@@ -112,24 +90,13 @@ class HvacAHUsV1(BaseOpenEpdHierarchicalSpec):
112
90
  # Own fields:
113
91
  refrigerants: list[MechanicalRefrigerants] | None = pyd.Field(default=None, description="", example=["R11"])
114
92
  installation: MechanicalInstallation | None = pyd.Field(default=None, description="", example="Indoor")
115
- airflow_rate: str | None = pyd.Field(default=None, description="", example="1 m3 / s")
116
- air_volume: str | None = pyd.Field(default=None, description="", example="1 m3")
117
- cooling_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
118
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
93
+ airflow_rate: AirflowStr | None = pyd.Field(default=None, description="", example="1 m3 / s")
94
+ air_volume: VolumeStr | None = pyd.Field(default=None, description="", example="1 m3")
95
+ cooling_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
96
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
119
97
  airflow_control: AhuAirflowControl | None = pyd.Field(default=None, description="", example="CAV")
120
98
  zone_control: AhuZoneControl | None = pyd.Field(default=None, description="", example="Single Zone")
121
99
 
122
- _airflow_rate_is_quantity_validator = pyd.validator("airflow_rate", allow_reuse=True)(
123
- validate_unit_factory("m3 / s")
124
- )
125
- _air_volume_is_quantity_validator = pyd.validator("air_volume", allow_reuse=True)(validate_unit_factory("m3"))
126
- _cooling_capacity_is_quantity_validator = pyd.validator("cooling_capacity", allow_reuse=True)(
127
- validate_unit_factory("W")
128
- )
129
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
130
- validate_unit_factory("W")
131
- )
132
-
133
100
 
134
101
  class HvacBoilersV1(BaseOpenEpdHierarchicalSpec):
135
102
  """Hvac boilers performance specification."""
@@ -137,16 +104,11 @@ class HvacBoilersV1(BaseOpenEpdHierarchicalSpec):
137
104
  _EXT_VERSION = "1.0"
138
105
 
139
106
  # Own fields:
140
- flow_rate: str | None = pyd.Field(default=None, description="", example="1 l / min")
141
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
107
+ flow_rate: FlowRateStr | None = pyd.Field(default=None, description="", example="1 l / min")
108
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
142
109
  configuration: BoilerConfiguration | None = pyd.Field(default=None, description="", example="Hot water")
143
110
  fuel_type: BoilerEquipmentFuelType | None = pyd.Field(default=None, description="", example="Coal")
144
111
 
145
- _flow_rate_is_quantity_validator = pyd.validator("flow_rate", allow_reuse=True)(validate_unit_factory("l / min"))
146
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
147
- validate_unit_factory("W")
148
- )
149
-
150
112
 
151
113
  class HvacChillersV1(BaseOpenEpdHierarchicalSpec):
152
114
  """Hvac chillers performance specification."""
@@ -156,21 +118,10 @@ class HvacChillersV1(BaseOpenEpdHierarchicalSpec):
156
118
  # Own fields:
157
119
  refrigerants: list[MechanicalRefrigerants] | None = pyd.Field(default=None, description="", example=["R11"])
158
120
  installation: MechanicalInstallation | None = pyd.Field(default=None, description="", example="Indoor")
159
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
160
- cooling_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
161
- air_volume: str | None = pyd.Field(default=None, description="", example="1 m3")
162
- airflow_rate: str | None = pyd.Field(default=None, description="", example="1 m3 / s")
163
-
164
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
165
- validate_unit_factory("W")
166
- )
167
- _cooling_capacity_is_quantity_validator = pyd.validator("cooling_capacity", allow_reuse=True)(
168
- validate_unit_factory("W")
169
- )
170
- _air_volume_is_quantity_validator = pyd.validator("air_volume", allow_reuse=True)(validate_unit_factory("m3"))
171
- _airflow_rate_is_quantity_validator = pyd.validator("airflow_rate", allow_reuse=True)(
172
- validate_unit_factory("m3 / s")
173
- )
121
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
122
+ cooling_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
123
+ air_volume: VolumeStr | None = pyd.Field(default=None, description="", example="1 m3")
124
+ airflow_rate: AirflowStr | None = pyd.Field(default=None, description="", example="1 m3 / s")
174
125
 
175
126
 
176
127
  class HvacFansV1(BaseOpenEpdHierarchicalSpec):
@@ -186,23 +137,12 @@ class HvacHeatPumpsV1(BaseOpenEpdHierarchicalSpec):
186
137
 
187
138
  # Own fields:
188
139
  refrigerants: list[MechanicalRefrigerants] | None = pyd.Field(default=None, description="", example=["R11"])
189
- cooling_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
190
- heating_capacity: str | None = pyd.Field(default=None, description="", example="1000.0 W")
191
- air_volume: str | None = pyd.Field(default=None, description="", example="1 m3")
192
- airflow_rate: str | None = pyd.Field(default=None, description="", example="1 m3 / s")
140
+ cooling_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
141
+ heating_capacity: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
142
+ air_volume: VolumeStr | None = pyd.Field(default=None, description="", example="1 m3")
143
+ airflow_rate: AirflowStr | None = pyd.Field(default=None, description="", example="1 m3 / s")
193
144
  heat_pumps_type: HeatPumpType | None = pyd.Field(default=None, description="", example="Air-to-Water")
194
145
 
195
- _cooling_capacity_is_quantity_validator = pyd.validator("cooling_capacity", allow_reuse=True)(
196
- validate_unit_factory("W")
197
- )
198
- _heating_capacity_is_quantity_validator = pyd.validator("heating_capacity", allow_reuse=True)(
199
- validate_unit_factory("W")
200
- )
201
- _air_volume_is_quantity_validator = pyd.validator("air_volume", allow_reuse=True)(validate_unit_factory("m3"))
202
- _airflow_rate_is_quantity_validator = pyd.validator("airflow_rate", allow_reuse=True)(
203
- validate_unit_factory("m3 / s")
204
- )
205
-
206
146
 
207
147
  class HvacHeatExV1(BaseOpenEpdHierarchicalSpec):
208
148
  """Hvac heat exchangers performance specification."""
@@ -222,17 +162,9 @@ class HvacPumpsV1(BaseOpenEpdHierarchicalSpec):
222
162
  _EXT_VERSION = "1.0"
223
163
 
224
164
  # Own fields:
225
- flow_rate: str | None = pyd.Field(default=None, description="", example="1 l / min")
165
+ flow_rate: FlowRateStr | None = pyd.Field(default=None, description="", example="1 l / min")
226
166
  pump_discharge_pressure: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
227
- pump_horsepower: str | None = pyd.Field(default=None, description="", example="1000.0 W")
228
-
229
- _flow_rate_is_quantity_validator = pyd.validator("flow_rate", allow_reuse=True)(validate_unit_factory("l / min"))
230
- _pump_discharge_pressure_is_quantity_validator = pyd.validator("pump_discharge_pressure", allow_reuse=True)(
231
- validate_unit_factory("MPa")
232
- )
233
- _pump_horsepower_is_quantity_validator = pyd.validator("pump_horsepower", allow_reuse=True)(
234
- validate_unit_factory("W")
235
- )
167
+ pump_horsepower: PowerStr | None = pyd.Field(default=None, description="", example="1000.0 W")
236
168
 
237
169
 
238
170
  class HvacRTUsV1(BaseOpenEpdHierarchicalSpec):
@@ -20,7 +20,7 @@
20
20
  from openepd.compat.pydantic import pyd
21
21
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
22
22
  from openepd.model.specs.generated.enums import InsulatingMaterial, InsulationIntendedApplication
23
- from openepd.model.validation.quantity import LengthMmStr, validate_unit_factory
23
+ from openepd.model.validation.quantity import LengthMmStr
24
24
 
25
25
 
26
26
  class MechanicalInsulationV1(BaseOpenEpdHierarchicalSpec):
@@ -35,7 +35,3 @@ class MechanicalInsulationV1(BaseOpenEpdHierarchicalSpec):
35
35
  default=None, description="", example=["Wall & General"]
36
36
  )
37
37
  thickness_per_declared_unit: LengthMmStr | None = pyd.Field(default=None, description="", example="20 mm")
38
-
39
- _thickness_per_declared_unit_is_quantity_validator = pyd.validator("thickness_per_declared_unit", allow_reuse=True)(
40
- validate_unit_factory("m")
41
- )
@@ -31,7 +31,7 @@ from openepd.model.specs.generated.enums import (
31
31
  RacewaysMaterial,
32
32
  RackType,
33
33
  )
34
- from openepd.model.validation.quantity import LengthMmStr, MassKgStr, validate_unit_factory
34
+ from openepd.model.validation.quantity import ElectricalCurrentStr, LengthMmStr, MassKgStr, validate_unit_factory
35
35
 
36
36
 
37
37
  class PDUV1(BaseOpenEpdHierarchicalSpec):
@@ -40,7 +40,7 @@ class PDUV1(BaseOpenEpdHierarchicalSpec):
40
40
  _EXT_VERSION = "1.0"
41
41
 
42
42
  # Own fields:
43
- amperage: str | None = pyd.Field(default=None, description="", example="1 A")
43
+ amperage: ElectricalCurrentStr | None = pyd.Field(default=None, description="", example="1 A")
44
44
  outlet_level_metering: bool | None = pyd.Field(default=None, description="", example=True)
45
45
  outlet_level_switching: bool | None = pyd.Field(default=None, description="", example=True)
46
46
  pdu_technology: PduTechnology | None = pyd.Field(default=None, description="", example="Basic")
@@ -59,8 +59,6 @@ class CabinetsRacksAndEnclosuresV1(BaseOpenEpdHierarchicalSpec):
59
59
  total_racking_units: int | None = pyd.Field(default=None, description="", example=3)
60
60
  rack_type: RackType | None = pyd.Field(default=None, description="", example="Cabinet")
61
61
 
62
- _static_load_is_quantity_validator = pyd.validator("static_load", allow_reuse=True)(validate_unit_factory("kg"))
63
-
64
62
 
65
63
  class DataCablingV1(BaseOpenEpdHierarchicalSpec):
66
64
  """Data cabling performance specification."""
@@ -141,11 +139,6 @@ class NetworkingCableTraysV1(BaseOpenEpdHierarchicalSpec):
141
139
  )
142
140
  material: CableTraysMaterial | None = pyd.Field(default=None, description="", example="Stainless Steel")
143
141
 
144
- _height_is_quantity_validator = pyd.validator("height", allow_reuse=True)(validate_unit_factory("m"))
145
- _width_is_quantity_validator = pyd.validator("width", allow_reuse=True)(validate_unit_factory("m"))
146
- _depth_is_quantity_validator = pyd.validator("depth", allow_reuse=True)(validate_unit_factory("m"))
147
- _static_load_is_quantity_validator = pyd.validator("static_load", allow_reuse=True)(validate_unit_factory("kg"))
148
-
149
142
 
150
143
  class NetworkingRacewaysV1(BaseOpenEpdHierarchicalSpec):
151
144
  """Networking raceways performance specification."""
@@ -163,9 +156,6 @@ class NetworkingRacewaysV1(BaseOpenEpdHierarchicalSpec):
163
156
  )
164
157
  raceways_material: RacewaysMaterial | None = pyd.Field(default=None, description="", example="Aluminum")
165
158
 
166
- _width_is_quantity_validator = pyd.validator("width", allow_reuse=True)(validate_unit_factory("m"))
167
- _depth_is_quantity_validator = pyd.validator("depth", allow_reuse=True)(validate_unit_factory("m"))
168
-
169
159
 
170
160
  class NetworkInfrastructureV1(BaseOpenEpdHierarchicalSpec):
171
161
  """Network infrastructure performance specification."""