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.
- openepd/__version__.py +1 -1
- openepd/model/common.py +39 -0
- openepd/model/declaration.py +7 -2
- openepd/model/geography.py +1 -1
- openepd/model/lcia.py +6 -3
- openepd/model/org.py +0 -1
- openepd/model/pcr.py +2 -2
- openepd/model/specs/README.md +34 -8
- openepd/model/specs/asphalt.py +2 -2
- openepd/model/specs/base.py +13 -0
- openepd/model/specs/generated/__init__.py +80 -0
- openepd/model/specs/generated/cladding.py +4 -4
- openepd/model/specs/generated/concrete.py +8 -7
- openepd/model/specs/generated/electrical.py +2 -2
- openepd/model/specs/generated/finishes.py +10 -6
- openepd/model/specs/generated/masonry.py +6 -2
- openepd/model/specs/generated/network_infrastructure.py +7 -2
- openepd/model/specs/generated/openings.py +10 -6
- openepd/model/specs/generated/sheathing.py +8 -4
- openepd/model/specs/generated/steel.py +10 -5
- openepd/model/specs/range/__init__.py +101 -0
- openepd/model/specs/range/accessories.py +97 -0
- openepd/model/specs/range/aggregates.py +57 -0
- openepd/model/specs/range/aluminium.py +92 -0
- openepd/model/specs/range/asphalt.py +61 -0
- openepd/model/specs/range/bulk_materials.py +31 -0
- openepd/model/specs/range/cast_decks_and_underlayment.py +34 -0
- openepd/model/specs/range/cladding.py +275 -0
- openepd/model/specs/range/cmu.py +44 -0
- openepd/model/specs/range/concrete.py +179 -0
- openepd/model/specs/range/conveying_equipment.py +86 -0
- openepd/model/specs/range/electrical.py +422 -0
- openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +96 -0
- openepd/model/specs/range/electricity.py +31 -0
- openepd/model/specs/range/finishes.py +585 -0
- openepd/model/specs/range/fire_and_smoke_protection.py +108 -0
- openepd/model/specs/range/furnishings.py +137 -0
- openepd/model/specs/range/grouting.py +34 -0
- openepd/model/specs/range/manufacturing_inputs.py +190 -0
- openepd/model/specs/range/masonry.py +87 -0
- openepd/model/specs/range/material_handling.py +50 -0
- openepd/model/specs/range/mechanical.py +307 -0
- openepd/model/specs/range/mechanical_insulation.py +42 -0
- openepd/model/specs/range/network_infrastructure.py +208 -0
- openepd/model/specs/range/openings.py +512 -0
- openepd/model/specs/range/other_electrical_equipment.py +31 -0
- openepd/model/specs/range/other_materials.py +194 -0
- openepd/model/specs/range/plumbing.py +200 -0
- openepd/model/specs/range/precast_concrete.py +115 -0
- openepd/model/specs/range/sheathing.py +86 -0
- openepd/model/specs/range/steel.py +332 -0
- openepd/model/specs/range/thermal_moisture_protection.py +336 -0
- openepd/model/specs/range/utility_piping.py +75 -0
- openepd/model/specs/range/wood.py +228 -0
- openepd/model/specs/range/wood_joists.py +44 -0
- openepd/model/validation/numbers.py +11 -5
- openepd/model/validation/quantity.py +440 -52
- {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/METADATA +6 -1
- {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/RECORD +61 -26
- {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/LICENSE +0 -0
- {openepd-5.0.0.dist-info → openepd-5.1.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,75 @@
|
|
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
|
+
"BuildingHeatingPipingRangeV1",
|
18
|
+
"BuriedPipingRangeV1",
|
19
|
+
"UtilityPipingRangeV1",
|
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 RangeAmount
|
27
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
28
|
+
from openepd.model.specs.generated.enums import BuriedPipingType, PipingAnsiSchedule, UtilityPipingMaterial
|
29
|
+
from openepd.model.validation.quantity import AmountRangeLengthMm
|
30
|
+
|
31
|
+
|
32
|
+
class BuildingHeatingPipingRangeV1(BaseOpenEpdHierarchicalSpec):
|
33
|
+
"""
|
34
|
+
Heating piping.
|
35
|
+
|
36
|
+
System of pipes used to supply heated fluids (liquids or steam) for purposes of controlling temperature inside a
|
37
|
+
home, business, or other building facility.
|
38
|
+
|
39
|
+
Range version.
|
40
|
+
"""
|
41
|
+
|
42
|
+
_EXT_VERSION = "1.0"
|
43
|
+
|
44
|
+
|
45
|
+
class BuriedPipingRangeV1(BaseOpenEpdHierarchicalSpec):
|
46
|
+
"""
|
47
|
+
System of pipes used to provide or transport fluids (liquids and gases) underground.
|
48
|
+
|
49
|
+
Range version.
|
50
|
+
"""
|
51
|
+
|
52
|
+
_EXT_VERSION = "1.0"
|
53
|
+
|
54
|
+
buried_piping_type: list[BuriedPipingType] | None = pyd.Field(default=None, description="")
|
55
|
+
|
56
|
+
|
57
|
+
class UtilityPipingRangeV1(BaseOpenEpdHierarchicalSpec):
|
58
|
+
"""
|
59
|
+
Utility piping.
|
60
|
+
|
61
|
+
System of pipes used to convey fluids (liquids and gases) from one location to another. Piping can be metal,
|
62
|
+
plastic, concrete, fiberglass, or other materials.
|
63
|
+
|
64
|
+
Range version.
|
65
|
+
"""
|
66
|
+
|
67
|
+
_EXT_VERSION = "1.0"
|
68
|
+
|
69
|
+
thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
70
|
+
piping_diameter: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
71
|
+
mass_per_unit_length: RangeAmount | None = pyd.Field(default=None, description="")
|
72
|
+
piping_ansi_schedule: list[PipingAnsiSchedule] | None = pyd.Field(default=None, description="")
|
73
|
+
utility_piping_material: list[UtilityPipingMaterial] | None = pyd.Field(default=None, description="")
|
74
|
+
BuildingHeatingPiping: BuildingHeatingPipingRangeV1 | None = None
|
75
|
+
BuriedPiping: BuriedPipingRangeV1 | None = None
|
@@ -0,0 +1,228 @@
|
|
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
|
+
"WoodDeckingRangeV1",
|
18
|
+
"WoodFramingRangeV1",
|
19
|
+
"PrefabricatedWoodInsulatedPanelsRangeV1",
|
20
|
+
"PrefabricatedWoodTrussRangeV1",
|
21
|
+
"CompositeLumberRangeV1",
|
22
|
+
"DimensionLumberRangeV1",
|
23
|
+
"HeavyTimberRangeV1",
|
24
|
+
"MassTimberRangeV1",
|
25
|
+
"NonStructuralWoodRangeV1",
|
26
|
+
"PrefabricatedWoodRangeV1",
|
27
|
+
"SheathingPanelsRangeV1",
|
28
|
+
"UnfinishedWoodRangeV1",
|
29
|
+
"WoodRangeV1",
|
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 RangeFloat, RangeRatioFloat
|
37
|
+
from openepd.model.org import OrgRef
|
38
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
39
|
+
from openepd.model.specs.generated.enums import (
|
40
|
+
AllFabrication,
|
41
|
+
AllTimberSpecies,
|
42
|
+
CompositeLumberFabrication,
|
43
|
+
EngineeredTimberSpecies,
|
44
|
+
MassTimberFabrication,
|
45
|
+
SawnTimberSpecies,
|
46
|
+
SheathingPanelsFabrication,
|
47
|
+
)
|
48
|
+
from openepd.model.validation.quantity import AmountRangeLengthMm
|
49
|
+
|
50
|
+
|
51
|
+
class WoodDeckingRangeV1(BaseOpenEpdHierarchicalSpec):
|
52
|
+
"""
|
53
|
+
Dimensional boards for exterior decking.
|
54
|
+
|
55
|
+
Range version.
|
56
|
+
"""
|
57
|
+
|
58
|
+
_EXT_VERSION = "1.0"
|
59
|
+
|
60
|
+
|
61
|
+
class WoodFramingRangeV1(BaseOpenEpdHierarchicalSpec):
|
62
|
+
"""
|
63
|
+
Dimension lumber for light framing.
|
64
|
+
|
65
|
+
Includes solid and finger-jointed lumber. Standard shapes include 2x4, 2x6, and 2x8.
|
66
|
+
|
67
|
+
Range version.
|
68
|
+
"""
|
69
|
+
|
70
|
+
_EXT_VERSION = "1.0"
|
71
|
+
|
72
|
+
|
73
|
+
class PrefabricatedWoodInsulatedPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
|
74
|
+
"""
|
75
|
+
Structural insulated panels (SIPs).
|
76
|
+
|
77
|
+
Consist of wood sheet layer(s) combined with (typically foam) insulation layer(s).
|
78
|
+
|
79
|
+
Range version.
|
80
|
+
"""
|
81
|
+
|
82
|
+
_EXT_VERSION = "1.0"
|
83
|
+
|
84
|
+
|
85
|
+
class PrefabricatedWoodTrussRangeV1(BaseOpenEpdHierarchicalSpec):
|
86
|
+
"""
|
87
|
+
Shop-fabricated wood truss.
|
88
|
+
|
89
|
+
Range version.
|
90
|
+
"""
|
91
|
+
|
92
|
+
_EXT_VERSION = "1.0"
|
93
|
+
|
94
|
+
|
95
|
+
class CompositeLumberRangeV1(BaseOpenEpdHierarchicalSpec):
|
96
|
+
"""
|
97
|
+
Shop-fabricated structural Lumber.
|
98
|
+
|
99
|
+
Includes Laminated Strand Lumber (LSL), Parallel Strand Lumber (PSL), and Laminated Veneer Lumber (LVL).
|
100
|
+
|
101
|
+
Range version.
|
102
|
+
"""
|
103
|
+
|
104
|
+
_EXT_VERSION = "1.0"
|
105
|
+
|
106
|
+
fabrication: list[CompositeLumberFabrication] | None = pyd.Field(default=None, description="")
|
107
|
+
timber_species: list[EngineeredTimberSpecies] | None = pyd.Field(default=None, description="")
|
108
|
+
|
109
|
+
|
110
|
+
class DimensionLumberRangeV1(BaseOpenEpdHierarchicalSpec):
|
111
|
+
"""
|
112
|
+
Dimension lumber for framing, decking, and other purposes.
|
113
|
+
|
114
|
+
Range version.
|
115
|
+
"""
|
116
|
+
|
117
|
+
_EXT_VERSION = "1.0"
|
118
|
+
|
119
|
+
timber_species: list[SawnTimberSpecies] | None = pyd.Field(default=None, description="")
|
120
|
+
WoodDecking: WoodDeckingRangeV1 | None = None
|
121
|
+
WoodFraming: WoodFramingRangeV1 | None = None
|
122
|
+
|
123
|
+
|
124
|
+
class HeavyTimberRangeV1(BaseOpenEpdHierarchicalSpec):
|
125
|
+
"""
|
126
|
+
Large format, unfinished natural timber.
|
127
|
+
|
128
|
+
Range version.
|
129
|
+
"""
|
130
|
+
|
131
|
+
_EXT_VERSION = "1.0"
|
132
|
+
|
133
|
+
|
134
|
+
class MassTimberRangeV1(BaseOpenEpdHierarchicalSpec):
|
135
|
+
"""
|
136
|
+
Engineered heavy timber products.
|
137
|
+
|
138
|
+
Includes glue laminated (glulam), cross-laminated timber (CLT), dowel laminated timber (DLT), and nail laminated
|
139
|
+
timber (NLT).
|
140
|
+
|
141
|
+
Range version.
|
142
|
+
"""
|
143
|
+
|
144
|
+
_EXT_VERSION = "1.0"
|
145
|
+
|
146
|
+
fabrication: list[MassTimberFabrication] | None = pyd.Field(default=None, description="")
|
147
|
+
timber_species: list[EngineeredTimberSpecies] | None = pyd.Field(default=None, description="")
|
148
|
+
|
149
|
+
|
150
|
+
class NonStructuralWoodRangeV1(BaseOpenEpdHierarchicalSpec):
|
151
|
+
"""
|
152
|
+
Non-structural interior and exterior wood products for trim, cabinets, countertops, etc.
|
153
|
+
|
154
|
+
Range version.
|
155
|
+
"""
|
156
|
+
|
157
|
+
_EXT_VERSION = "1.0"
|
158
|
+
|
159
|
+
|
160
|
+
class PrefabricatedWoodRangeV1(BaseOpenEpdHierarchicalSpec):
|
161
|
+
"""
|
162
|
+
Prefabricated wood structural members made primarily from one or more types of wood.
|
163
|
+
|
164
|
+
Includes products made with metallic connectors, insulation, etc. Excludes products where the wood is merely
|
165
|
+
decorative.
|
166
|
+
|
167
|
+
Range version.
|
168
|
+
"""
|
169
|
+
|
170
|
+
_EXT_VERSION = "1.0"
|
171
|
+
|
172
|
+
PrefabricatedWoodInsulatedPanels: PrefabricatedWoodInsulatedPanelsRangeV1 | None = None
|
173
|
+
PrefabricatedWoodTruss: PrefabricatedWoodTrussRangeV1 | None = None
|
174
|
+
|
175
|
+
|
176
|
+
class SheathingPanelsRangeV1(BaseOpenEpdHierarchicalSpec):
|
177
|
+
"""
|
178
|
+
Wood sheets used for structural sheathing, including plywood and Oriented Strand Board.
|
179
|
+
|
180
|
+
Range version.
|
181
|
+
"""
|
182
|
+
|
183
|
+
_EXT_VERSION = "1.0"
|
184
|
+
|
185
|
+
fabrication: list[SheathingPanelsFabrication] | None = pyd.Field(default=None, description="")
|
186
|
+
wood_board_thickness: AmountRangeLengthMm | None = pyd.Field(default=None, description="")
|
187
|
+
timber_species: list[EngineeredTimberSpecies] | None = pyd.Field(default=None, description="")
|
188
|
+
|
189
|
+
|
190
|
+
class UnfinishedWoodRangeV1(BaseOpenEpdHierarchicalSpec):
|
191
|
+
"""
|
192
|
+
Raw logs and other unfinished wood products.
|
193
|
+
|
194
|
+
Range version.
|
195
|
+
"""
|
196
|
+
|
197
|
+
_EXT_VERSION = "1.0"
|
198
|
+
|
199
|
+
|
200
|
+
class WoodRangeV1(BaseOpenEpdHierarchicalSpec):
|
201
|
+
"""
|
202
|
+
Structural Wood Products used in construction.
|
203
|
+
|
204
|
+
Range version.
|
205
|
+
"""
|
206
|
+
|
207
|
+
_EXT_VERSION = "1.0"
|
208
|
+
|
209
|
+
forest_practices_certifiers: list[OrgRef] | None = None
|
210
|
+
timber_species: list[AllTimberSpecies] | None = pyd.Field(default=None, description="Timber species")
|
211
|
+
fabrication: list[AllFabrication] | None = pyd.Field(default=None, description="Timber fabrication")
|
212
|
+
weather_exposed: bool | None = pyd.Field(default=None, description="Weather exposed")
|
213
|
+
fire_retardant: bool | None = pyd.Field(default=None, description="Fire retardant")
|
214
|
+
decay_resistant: bool | None = pyd.Field(default=None, description="Decay resistant")
|
215
|
+
fsc_certified: RangeRatioFloat | None = pyd.Field(
|
216
|
+
default=None, description="Forest Stewardship Council certified proportion"
|
217
|
+
)
|
218
|
+
fsc_certified_z: RangeFloat | None = pyd.Field(default=None, description="")
|
219
|
+
recycled_content: RangeRatioFloat | None = pyd.Field(default=None, description="Recycled content")
|
220
|
+
recycled_content_z: RangeFloat | None = pyd.Field(default=None, description="")
|
221
|
+
CompositeLumber: CompositeLumberRangeV1 | None = None
|
222
|
+
DimensionLumber: DimensionLumberRangeV1 | None = None
|
223
|
+
HeavyTimber: HeavyTimberRangeV1 | None = None
|
224
|
+
MassTimber: MassTimberRangeV1 | None = None
|
225
|
+
NonStructuralWood: NonStructuralWoodRangeV1 | None = None
|
226
|
+
PrefabricatedWood: PrefabricatedWoodRangeV1 | None = None
|
227
|
+
SheathingPanels: SheathingPanelsRangeV1 | None = None
|
228
|
+
UnfinishedWood: UnfinishedWoodRangeV1 | None = None
|
@@ -0,0 +1,44 @@
|
|
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__ = ("WoodJoistsRangeV1",)
|
17
|
+
|
18
|
+
# NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
|
19
|
+
|
20
|
+
|
21
|
+
from openepd.compat.pydantic import pyd
|
22
|
+
from openepd.model.org import OrgRef
|
23
|
+
from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
|
24
|
+
from openepd.model.specs.generated.enums import AllFabrication, AllTimberSpecies
|
25
|
+
|
26
|
+
|
27
|
+
class WoodJoistsRangeV1(BaseOpenEpdHierarchicalSpec):
|
28
|
+
"""
|
29
|
+
Wood joists.
|
30
|
+
|
31
|
+
Prefabricated I-shaped engineered wood structural members made primarily from one or more types of wood. Includes
|
32
|
+
products made with metallic webbing. Excludes products where the wood is merely decorative.
|
33
|
+
|
34
|
+
Range version.
|
35
|
+
"""
|
36
|
+
|
37
|
+
_EXT_VERSION = "1.0"
|
38
|
+
|
39
|
+
forest_practices_certifiers: list[OrgRef] | None = None
|
40
|
+
timber_species: list[AllTimberSpecies] | None = pyd.Field(default=None, description="")
|
41
|
+
fabrication: list[AllFabrication] | None = pyd.Field(default=None, description="")
|
42
|
+
weather_exposed: bool | None = pyd.Field(default=None, description="")
|
43
|
+
fire_retardant: bool | None = pyd.Field(default=None, description="")
|
44
|
+
decay_resistant: bool | None = pyd.Field(default=None, description="")
|
@@ -13,10 +13,16 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
-
from typing import Annotated
|
17
16
|
|
18
|
-
from openepd.compat.pydantic import pyd
|
19
17
|
|
20
|
-
# todo when move to pydantic 2,
|
21
|
-
RatioFloat
|
22
|
-
|
18
|
+
# todo when move to pydantic 2, these should change to Annotated[float, ...]
|
19
|
+
class RatioFloat(float):
|
20
|
+
"""Float representing a ratio (0-1)."""
|
21
|
+
|
22
|
+
pass
|
23
|
+
|
24
|
+
|
25
|
+
class PositiveInt(int):
|
26
|
+
"""Greater than zero integer."""
|
27
|
+
|
28
|
+
pass
|