openepd 5.0.0__py3-none-any.whl → 5.1.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.
Files changed (61) hide show
  1. openepd/__version__.py +1 -1
  2. openepd/model/common.py +39 -0
  3. openepd/model/declaration.py +7 -2
  4. openepd/model/geography.py +1 -1
  5. openepd/model/lcia.py +6 -3
  6. openepd/model/org.py +0 -1
  7. openepd/model/pcr.py +2 -2
  8. openepd/model/specs/README.md +34 -8
  9. openepd/model/specs/asphalt.py +2 -2
  10. openepd/model/specs/base.py +13 -0
  11. openepd/model/specs/generated/__init__.py +80 -0
  12. openepd/model/specs/generated/cladding.py +4 -4
  13. openepd/model/specs/generated/concrete.py +8 -7
  14. openepd/model/specs/generated/electrical.py +2 -2
  15. openepd/model/specs/generated/finishes.py +10 -6
  16. openepd/model/specs/generated/masonry.py +6 -2
  17. openepd/model/specs/generated/network_infrastructure.py +7 -2
  18. openepd/model/specs/generated/openings.py +10 -6
  19. openepd/model/specs/generated/sheathing.py +8 -4
  20. openepd/model/specs/generated/steel.py +10 -5
  21. openepd/model/specs/range/__init__.py +101 -0
  22. openepd/model/specs/range/accessories.py +97 -0
  23. openepd/model/specs/range/aggregates.py +57 -0
  24. openepd/model/specs/range/aluminium.py +92 -0
  25. openepd/model/specs/range/asphalt.py +61 -0
  26. openepd/model/specs/range/bulk_materials.py +31 -0
  27. openepd/model/specs/range/cast_decks_and_underlayment.py +34 -0
  28. openepd/model/specs/range/cladding.py +275 -0
  29. openepd/model/specs/range/cmu.py +44 -0
  30. openepd/model/specs/range/concrete.py +179 -0
  31. openepd/model/specs/range/conveying_equipment.py +86 -0
  32. openepd/model/specs/range/electrical.py +422 -0
  33. openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +96 -0
  34. openepd/model/specs/range/electricity.py +31 -0
  35. openepd/model/specs/range/finishes.py +585 -0
  36. openepd/model/specs/range/fire_and_smoke_protection.py +108 -0
  37. openepd/model/specs/range/furnishings.py +137 -0
  38. openepd/model/specs/range/grouting.py +34 -0
  39. openepd/model/specs/range/manufacturing_inputs.py +190 -0
  40. openepd/model/specs/range/masonry.py +87 -0
  41. openepd/model/specs/range/material_handling.py +50 -0
  42. openepd/model/specs/range/mechanical.py +307 -0
  43. openepd/model/specs/range/mechanical_insulation.py +42 -0
  44. openepd/model/specs/range/network_infrastructure.py +208 -0
  45. openepd/model/specs/range/openings.py +512 -0
  46. openepd/model/specs/range/other_electrical_equipment.py +31 -0
  47. openepd/model/specs/range/other_materials.py +194 -0
  48. openepd/model/specs/range/plumbing.py +200 -0
  49. openepd/model/specs/range/precast_concrete.py +115 -0
  50. openepd/model/specs/range/sheathing.py +86 -0
  51. openepd/model/specs/range/steel.py +332 -0
  52. openepd/model/specs/range/thermal_moisture_protection.py +336 -0
  53. openepd/model/specs/range/utility_piping.py +75 -0
  54. openepd/model/specs/range/wood.py +228 -0
  55. openepd/model/specs/range/wood_joists.py +44 -0
  56. openepd/model/validation/numbers.py +11 -5
  57. openepd/model/validation/quantity.py +440 -52
  58. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/METADATA +6 -1
  59. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/RECORD +61 -26
  60. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/LICENSE +0 -0
  61. {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,194 @@
1
+ #
2
+ # Copyright 2024 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ __all__ = (
17
+ "AuxiliariesRangeV1",
18
+ "CleaningProductsRangeV1",
19
+ "ClothingRangeV1",
20
+ "FoodBeverageRangeV1",
21
+ "TransportationInfrastructureRangeV1",
22
+ "UnsupportedRangeV1",
23
+ "CopperRangeV1",
24
+ "EarthworkRangeV1",
25
+ "ExteriorSunControlDevicesRangeV1",
26
+ "GypsumFinishingCompoundsRangeV1",
27
+ "ProfilesRangeV1",
28
+ "UnknownRangeV1",
29
+ "ZincRangeV1",
30
+ "OtherMaterialsRangeV1",
31
+ )
32
+
33
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
34
+
35
+
36
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
37
+
38
+
39
+ class AuxiliariesRangeV1(BaseOpenEpdHierarchicalSpec):
40
+ """
41
+ Auxiliaries performance specification.
42
+
43
+ Range version.
44
+ """
45
+
46
+ _EXT_VERSION = "1.0"
47
+
48
+
49
+ class CleaningProductsRangeV1(BaseOpenEpdHierarchicalSpec):
50
+ """
51
+ Cleaning and disinfecting solutions.
52
+
53
+ Range version.
54
+ """
55
+
56
+ _EXT_VERSION = "1.0"
57
+
58
+
59
+ class ClothingRangeV1(BaseOpenEpdHierarchicalSpec):
60
+ """
61
+ Clothing.
62
+
63
+ Range version.
64
+ """
65
+
66
+ _EXT_VERSION = "1.0"
67
+
68
+
69
+ class FoodBeverageRangeV1(BaseOpenEpdHierarchicalSpec):
70
+ """
71
+ Food Beverage and Tobacco Products.
72
+
73
+ Range version.
74
+ """
75
+
76
+ _EXT_VERSION = "1.0"
77
+
78
+
79
+ class TransportationInfrastructureRangeV1(BaseOpenEpdHierarchicalSpec):
80
+ """
81
+ A broad category for unclassified materials focused on transportation infrastructure.
82
+
83
+ Range version.
84
+ """
85
+
86
+ _EXT_VERSION = "1.0"
87
+
88
+ Auxiliaries: AuxiliariesRangeV1 | None = None
89
+
90
+
91
+ class UnsupportedRangeV1(BaseOpenEpdHierarchicalSpec):
92
+ """
93
+ A generic category for EPDs/Materials and categories that are explicitly not yet supported by EC3.
94
+
95
+ Assume that any data in this subcategory is unreliable.
96
+
97
+ Range version.
98
+ """
99
+
100
+ _EXT_VERSION = "1.0"
101
+
102
+ CleaningProducts: CleaningProductsRangeV1 | None = None
103
+ Clothing: ClothingRangeV1 | None = None
104
+ FoodBeverage: FoodBeverageRangeV1 | None = None
105
+
106
+
107
+ class CopperRangeV1(BaseOpenEpdHierarchicalSpec):
108
+ """
109
+ Products made of copper.
110
+
111
+ Range version.
112
+ """
113
+
114
+ _EXT_VERSION = "1.0"
115
+
116
+
117
+ class EarthworkRangeV1(BaseOpenEpdHierarchicalSpec):
118
+ """
119
+ Earthwork, including excavation, shoring, piles, etc.
120
+
121
+ Range version.
122
+ """
123
+
124
+ _EXT_VERSION = "1.0"
125
+
126
+
127
+ class ExteriorSunControlDevicesRangeV1(BaseOpenEpdHierarchicalSpec):
128
+ """
129
+ Sun control devices help to manage solar heat gain by redirecting sunlight.
130
+
131
+ Range version.
132
+ """
133
+
134
+ _EXT_VERSION = "1.0"
135
+
136
+
137
+ class GypsumFinishingCompoundsRangeV1(BaseOpenEpdHierarchicalSpec):
138
+ """
139
+ Plasters and the like for finishing Gypsum Sheet and Board.
140
+
141
+ Range version.
142
+ """
143
+
144
+ _EXT_VERSION = "1.0"
145
+
146
+
147
+ class ProfilesRangeV1(BaseOpenEpdHierarchicalSpec):
148
+ """
149
+ Metal or polymer profiles used for producing or installing of Windows, Doors, Frames and Cladding.
150
+
151
+ Range version.
152
+ """
153
+
154
+ _EXT_VERSION = "1.0"
155
+
156
+
157
+ class UnknownRangeV1(BaseOpenEpdHierarchicalSpec):
158
+ """
159
+ Materials with unknown category. Assume that any data in this subcategory is unreliable.
160
+
161
+ Range version.
162
+ """
163
+
164
+ _EXT_VERSION = "1.0"
165
+
166
+
167
+ class ZincRangeV1(BaseOpenEpdHierarchicalSpec):
168
+ """
169
+ Products made of zinc.
170
+
171
+ Range version.
172
+ """
173
+
174
+ _EXT_VERSION = "1.0"
175
+
176
+
177
+ class OtherMaterialsRangeV1(BaseOpenEpdHierarchicalSpec):
178
+ """
179
+ Broad category of materials not yet classified.
180
+
181
+ Range version.
182
+ """
183
+
184
+ _EXT_VERSION = "1.0"
185
+
186
+ TransportationInfrastructure: TransportationInfrastructureRangeV1 | None = None
187
+ Unsupported: UnsupportedRangeV1 | None = None
188
+ Copper: CopperRangeV1 | None = None
189
+ Earthwork: EarthworkRangeV1 | None = None
190
+ ExteriorSunControlDevices: ExteriorSunControlDevicesRangeV1 | None = None
191
+ GypsumFinishingCompounds: GypsumFinishingCompoundsRangeV1 | None = None
192
+ Profiles: ProfilesRangeV1 | None = None
193
+ Unknown: UnknownRangeV1 | None = None
194
+ Zinc: ZincRangeV1 | None = None
@@ -0,0 +1,200 @@
1
+ #
2
+ # Copyright 2024 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ __all__ = (
17
+ "BathtubsRangeV1",
18
+ "FaucetsRangeV1",
19
+ "OtherPlumbingFixturesRangeV1",
20
+ "WaterClosetsRangeV1",
21
+ "FireProtectionPipingRangeV1",
22
+ "FireSprinklersRangeV1",
23
+ "StorageTanksRangeV1",
24
+ "WaterHeatersRangeV1",
25
+ "PlumbingFixturesRangeV1",
26
+ "FireSuppressionRangeV1",
27
+ "PipingRangeV1",
28
+ "PlumbingEquipmentRangeV1",
29
+ "PlumbingRangeV1",
30
+ )
31
+
32
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
33
+
34
+
35
+ from openepd.compat.pydantic import pyd
36
+ from openepd.model.common import RangeAmount
37
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
38
+ from openepd.model.specs.generated.enums import FireProtectionPipingMaterial, PipingAnsiSchedule, PlumbingPipingMaterial
39
+ from openepd.model.validation.quantity import AmountRangeLengthMm
40
+
41
+
42
+ class BathtubsRangeV1(BaseOpenEpdHierarchicalSpec):
43
+ """
44
+ Bathtubs.
45
+
46
+ Range version.
47
+ """
48
+
49
+ _EXT_VERSION = "1.0"
50
+
51
+
52
+ class FaucetsRangeV1(BaseOpenEpdHierarchicalSpec):
53
+ """
54
+ Faucets.
55
+
56
+ Range version.
57
+ """
58
+
59
+ _EXT_VERSION = "1.0"
60
+
61
+
62
+ class OtherPlumbingFixturesRangeV1(BaseOpenEpdHierarchicalSpec):
63
+ """
64
+ Other plumbing fixtures.
65
+
66
+ Range version.
67
+ """
68
+
69
+ _EXT_VERSION = "1.0"
70
+
71
+
72
+ class WaterClosetsRangeV1(BaseOpenEpdHierarchicalSpec):
73
+ """
74
+ Water Closets.
75
+
76
+ Range version.
77
+ """
78
+
79
+ _EXT_VERSION = "1.0"
80
+
81
+
82
+ class FireProtectionPipingRangeV1(BaseOpenEpdHierarchicalSpec):
83
+ """
84
+ System of pipes used to supply fire-suppression fluids to homes and/or businesses.
85
+
86
+ Range version.
87
+ """
88
+
89
+ _EXT_VERSION = "1.0"
90
+
91
+ thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
92
+ piping_diameter: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
93
+ mass_per_unit_length: RangeAmount | None = pyd.Field(default=None, description="")
94
+ piping_ansi_schedule: list[PipingAnsiSchedule] | None = pyd.Field(default=None, description="")
95
+ fire_protection_piping_material: list[FireProtectionPipingMaterial] | None = pyd.Field(default=None, description="")
96
+
97
+
98
+ class FireSprinklersRangeV1(BaseOpenEpdHierarchicalSpec):
99
+ """
100
+ Fire sprinklers.
101
+
102
+ Range version.
103
+ """
104
+
105
+ _EXT_VERSION = "1.0"
106
+
107
+
108
+ class StorageTanksRangeV1(BaseOpenEpdHierarchicalSpec):
109
+ """
110
+ Storage tanks.
111
+
112
+ Range version.
113
+ """
114
+
115
+ _EXT_VERSION = "1.0"
116
+
117
+
118
+ class WaterHeatersRangeV1(BaseOpenEpdHierarchicalSpec):
119
+ """
120
+ Water heaters.
121
+
122
+ Range version.
123
+ """
124
+
125
+ _EXT_VERSION = "1.0"
126
+
127
+
128
+ class PlumbingFixturesRangeV1(BaseOpenEpdHierarchicalSpec):
129
+ """
130
+ Residential and commercial water closets, urinals, lavatories, sinks, bathtubs, showers, faucets, etc.
131
+
132
+ Range version.
133
+ """
134
+
135
+ _EXT_VERSION = "1.0"
136
+
137
+ Bathtubs: BathtubsRangeV1 | None = None
138
+ Faucets: FaucetsRangeV1 | None = None
139
+ OtherPlumbingFixtures: OtherPlumbingFixturesRangeV1 | None = None
140
+ WaterClosets: WaterClosetsRangeV1 | None = None
141
+
142
+
143
+ class FireSuppressionRangeV1(BaseOpenEpdHierarchicalSpec):
144
+ """
145
+ Systems used to extinguish, control, or prevent fires.
146
+
147
+ Range version.
148
+ """
149
+
150
+ _EXT_VERSION = "1.0"
151
+
152
+ FireProtectionPiping: FireProtectionPipingRangeV1 | None = None
153
+ FireSprinklers: FireSprinklersRangeV1 | None = None
154
+
155
+
156
+ class PipingRangeV1(BaseOpenEpdHierarchicalSpec):
157
+ """
158
+ Piping.
159
+
160
+ System of pipes used to provide water and fuel, remove wastewater, allow venting of gases, or supply
161
+ fire-suppression fluids to homes, businesses, or other facilities.
162
+
163
+ Range version.
164
+ """
165
+
166
+ _EXT_VERSION = "1.0"
167
+
168
+ thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
169
+ piping_diameter: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
170
+ mass_per_unit_length: RangeAmount | None = pyd.Field(default=None, description="")
171
+ piping_ansi_schedule: list[PipingAnsiSchedule] | None = pyd.Field(default=None, description="")
172
+ plumbing_piping_material: list[PlumbingPipingMaterial] | None = pyd.Field(default=None, description="")
173
+
174
+
175
+ class PlumbingEquipmentRangeV1(BaseOpenEpdHierarchicalSpec):
176
+ """
177
+ Water softeners, filtration equipment, water heaters, and other plumbing equipment.
178
+
179
+ Range version.
180
+ """
181
+
182
+ _EXT_VERSION = "1.0"
183
+
184
+ StorageTanks: StorageTanksRangeV1 | None = None
185
+ WaterHeaters: WaterHeatersRangeV1 | None = None
186
+
187
+
188
+ class PlumbingRangeV1(BaseOpenEpdHierarchicalSpec):
189
+ """
190
+ Residential and commercial plumbing equipment and fixtures.
191
+
192
+ Range version.
193
+ """
194
+
195
+ _EXT_VERSION = "1.0"
196
+
197
+ PlumbingFixtures: PlumbingFixturesRangeV1 | None = None
198
+ FireSuppression: FireSuppressionRangeV1 | None = None
199
+ Piping: PipingRangeV1 | None = None
200
+ PlumbingEquipment: PlumbingEquipmentRangeV1 | None = None
@@ -0,0 +1,115 @@
1
+ #
2
+ # Copyright 2024 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ __all__ = (
17
+ "ArchitecturalPrecastRangeV1",
18
+ "StructuralPrecastRangeV1",
19
+ "UtilityUndergroundPrecastRangeV1",
20
+ "CivilPrecastRangeV1",
21
+ "PrecastConcreteRangeV1",
22
+ )
23
+
24
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
25
+
26
+
27
+ from openepd.compat.pydantic import pyd
28
+ from openepd.model.common import RangeRatioFloat
29
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
30
+ from openepd.model.specs.generated.precast_concrete import (
31
+ ArchitecturalPrecastElementType,
32
+ CivilPrecastElementType,
33
+ StructuralPrecastElementType,
34
+ UtilityPrecastElementType,
35
+ )
36
+ from openepd.model.validation.quantity import AmountRangePressureMpa
37
+
38
+
39
+ class ArchitecturalPrecastRangeV1(BaseOpenEpdHierarchicalSpec):
40
+ """
41
+ Precast concrete cladding used for architectural purposes.
42
+
43
+ Range version.
44
+ """
45
+
46
+ _EXT_VERSION = "1.1"
47
+
48
+ element_type: ArchitecturalPrecastElementType | None = pyd.Field(
49
+ default=None, description="Precast element type used for architectural applications."
50
+ )
51
+
52
+
53
+ class StructuralPrecastRangeV1(BaseOpenEpdHierarchicalSpec):
54
+ """
55
+ Precast concrete used for structural purposes.
56
+
57
+ Range version.
58
+ """
59
+
60
+ _EXT_VERSION = "1.1"
61
+
62
+ element_type: StructuralPrecastElementType | None = pyd.Field(
63
+ default=None, description="Precast element type used for structural applications."
64
+ )
65
+
66
+
67
+ class UtilityUndergroundPrecastRangeV1(BaseOpenEpdHierarchicalSpec):
68
+ """
69
+ Precast concrete for utility vaults, manhole, drain inlets. Excludes piping.
70
+
71
+ Range version.
72
+ """
73
+
74
+ _EXT_VERSION = "1.1"
75
+
76
+ element_type: UtilityPrecastElementType | None = pyd.Field(
77
+ default=None, description="Precast element type used for utility underground applications."
78
+ )
79
+
80
+
81
+ class CivilPrecastRangeV1(BaseOpenEpdHierarchicalSpec):
82
+ """
83
+ Precast concrete used for civil engineering applications including bridges, highways, and railroads.
84
+
85
+ Range version.
86
+ """
87
+
88
+ _EXT_VERSION = "1.0"
89
+
90
+ element_type: CivilPrecastElementType | None = pyd.Field(
91
+ default=None, description="Precast element type used as civil engineering components."
92
+ )
93
+
94
+
95
+ class PrecastConcreteRangeV1(BaseOpenEpdHierarchicalSpec):
96
+ """
97
+ General category for precast concrete components.
98
+
99
+ Range version.
100
+ """
101
+
102
+ _EXT_VERSION = "1.1"
103
+
104
+ lightweight: bool | None = pyd.Field(default=None, description="")
105
+ concrete_compressive_strength_28d: AmountRangePressureMpa | None = pyd.Field(default=None, description="")
106
+ insulated: bool | None = pyd.Field(default=None, description="")
107
+ gfrc: bool | None = pyd.Field(
108
+ default=None,
109
+ description="Glass Fiber Reinforced Concrete is fiber-reinforced concrete sometimes used in architectural panels",
110
+ )
111
+ steel_mass_percentage: RangeRatioFloat | None = pyd.Field(default=None, description="")
112
+ ArchitecturalPrecast: ArchitecturalPrecastRangeV1 | None = None
113
+ StructuralPrecast: StructuralPrecastRangeV1 | None = None
114
+ UtilityUndergroundPrecast: UtilityUndergroundPrecastRangeV1 | None = None
115
+ CivilPrecast: CivilPrecastRangeV1 | None = None
@@ -0,0 +1,86 @@
1
+ #
2
+ # Copyright 2024 by C Change Labs Inc. www.c-change-labs.com
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ __all__ = (
17
+ "CementitiousSheathingBoardRangeV1",
18
+ "GypsumSheathingBoardRangeV1",
19
+ "SheathingRangeV1",
20
+ )
21
+
22
+ # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
23
+
24
+
25
+ from openepd.compat.pydantic import pyd
26
+ from openepd.model.common import RangeInt
27
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
28
+ from openepd.model.specs.generated.enums import GypsumFacing, GypsumFireRating, GypsumThickness
29
+ from openepd.model.validation.quantity import AmountRangeLengthMm
30
+
31
+
32
+ class CementitiousSheathingBoardRangeV1(BaseOpenEpdHierarchicalSpec):
33
+ """
34
+ Cementitious sheathing board.
35
+
36
+ Cementitious non-gypsum board used for sheathing exteriors, shaft walls, and interior walls/ceilings requiring
37
+ moisture resistance.
38
+
39
+ Range version.
40
+ """
41
+
42
+ _EXT_VERSION = "1.0"
43
+
44
+ cement_board_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
45
+
46
+
47
+ class GypsumSheathingBoardRangeV1(BaseOpenEpdHierarchicalSpec):
48
+ """
49
+ Cementitious sheathing board.
50
+
51
+ Gypsum board used for sheathing exteriors, shaft walls, and interior walls/ceilings requiring moisture resistance.
52
+
53
+ Range version.
54
+ """
55
+
56
+ _EXT_VERSION = "1.1"
57
+
58
+ fire_rating: list[GypsumFireRating] | None = pyd.Field(default=None, description="")
59
+ thickness: list[GypsumThickness] | None = pyd.Field(default=None, description="")
60
+ facing: list[GypsumFacing] | None = pyd.Field(default=None, description="")
61
+ r_factor: str | None = pyd.Field(default=None, description="")
62
+ flame_spread_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
63
+ smoke_production_astm_e84: RangeInt | None = pyd.Field(default=None, description="")
64
+ surface_abrasion_d4977: RangeInt | None = pyd.Field(default=None, description="")
65
+ indentation_d5420: RangeInt | None = pyd.Field(default=None, description="")
66
+ soft_body_impact_e695: RangeInt | None = pyd.Field(default=None, description="")
67
+ hard_body_impact_c1929: RangeInt | None = pyd.Field(default=None, description="")
68
+ mold_resistant: bool | None = pyd.Field(default=None, description="")
69
+ foil_backing: bool | None = pyd.Field(default=None, description="")
70
+ moisture_resistant: bool | None = pyd.Field(default=None, description="")
71
+ abuse_resistant: bool | None = pyd.Field(default=None, description="")
72
+
73
+
74
+ class SheathingRangeV1(BaseOpenEpdHierarchicalSpec):
75
+ """
76
+ Sheathing.
77
+
78
+ Boards or panels used in floor, wall and roof assemblies as a surface onto which other materials can be applied.
79
+
80
+ Range version.
81
+ """
82
+
83
+ _EXT_VERSION = "1.0"
84
+
85
+ CementitiousSheathingBoard: CementitiousSheathingBoardRangeV1 | None = None
86
+ GypsumSheathingBoard: GypsumSheathingBoardRangeV1 | None = None