openepd 6.13.2__py3-none-any.whl → 7.0.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/__init__.py +4 -4
- 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 +60 -43
- openepd/model/category.py +13 -10
- openepd/model/common.py +100 -55
- 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 +132 -113
- openepd/model/org.py +54 -33
- openepd/model/pcr.py +38 -32
- openepd/model/specs/asphalt.py +31 -22
- openepd/model/specs/base.py +11 -9
- 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 +25 -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 +53 -25
- openepd/model/versioning.py +9 -6
- openepd/patch_pydantic.py +0 -93
- {openepd-6.13.2.dist-info → openepd-7.0.0.dist-info}/METADATA +1 -1
- openepd-7.0.0.dist-info/RECORD +142 -0
- openepd/compat/__init__.py +0 -15
- openepd/compat/compat_functional_validators.py +0 -25
- openepd/compat/pydantic.py +0 -30
- openepd-6.13.2.dist-info/RECORD +0 -145
- {openepd-6.13.2.dist-info → openepd-7.0.0.dist-info}/LICENSE +0 -0
- {openepd-6.13.2.dist-info → openepd-7.0.0.dist-info}/WHEEL +0 -0
@@ -44,10 +44,8 @@ __all__ = (
|
|
44
44
|
"FinishesRangeV1",
|
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 RangeAmount, RangeFloat, RangeInt, RangeRatioFloat
|
52
50
|
from openepd.model.org import OrgRef
|
53
51
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
@@ -87,6 +85,8 @@ from openepd.model.validation.quantity import (
|
|
87
85
|
AmountRangeYarnWeight,
|
88
86
|
)
|
89
87
|
|
88
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
89
|
+
|
90
90
|
|
91
91
|
class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
92
92
|
"""
|
@@ -100,21 +100,21 @@ class AccessFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
100
100
|
|
101
101
|
_EXT_VERSION = "1.0"
|
102
102
|
|
103
|
-
core_material: list[AccessFlooringCoreMaterial] | None =
|
104
|
-
finish_material: list[AccessFlooringFinishMaterial] | None =
|
105
|
-
stringers: list[AccessFlooringStringers] | None =
|
106
|
-
seismic_rating: list[AccessFlooringSeismicRating] | None =
|
107
|
-
magnetically_attached_finish: bool | None =
|
108
|
-
permanent_finish: bool | None =
|
109
|
-
drylay: bool | None =
|
110
|
-
adjustable_height: bool | None =
|
111
|
-
fixed_height: bool | None =
|
112
|
-
finished_floor_height: AmountRangeLengthMm | None =
|
113
|
-
panel_thickness: AmountRangeLengthMm | None =
|
114
|
-
concentrated_load: AmountRangePressureMpa | None =
|
115
|
-
uniform_load: AmountRangePressureMpa | None =
|
116
|
-
rolling_load_10_pass: AmountRangeForce | None =
|
117
|
-
rolling_load_10000_pass: AmountRangeForce | None =
|
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
118
|
|
119
119
|
|
120
120
|
class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -126,20 +126,20 @@ class CarpetRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
126
126
|
|
127
127
|
_EXT_VERSION = "1.0"
|
128
128
|
|
129
|
-
length: AmountRangeLengthMm | None =
|
130
|
-
width: AmountRangeLengthMm | None =
|
131
|
-
intended_application: list[CarpetIntendedApplication] | None =
|
132
|
-
manufacture_type: list[CarpetManufactureType] | None =
|
133
|
-
form_factor: list[CarpetFormFactor] | None =
|
134
|
-
yarn_weight: AmountRangeYarnWeight | None =
|
135
|
-
yarn_type: list[CarpetYarnType] | None =
|
136
|
-
fire_radiant_panel_rating_astme648: str | None =
|
137
|
-
fire_smoke_density_rating_astme648: str | None =
|
138
|
-
voc_emissions: str | None =
|
139
|
-
cushioned: bool | None =
|
140
|
-
bleachable: bool | None =
|
141
|
-
gwp_factor_base: AmountRangeGWP | None =
|
142
|
-
gwp_factor_yarn: AmountRangeGWP | None =
|
129
|
+
length: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
130
|
+
width: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
131
|
+
intended_application: list[CarpetIntendedApplication] | None = pydantic.Field(default=None, description="")
|
132
|
+
manufacture_type: list[CarpetManufactureType] | None = pydantic.Field(default=None, description="")
|
133
|
+
form_factor: list[CarpetFormFactor] | None = pydantic.Field(default=None, description="")
|
134
|
+
yarn_weight: AmountRangeYarnWeight | None = pydantic.Field(default=None, description="")
|
135
|
+
yarn_type: list[CarpetYarnType] | None = pydantic.Field(default=None, description="")
|
136
|
+
fire_radiant_panel_rating_astme648: str | None = pydantic.Field(default=None, description="")
|
137
|
+
fire_smoke_density_rating_astme648: str | None = pydantic.Field(default=None, description="")
|
138
|
+
voc_emissions: str | None = pydantic.Field(default=None, description="")
|
139
|
+
cushioned: bool | None = pydantic.Field(default=None, description="")
|
140
|
+
bleachable: bool | None = pydantic.Field(default=None, description="")
|
141
|
+
gwp_factor_base: AmountRangeGWP | None = pydantic.Field(default=None, description="")
|
142
|
+
gwp_factor_yarn: AmountRangeGWP | None = pydantic.Field(default=None, description="")
|
143
143
|
|
144
144
|
|
145
145
|
class LaminateRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -173,19 +173,19 @@ class ResilientFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
173
173
|
|
174
174
|
_EXT_VERSION = "1.0"
|
175
175
|
|
176
|
-
length: AmountRangeLengthMm | None =
|
177
|
-
width: AmountRangeLengthMm | None =
|
178
|
-
form_factor: list[ResilientFlooringFormFactor] | None =
|
179
|
-
material: list[ResilientFlooringMaterial] | None =
|
180
|
-
sheet_construction: list[VinylSheetConstruction] | None =
|
181
|
-
wear_layer: AmountRangeLengthMm | None =
|
182
|
-
delta_iic: RangeFloat | None =
|
183
|
-
thickness: list[ResilientFlooringThickness] | None =
|
184
|
-
sport_flooring: bool | None =
|
185
|
-
conductive_flooring: bool | None =
|
186
|
-
zwtl: bool | None =
|
187
|
-
floor_score: bool | None =
|
188
|
-
nsf332: bool | None =
|
176
|
+
length: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
177
|
+
width: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
178
|
+
form_factor: list[ResilientFlooringFormFactor] | None = pydantic.Field(default=None, description="")
|
179
|
+
material: list[ResilientFlooringMaterial] | None = pydantic.Field(default=None, description="")
|
180
|
+
sheet_construction: list[VinylSheetConstruction] | None = pydantic.Field(default=None, description="")
|
181
|
+
wear_layer: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
182
|
+
delta_iic: RangeFloat | None = pydantic.Field(default=None, description="")
|
183
|
+
thickness: list[ResilientFlooringThickness] | None = pydantic.Field(default=None, description="")
|
184
|
+
sport_flooring: bool | None = pydantic.Field(default=None, description="")
|
185
|
+
conductive_flooring: bool | None = pydantic.Field(default=None, description="")
|
186
|
+
zwtl: bool | None = pydantic.Field(default=None, description="")
|
187
|
+
floor_score: bool | None = pydantic.Field(default=None, description="")
|
188
|
+
nsf332: bool | None = pydantic.Field(default=None, description="")
|
189
189
|
|
190
190
|
|
191
191
|
class WallBaseRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -197,7 +197,7 @@ class WallBaseRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
197
197
|
|
198
198
|
_EXT_VERSION = "1.0"
|
199
199
|
|
200
|
-
wall_base_material: list[WallBaseMaterial] | None =
|
200
|
+
wall_base_material: list[WallBaseMaterial] | None = pydantic.Field(default=None, description="")
|
201
201
|
|
202
202
|
|
203
203
|
class WoodFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -213,9 +213,9 @@ class WoodFlooringRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
213
213
|
_EXT_VERSION = "1.0"
|
214
214
|
|
215
215
|
forest_practices_certifiers: list[OrgRef] | None = None
|
216
|
-
thickness: AmountRangeLengthMm | None =
|
217
|
-
timber_species: list[WoodFlooringTimberSpecies] | None =
|
218
|
-
fabrication: list[WoodFlooringFabrication] | None =
|
216
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
217
|
+
timber_species: list[WoodFlooringTimberSpecies] | None = pydantic.Field(default=None, description="")
|
218
|
+
fabrication: list[WoodFlooringFabrication] | None = pydantic.Field(default=None, description="")
|
219
219
|
|
220
220
|
|
221
221
|
class AcousticalCeilingsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -227,7 +227,7 @@ class AcousticalCeilingsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
227
227
|
|
228
228
|
_EXT_VERSION = "1.0"
|
229
229
|
|
230
|
-
thickness: AmountRangeLengthMm | None =
|
230
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
231
231
|
|
232
232
|
|
233
233
|
class CeramicTileRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -239,26 +239,27 @@ class CeramicTileRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
239
239
|
|
240
240
|
_EXT_VERSION = "1.0"
|
241
241
|
|
242
|
-
porcelain: bool | None =
|
243
|
-
default=None,
|
242
|
+
porcelain: bool | None = pydantic.Field(
|
243
|
+
default=None,
|
244
|
+
description="A dense and durable ceramic tile made from fine porcelain clay.",
|
244
245
|
)
|
245
|
-
quarry: bool | None =
|
246
|
+
quarry: bool | None = pydantic.Field(
|
246
247
|
default=None,
|
247
248
|
description="A type of unglazed ceramic tile made from natural clay with a slightly rough texture.",
|
248
249
|
)
|
249
|
-
pressed_floor_tile: bool | None =
|
250
|
+
pressed_floor_tile: bool | None = pydantic.Field(
|
250
251
|
default=None,
|
251
252
|
description="A durable and low-maintenance type of tile made by compressing clay or other materials at high pressure.",
|
252
253
|
)
|
253
|
-
wall_tile: bool | None =
|
254
|
+
wall_tile: bool | None = pydantic.Field(
|
254
255
|
default=None,
|
255
256
|
description="A decorative tile designed for use on vertical surfaces such as walls or backsplashes.",
|
256
257
|
)
|
257
|
-
mosaic_tile: bool | None =
|
258
|
+
mosaic_tile: bool | None = pydantic.Field(
|
258
259
|
default=None,
|
259
260
|
description="A small decorative tile made of glass, stone, or ceramic, arranged in a pattern to create a design.",
|
260
261
|
)
|
261
|
-
specialty: bool | None =
|
262
|
+
specialty: bool | None = pydantic.Field(
|
262
263
|
default=None,
|
263
264
|
description="A unique and customized type of tile, often made from unconventional materials or with specialized designs or finishes.",
|
264
265
|
)
|
@@ -275,11 +276,11 @@ class GaugedTileRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
275
276
|
|
276
277
|
_EXT_VERSION = "1.0"
|
277
278
|
|
278
|
-
tile_panels: bool | None =
|
279
|
+
tile_panels: bool | None = pydantic.Field(
|
279
280
|
default=None,
|
280
281
|
description="Large-format porcelain or natural stone tiles that are typically over 3 feet in length and width, designed for use in floor and wall installations to create a seamless and uninterrupted appearance.",
|
281
282
|
)
|
282
|
-
tile_pavers: bool | None =
|
283
|
+
tile_pavers: bool | None = pydantic.Field(
|
283
284
|
default=None,
|
284
285
|
description="Thick and durable porcelain or natural stone tiles that are commonly used in outdoor applications, such as patios, walkways, and driveways, due to their high resistance to weather and wear.",
|
285
286
|
)
|
@@ -294,19 +295,19 @@ class GlassTileRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
294
295
|
|
295
296
|
_EXT_VERSION = "1.0"
|
296
297
|
|
297
|
-
regular: bool | None =
|
298
|
+
regular: bool | None = pydantic.Field(
|
298
299
|
default=None,
|
299
300
|
description="Glass tile that is typically square or rectangular in shape, and used for a variety of decorative applications, such as kitchen backsplashes, shower walls, and accent borders.",
|
300
301
|
)
|
301
|
-
glass_mosaic: bool | None =
|
302
|
+
glass_mosaic: bool | None = pydantic.Field(
|
302
303
|
default=None,
|
303
304
|
description="A small, decorative glass tile made in a variety of shapes and colors, used for intricate designs and patterns on walls, floors, and other surfaces.",
|
304
305
|
)
|
305
|
-
miniature_mosaic: bool | None =
|
306
|
+
miniature_mosaic: bool | None = pydantic.Field(
|
306
307
|
default=None,
|
307
308
|
description="Glass mosaic tile that is smaller in size than regular glass mosaic tile, often used for intricate details and designs in backsplashes, shower walls, and decorative accents.",
|
308
309
|
)
|
309
|
-
large_format: bool | None =
|
310
|
+
large_format: bool | None = pydantic.Field(
|
310
311
|
default=None,
|
311
312
|
description="Glass tile that is larger in size than regular glass tile, often used to create a dramatic and modern effect in commercial and residential spaces.",
|
312
313
|
)
|
@@ -349,12 +350,13 @@ class CeilingPanelRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
349
350
|
|
350
351
|
_EXT_VERSION = "1.0"
|
351
352
|
|
352
|
-
fire_rating: list[CeilingPanelFireRating] | None =
|
353
|
-
core_material: list[CeilingPanelCoreMaterial] | None =
|
354
|
-
nrc: RangeRatioFloat | None =
|
355
|
-
default=None,
|
353
|
+
fire_rating: list[CeilingPanelFireRating] | None = pydantic.Field(default=None, description="")
|
354
|
+
core_material: list[CeilingPanelCoreMaterial] | None = pydantic.Field(default=None, description="")
|
355
|
+
nrc: RangeRatioFloat | None = pydantic.Field(
|
356
|
+
default=None,
|
357
|
+
description="Noise Reduction Coefficient (NRC) or Sound Absorbtion Average (SAA) per ASTM C423",
|
356
358
|
)
|
357
|
-
cac: RangeInt | None =
|
359
|
+
cac: RangeInt | None = pydantic.Field(default=None, description="Ceiling Attenuation Class (CAC) per ASTM E1414")
|
358
360
|
AcousticalCeilings: AcousticalCeilingsRangeV1 | None = None
|
359
361
|
|
360
362
|
|
@@ -377,7 +379,7 @@ class CementBoardRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
377
379
|
|
378
380
|
_EXT_VERSION = "1.0"
|
379
381
|
|
380
|
-
thickness: list[CementBoardThickness] | None =
|
382
|
+
thickness: list[CementBoardThickness] | None = pydantic.Field(default=None, description="")
|
381
383
|
|
382
384
|
|
383
385
|
class TilingRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -391,31 +393,33 @@ class TilingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
391
393
|
|
392
394
|
_EXT_VERSION = "1.0"
|
393
395
|
|
394
|
-
thickness: AmountRangeLengthMm | None =
|
395
|
-
flooring: bool | None =
|
396
|
-
wall_finish: bool | None =
|
396
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
397
|
+
flooring: bool | None = pydantic.Field(default=None, description="Tiling intended for walking.")
|
398
|
+
wall_finish: bool | None = pydantic.Field(
|
397
399
|
default=None,
|
398
400
|
description="A decorative tile designed for use on vertical surfaces such as walls or backsplashes.",
|
399
401
|
)
|
400
|
-
cladding: bool | None =
|
402
|
+
cladding: bool | None = pydantic.Field(
|
401
403
|
default=None,
|
402
404
|
description="Tiling for exterior use, primarily used for the walls of buildings and structures, providing a protective and decorative layer that enhances the aesthetic appearance and weather resistance of the underlying structure.",
|
403
405
|
)
|
404
|
-
other: bool | None =
|
405
|
-
default=None,
|
406
|
+
other: bool | None = pydantic.Field(
|
407
|
+
default=None,
|
408
|
+
description="Tiling used as countertops, ceilings, furnishings, hardscapes etc.",
|
406
409
|
)
|
407
|
-
residential_only: bool | None =
|
410
|
+
residential_only: bool | None = pydantic.Field(
|
408
411
|
default=None,
|
409
412
|
description="All commercial tile can also be used in residential applications, but the opposite may not be true. This selection allows to filter out tiling that is not intended for commercial applications.",
|
410
413
|
)
|
411
|
-
reinforced: bool | None =
|
412
|
-
default=None,
|
414
|
+
reinforced: bool | None = pydantic.Field(
|
415
|
+
default=None,
|
416
|
+
description="Steel-reinforced ceramic tiles or tiles with other special reinforcing technology.",
|
413
417
|
)
|
414
|
-
total_recycled_content: RangeRatioFloat | None =
|
418
|
+
total_recycled_content: RangeRatioFloat | None = pydantic.Field(
|
415
419
|
default=None,
|
416
420
|
description="Proportion of this product that is sourced from recycled content. Pre-consumer recycling is given a 50% weighting, 100% for post-consumer, by mass.",
|
417
421
|
)
|
418
|
-
post_consumer_recycled_content: RangeRatioFloat | None =
|
422
|
+
post_consumer_recycled_content: RangeRatioFloat | None = pydantic.Field(
|
419
423
|
default=None,
|
420
424
|
description="Proportion of this product that is sourced from post-consumer recycled content, by mass.",
|
421
425
|
)
|
@@ -434,12 +438,12 @@ class DeckingBoardsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
434
438
|
_EXT_VERSION = "1.0"
|
435
439
|
|
436
440
|
forest_practices_certifiers: list[OrgRef] | None = None
|
437
|
-
timber_species: list[SawnTimberSpecies] | None =
|
438
|
-
fabrication: list[AllFabrication] | None =
|
439
|
-
weather_exposed: bool | None =
|
440
|
-
fire_retardant: bool | None =
|
441
|
-
decay_resistant: bool | None =
|
442
|
-
material: list[DeckingBoardMaterial] | None =
|
441
|
+
timber_species: list[SawnTimberSpecies] | None = pydantic.Field(default=None, description="")
|
442
|
+
fabrication: list[AllFabrication] | None = pydantic.Field(default=None, description="")
|
443
|
+
weather_exposed: bool | None = pydantic.Field(default=None, description="")
|
444
|
+
fire_retardant: bool | None = pydantic.Field(default=None, description="")
|
445
|
+
decay_resistant: bool | None = pydantic.Field(default=None, description="")
|
446
|
+
material: list[DeckingBoardMaterial] | None = pydantic.Field(default=None, description="")
|
443
447
|
|
444
448
|
|
445
449
|
class GlassFiberReinforcedGypsumFabricationsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -461,20 +465,20 @@ class GypsumRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
461
465
|
|
462
466
|
_EXT_VERSION = "1.1"
|
463
467
|
|
464
|
-
fire_rating: list[GypsumFireRating] | None =
|
465
|
-
thickness: list[GypsumThickness] | None =
|
466
|
-
facing: list[GypsumFacing] | None =
|
467
|
-
r_factor: AmountRangeRFactor | None =
|
468
|
-
flame_spread_astm_e84: RangeInt | None =
|
469
|
-
smoke_production_astm_e84: RangeInt | None =
|
470
|
-
surface_abrasion_d4977: RangeInt | None =
|
471
|
-
indentation_d5420: RangeInt | None =
|
472
|
-
soft_body_impact_e695: RangeInt | None =
|
473
|
-
hard_body_impact_c1929: RangeInt | None =
|
474
|
-
mold_resistant: bool | None =
|
475
|
-
foil_backing: bool | None =
|
476
|
-
moisture_resistant: bool | None =
|
477
|
-
abuse_resistant: bool | None =
|
468
|
+
fire_rating: list[GypsumFireRating] | None = pydantic.Field(default=None, description="")
|
469
|
+
thickness: list[GypsumThickness] | None = pydantic.Field(default=None, description="")
|
470
|
+
facing: list[GypsumFacing] | None = pydantic.Field(default=None, description="")
|
471
|
+
r_factor: AmountRangeRFactor | None = pydantic.Field(default=None, description="")
|
472
|
+
flame_spread_astm_e84: RangeInt | None = pydantic.Field(default=None, description="")
|
473
|
+
smoke_production_astm_e84: RangeInt | None = pydantic.Field(default=None, description="")
|
474
|
+
surface_abrasion_d4977: RangeInt | None = pydantic.Field(default=None, description="")
|
475
|
+
indentation_d5420: RangeInt | None = pydantic.Field(default=None, description="")
|
476
|
+
soft_body_impact_e695: RangeInt | None = pydantic.Field(default=None, description="")
|
477
|
+
hard_body_impact_c1929: RangeInt | None = pydantic.Field(default=None, description="")
|
478
|
+
mold_resistant: bool | None = pydantic.Field(default=None, description="")
|
479
|
+
foil_backing: bool | None = pydantic.Field(default=None, description="")
|
480
|
+
moisture_resistant: bool | None = pydantic.Field(default=None, description="")
|
481
|
+
abuse_resistant: bool | None = pydantic.Field(default=None, description="")
|
478
482
|
GypsumSupports: GypsumSupportsRangeV1 | None = None
|
479
483
|
|
480
484
|
|
@@ -547,7 +551,7 @@ class WallFinishesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
547
551
|
|
548
552
|
_EXT_VERSION = "1.0"
|
549
553
|
|
550
|
-
thickness: AmountRangeLengthMm | None =
|
554
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
551
555
|
|
552
556
|
|
553
557
|
class PlasterRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -563,9 +567,10 @@ class PlasterRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
563
567
|
|
564
568
|
_EXT_VERSION = "1.0"
|
565
569
|
|
566
|
-
composition: list[PlasterComposition] | None =
|
567
|
-
application_rate: RangeAmount | None =
|
568
|
-
default=None,
|
570
|
+
composition: list[PlasterComposition] | None = pydantic.Field(default=None, description="")
|
571
|
+
application_rate: RangeAmount | None = pydantic.Field(
|
572
|
+
default=None,
|
573
|
+
description="Typical or reference amount of material covering a unit of a host surface.",
|
569
574
|
)
|
570
575
|
|
571
576
|
|
@@ -21,10 +21,8 @@ __all__ = (
|
|
21
21
|
"FireAndSmokeProtectionRangeV1",
|
22
22
|
)
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
import pydantic
|
26
25
|
|
27
|
-
from openepd.compat.pydantic import pyd
|
28
26
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
29
27
|
from openepd.model.specs.enums import (
|
30
28
|
IntumescentFireproofingMaterialType,
|
@@ -33,6 +31,8 @@ from openepd.model.specs.enums import (
|
|
33
31
|
)
|
34
32
|
from openepd.model.validation.quantity import AmountRangeLengthMm
|
35
33
|
|
34
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
35
|
+
|
36
36
|
|
37
37
|
class IntumescentFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
38
38
|
"""
|
@@ -45,7 +45,7 @@ class IntumescentFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
45
45
|
|
46
46
|
_EXT_VERSION = "1.0"
|
47
47
|
|
48
|
-
material_type: list[IntumescentFireproofingMaterialType] | None =
|
48
|
+
material_type: list[IntumescentFireproofingMaterialType] | None = pydantic.Field(default=None, description="")
|
49
49
|
|
50
50
|
|
51
51
|
class SprayFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -59,8 +59,8 @@ class SprayFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
59
59
|
|
60
60
|
_EXT_VERSION = "1.0"
|
61
61
|
|
62
|
-
material_type: list[SprayFireproofingMaterialType] | None =
|
63
|
-
density: list[SprayFireproofingDensity] | None =
|
62
|
+
material_type: list[SprayFireproofingMaterialType] | None = pydantic.Field(default=None, description="")
|
63
|
+
density: list[SprayFireproofingDensity] | None = pydantic.Field(default=None, description="")
|
64
64
|
|
65
65
|
|
66
66
|
class AppliedFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -75,7 +75,7 @@ class AppliedFireproofingRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
75
75
|
|
76
76
|
_EXT_VERSION = "1.0"
|
77
77
|
|
78
|
-
thickness: AmountRangeLengthMm | None =
|
78
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
79
79
|
IntumescentFireproofing: IntumescentFireproofingRangeV1 | None = None
|
80
80
|
SprayFireproofing: SprayFireproofingRangeV1 | None = None
|
81
81
|
|
@@ -32,15 +32,15 @@ __all__ = (
|
|
32
32
|
"FurnishingsRangeV1",
|
33
33
|
)
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
import pydantic
|
37
36
|
|
38
|
-
from openepd.compat.pydantic import pyd
|
39
37
|
from openepd.model.common import RangeInt, RangeRatioFloat
|
40
38
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
41
39
|
from openepd.model.specs.enums import CountertopMaterial
|
42
40
|
from openepd.model.validation.quantity import AmountRangeAreaM2, AmountRangeLengthMm, AmountRangeVolume
|
43
41
|
|
42
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
43
|
+
|
44
44
|
|
45
45
|
class DemountablePartitionTrackRangeV1(BaseOpenEpdHierarchicalSpec):
|
46
46
|
"""
|
@@ -71,8 +71,8 @@ class CountertopsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
71
71
|
|
72
72
|
_EXT_VERSION = "1.0"
|
73
73
|
|
74
|
-
thickness: AmountRangeLengthMm | None =
|
75
|
-
countertop_material: list[CountertopMaterial] | None =
|
74
|
+
thickness: AmountRangeLengthMm | None = pydantic.Field(default=None, description="")
|
75
|
+
countertop_material: list[CountertopMaterial] | None = pydantic.Field(default=None, description="")
|
76
76
|
|
77
77
|
|
78
78
|
class DemountablePartitionsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -226,21 +226,25 @@ class FurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
226
226
|
|
227
227
|
_EXT_VERSION = "1.1"
|
228
228
|
|
229
|
-
functional_floor_area_m2: AmountRangeAreaM2 | None =
|
230
|
-
default=None,
|
229
|
+
functional_floor_area_m2: AmountRangeAreaM2 | None = pydantic.Field(
|
230
|
+
default=None,
|
231
|
+
title="Functional Floor Area",
|
232
|
+
description="The floor area that the product occupies.",
|
231
233
|
)
|
232
|
-
work_surface_area_m2: AmountRangeAreaM2 | None =
|
233
|
-
default=None,
|
234
|
+
work_surface_area_m2: AmountRangeAreaM2 | None = pydantic.Field(
|
235
|
+
default=None,
|
236
|
+
title="Work Surface Area",
|
237
|
+
description="The usable work surface area that the product provides.",
|
234
238
|
)
|
235
|
-
functional_storage_volume_m3: AmountRangeVolume | None =
|
239
|
+
functional_storage_volume_m3: AmountRangeVolume | None = pydantic.Field(
|
236
240
|
default=None, title="Functional Storage Volume", description=""
|
237
241
|
)
|
238
|
-
functional_seating_capacity: RangeInt | None =
|
242
|
+
functional_seating_capacity: RangeInt | None = pydantic.Field(
|
239
243
|
default=None,
|
240
244
|
title="Functional Seating Capacity",
|
241
245
|
description="Intended number of individuals the product seats. This value is used in calculating impact per functional unit.",
|
242
246
|
)
|
243
|
-
installation_waste_factor: RangeRatioFloat | None =
|
247
|
+
installation_waste_factor: RangeRatioFloat | None = pydantic.Field(
|
244
248
|
default=None,
|
245
249
|
title="Installation Waste Factor",
|
246
250
|
description="Typical increase in impacts to account for installation waste.",
|
@@ -26,10 +26,8 @@ __all__ = (
|
|
26
26
|
"ManufacturingInputsRangeV1",
|
27
27
|
)
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
import pydantic
|
31
30
|
|
32
|
-
from openepd.compat.pydantic import pyd
|
33
31
|
from openepd.model.common import RangeFloat
|
34
32
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
35
33
|
from openepd.model.specs.concrete import Cementitious
|
@@ -45,6 +43,8 @@ from openepd.model.specs.enums import (
|
|
45
43
|
TextilesFabricType,
|
46
44
|
)
|
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 CementRangeV1(BaseOpenEpdHierarchicalSpec):
|
50
50
|
"""
|
@@ -57,13 +57,13 @@ class CementRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
57
57
|
|
58
58
|
_EXT_VERSION = "1.0"
|
59
59
|
|
60
|
-
cementitious: Cementitious | None =
|
61
|
-
white_cement: bool | None =
|
62
|
-
astm_type: list[CementAstmType] | None =
|
63
|
-
c1157: list[CementC1157] | None =
|
64
|
-
csa_a3001: list[CementCsaA3001] | None =
|
65
|
-
en197_1: list[CementEn197_1] | None =
|
66
|
-
oil_well_cement: bool | None =
|
60
|
+
cementitious: Cementitious | None = pydantic.Field(default=None, description="")
|
61
|
+
white_cement: bool | None = pydantic.Field(default=None, description="")
|
62
|
+
astm_type: list[CementAstmType] | None = pydantic.Field(default=None, description="")
|
63
|
+
c1157: list[CementC1157] | None = pydantic.Field(default=None, description="")
|
64
|
+
csa_a3001: list[CementCsaA3001] | None = pydantic.Field(default=None, description="")
|
65
|
+
en197_1: list[CementEn197_1] | None = pydantic.Field(default=None, description="")
|
66
|
+
oil_well_cement: bool | None = pydantic.Field(default=None, description="")
|
67
67
|
|
68
68
|
|
69
69
|
class MasonryCementRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -77,7 +77,7 @@ class MasonryCementRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
77
77
|
|
78
78
|
_EXT_VERSION = "1.0"
|
79
79
|
|
80
|
-
astm_c91_type: list[MasonryCementAstmC91Type] | None =
|
80
|
+
astm_c91_type: list[MasonryCementAstmC91Type] | None = pydantic.Field(default=None, description="")
|
81
81
|
|
82
82
|
|
83
83
|
class SupplementaryCementitiousMaterialsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -89,7 +89,7 @@ class SupplementaryCementitiousMaterialsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
89
89
|
|
90
90
|
_EXT_VERSION = "1.0"
|
91
91
|
|
92
|
-
cement_scm: list[CementScm] | None =
|
92
|
+
cement_scm: list[CementScm] | None = pydantic.Field(default=None, description="")
|
93
93
|
|
94
94
|
|
95
95
|
class AccessFlooringPedestalsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -124,8 +124,8 @@ class CarpetFiberRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
124
124
|
|
125
125
|
_EXT_VERSION = "1.0"
|
126
126
|
|
127
|
-
yarn_material: list[CarpetYarnType] | None =
|
128
|
-
yarn_recycled_content: RangeFloat | None =
|
127
|
+
yarn_material: list[CarpetYarnType] | None = pydantic.Field(default=None, description="")
|
128
|
+
yarn_recycled_content: RangeFloat | None = pydantic.Field(default=None, description="")
|
129
129
|
|
130
130
|
|
131
131
|
class CementitiousMaterialsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -155,7 +155,7 @@ class ConcreteAdmixturesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
155
155
|
|
156
156
|
_EXT_VERSION = "1.0"
|
157
157
|
|
158
|
-
effects: list[AdmixtureEffects] | None =
|
158
|
+
effects: list[AdmixtureEffects] | None = pydantic.Field(default=None, description="")
|
159
159
|
|
160
160
|
|
161
161
|
class TextilesRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -167,7 +167,7 @@ class TextilesRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
167
167
|
|
168
168
|
_EXT_VERSION = "1.0"
|
169
169
|
|
170
|
-
fabric_type: list[TextilesFabricType] | None =
|
170
|
+
fabric_type: list[TextilesFabricType] | None = pydantic.Field(default=None, description="")
|
171
171
|
|
172
172
|
|
173
173
|
class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -20,13 +20,13 @@ __all__ = (
|
|
20
20
|
"MasonryRangeV1",
|
21
21
|
)
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
import pydantic
|
25
24
|
|
26
|
-
from openepd.compat.pydantic import pyd
|
27
25
|
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
28
26
|
from openepd.model.validation.quantity import AmountRangePressureMpa, AmountRangeThermalConductivity
|
29
27
|
|
28
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
29
|
+
|
30
30
|
|
31
31
|
class GMURangeV1(BaseOpenEpdHierarchicalSpec):
|
32
32
|
"""
|
@@ -47,9 +47,9 @@ class AutoclavedAeratedConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
47
47
|
|
48
48
|
_EXT_VERSION = "1.0"
|
49
49
|
|
50
|
-
strength_28d: AmountRangePressureMpa | None =
|
51
|
-
thermal_conductivity: AmountRangeThermalConductivity | None =
|
52
|
-
white: bool | None =
|
50
|
+
strength_28d: AmountRangePressureMpa | None = pydantic.Field(default=None, description="")
|
51
|
+
thermal_conductivity: AmountRangeThermalConductivity | None = pydantic.Field(default=None, description="")
|
52
|
+
white: bool | None = pydantic.Field(default=None, description="")
|
53
53
|
|
54
54
|
|
55
55
|
class BrickRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -61,15 +61,15 @@ class BrickRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
61
61
|
|
62
62
|
_EXT_VERSION = "1.0"
|
63
63
|
|
64
|
-
building: bool | None =
|
65
|
-
facing: bool | None =
|
66
|
-
floor: bool | None =
|
67
|
-
pedestrian: bool | None =
|
68
|
-
paving: bool | None =
|
69
|
-
other: bool | None =
|
70
|
-
chemical_resistant: bool | None =
|
71
|
-
glazed: bool | None =
|
72
|
-
tiles: bool | None =
|
64
|
+
building: bool | None = pydantic.Field(default=None, description="")
|
65
|
+
facing: bool | None = pydantic.Field(default=None, description="")
|
66
|
+
floor: bool | None = pydantic.Field(default=None, description="")
|
67
|
+
pedestrian: bool | None = pydantic.Field(default=None, description="")
|
68
|
+
paving: bool | None = pydantic.Field(default=None, description="")
|
69
|
+
other: bool | None = pydantic.Field(default=None, description="")
|
70
|
+
chemical_resistant: bool | None = pydantic.Field(default=None, description="")
|
71
|
+
glazed: bool | None = pydantic.Field(default=None, description="")
|
72
|
+
tiles: bool | None = pydantic.Field(default=None, description="")
|
73
73
|
|
74
74
|
|
75
75
|
class MasonryRangeV1(BaseOpenEpdHierarchicalSpec):
|
@@ -81,7 +81,7 @@ class MasonryRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
81
81
|
|
82
82
|
_EXT_VERSION = "1.0"
|
83
83
|
|
84
|
-
white_cement: bool | None =
|
84
|
+
white_cement: bool | None = pydantic.Field(default=None, description="")
|
85
85
|
GMU: GMURangeV1 | None = None
|
86
86
|
AutoclavedAeratedConcrete: AutoclavedAeratedConcreteRangeV1 | None = None
|
87
87
|
Brick: BrickRangeV1 | None = None
|