openepd 3.1.1__py3-none-any.whl → 3.1.2__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/specs/generated/concrete.py +62 -17
- openepd/model/specs/generated/enums.py +26 -20
- openepd/model/specs/generated/openings.py +209 -79
- openepd/model/specs/generated/steel.py +109 -42
- {openepd-3.1.1.dist-info → openepd-3.1.2.dist-info}/METADATA +2 -1
- {openepd-3.1.1.dist-info → openepd-3.1.2.dist-info}/RECORD +9 -9
- {openepd-3.1.1.dist-info → openepd-3.1.2.dist-info}/LICENSE +0 -0
- {openepd-3.1.1.dist-info → openepd-3.1.2.dist-info}/WHEEL +0 -0
openepd/__version__.py
CHANGED
@@ -34,19 +34,26 @@ from openepd.model.validation.quantity import (
|
|
34
34
|
|
35
35
|
|
36
36
|
class CementGroutV1(BaseOpenEpdHierarchicalSpec):
|
37
|
-
"""
|
37
|
+
"""
|
38
|
+
Cement grout performance specification.
|
39
|
+
|
40
|
+
Cement grouting is a slurry that is placed as a flowable liquid. It is an effective material
|
41
|
+
for filling and strengthening granular soils, voids in rocks, foundation underpinnings, and
|
42
|
+
other underground voids. Also called structural grout, these materials typically impart
|
43
|
+
significant compressive strength to the system.
|
44
|
+
"""
|
38
45
|
|
39
46
|
_EXT_VERSION = "1.0"
|
40
47
|
|
41
48
|
|
42
49
|
class ConcretePavingV1(BaseOpenEpdHierarchicalSpec):
|
43
|
-
"""Concrete paving
|
50
|
+
"""Concrete paving."""
|
44
51
|
|
45
52
|
_EXT_VERSION = "1.0"
|
46
53
|
|
47
54
|
# Own fields:
|
48
55
|
flexion_strength: PressureMPaStr | None = pyd.Field(
|
49
|
-
default=None, description="
|
56
|
+
default=None, description="Concrete flexural strength.", example="30 MPa"
|
50
57
|
)
|
51
58
|
|
52
59
|
_concrete_flexion_strength_is_quantity_validator = pyd.validator("flexion_strength", allow_reuse=True)(
|
@@ -55,36 +62,58 @@ class ConcretePavingV1(BaseOpenEpdHierarchicalSpec):
|
|
55
62
|
|
56
63
|
|
57
64
|
class FlowableFillV1(BaseOpenEpdHierarchicalSpec):
|
58
|
-
"""
|
65
|
+
"""
|
66
|
+
Flowable fill performance specification.
|
67
|
+
|
68
|
+
Flowable fill is a slurry that is placed as a flowable liquid (high slump) and sets with no
|
69
|
+
compaction. It is often used in tight or restricted access areas where placing and compacting
|
70
|
+
fill is difficult. Applications include filling large voids such as abandoned underground storage
|
71
|
+
tanks, basements, tunnels, mines, and sewers. It can also be used as paving sub-base, bridge
|
72
|
+
abutment, and retaining wall backfill.
|
73
|
+
|
74
|
+
Also called Controlled Density Fill (CDF) or Controlled Low Strength Materials (CLSMs). These materials typically
|
75
|
+
have compressive strengths under 1200 psi.
|
76
|
+
"""
|
59
77
|
|
60
78
|
_EXT_VERSION = "1.0"
|
61
79
|
|
62
80
|
|
63
81
|
class OilPatchV1(BaseOpenEpdHierarchicalSpec):
|
64
|
-
"""
|
82
|
+
"""
|
83
|
+
Petroleum Industry Cement Slurry.
|
84
|
+
|
85
|
+
Concretes for use in creation, maintenance, and decommissioning of petroleum extraction wells and similar
|
86
|
+
applications. Includes foamed cement; often called cement in the drilling industry. Differs from
|
87
|
+
flowable fill and grout in that it contains no sand or other aggregates.
|
88
|
+
"""
|
65
89
|
|
66
90
|
_EXT_VERSION = "1.0"
|
67
91
|
|
68
92
|
|
69
93
|
class ReadyMixV1(BaseOpenEpdHierarchicalSpec):
|
70
|
-
"""Concretes
|
94
|
+
"""Concretes to be mixed and then poured on-site."""
|
71
95
|
|
72
96
|
_EXT_VERSION = "1.0"
|
73
97
|
|
74
98
|
|
75
99
|
class ShotcreteV1(BaseOpenEpdHierarchicalSpec):
|
76
|
-
"""
|
100
|
+
"""Concretes sprayed on a target."""
|
77
101
|
|
78
102
|
_EXT_VERSION = "1.0"
|
79
103
|
|
80
104
|
|
81
105
|
class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
82
|
-
"""
|
106
|
+
"""
|
107
|
+
Concrete.
|
108
|
+
|
109
|
+
A composite material composed of fine and coarse aggregate bonded together with a fluid cement (cement paste) that
|
110
|
+
hardens over time.
|
111
|
+
"""
|
83
112
|
|
84
113
|
_EXT_VERSION = "1.0"
|
85
114
|
|
86
115
|
# Own fields:
|
87
|
-
lightweight: bool | None = pyd.Field(default=None, description="
|
116
|
+
lightweight: bool | None = pyd.Field(default=None, description="Product is lightweight", example=True)
|
88
117
|
|
89
118
|
strength_28d: PressureMPaStr | None = pyd.Field(
|
90
119
|
default=None, description="Concrete strength after 28 days", example="1 MPa"
|
@@ -95,14 +124,16 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
|
95
124
|
example="30 MPa",
|
96
125
|
)
|
97
126
|
strength_other_d: Literal[3, 7, 14, 42, 56, 72, 96, 120] | None = pyd.Field(
|
98
|
-
default=None, description="Test Day for
|
127
|
+
default=None, description="Test Day for strength_other", example=42
|
99
128
|
)
|
100
129
|
|
101
130
|
slump: LengthInchStr | None = pyd.Field(default=None, description="", example="2 in")
|
102
131
|
min_slump: LengthInchStr | None = pyd.Field(default=None, description="Minimum test slump", example="2 in")
|
103
132
|
max_slump: LengthInchStr | None = pyd.Field(default=None, description="", example="2 in")
|
104
133
|
|
105
|
-
min_pipeline_size: LengthMmStr | None = pyd.Field(
|
134
|
+
min_pipeline_size: LengthMmStr | None = pyd.Field(
|
135
|
+
default=None, description="Minimum pipeline size", example="200 mm"
|
136
|
+
)
|
106
137
|
w_c_ratio: RatioFloat | None = pyd.Field(
|
107
138
|
default=None, description="Ratio of water to cement", example=0.5, ge=0, le=1
|
108
139
|
)
|
@@ -114,13 +145,27 @@ class ConcreteV1(BaseOpenEpdHierarchicalSpec):
|
|
114
145
|
finishable: bool | None = pyd.Field(default=None, description="Finishable", example=True)
|
115
146
|
fiber_reinforced: bool | None = pyd.Field(default=None, description="fiber_reinforced", example=True)
|
116
147
|
|
117
|
-
cementitious: Cementitious | None = pyd.Field(
|
148
|
+
cementitious: Cementitious | None = pyd.Field(
|
149
|
+
default=None, description="List of cementitious materials, and proportion by mass"
|
150
|
+
)
|
118
151
|
|
119
|
-
aggregate_size_max: LengthMmStr | None = pyd.Field(
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
152
|
+
aggregate_size_max: LengthMmStr | None = pyd.Field(
|
153
|
+
default=None,
|
154
|
+
description="The smallest sieve size for which the entire amount of aggregate is able to pass. "
|
155
|
+
"Parameter describes diameter of aggregate",
|
156
|
+
example="8 mm",
|
157
|
+
)
|
158
|
+
cement_content: MassKgStr | None = pyd.Field(default=None, example="1 kg")
|
159
|
+
|
160
|
+
aci_exposure_classes: list[AciExposureClass] | None = pyd.Field(
|
161
|
+
default=None, description="List of ACI exposure classes", example=["aci.F0"]
|
162
|
+
)
|
163
|
+
csa_exposure_classes: list[CsaExposureClass] | None = pyd.Field(
|
164
|
+
default=None, description="List of CSA exposure classes", example=["csa.C-2"]
|
165
|
+
)
|
166
|
+
en_exposure_classes: list[EnExposureClass] | None = pyd.Field(
|
167
|
+
default=None, description="List of EN exposure classes", example=["en206.X0"]
|
168
|
+
)
|
124
169
|
typical_application: ConcreteTypicalApplication | None = pyd.Field(default=None, description="Typical Application")
|
125
170
|
|
126
171
|
_concrete_compressive_strength_28d_is_quantity_validator = pyd.validator("strength_28d", allow_reuse=True)(
|
@@ -372,14 +372,14 @@ class FrameMaterial(StrEnum):
|
|
372
372
|
"""
|
373
373
|
Frame material.
|
374
374
|
|
375
|
-
- Vinyl:
|
376
|
-
- Aluminium: Aluminium
|
377
|
-
- Steel: Steel
|
378
|
-
- Wood: Wood
|
379
|
-
- Fiberglass:
|
380
|
-
- Composite:
|
381
|
-
- None:
|
382
|
-
- Other: Other
|
375
|
+
- Vinyl: PVC and similar polymer frames
|
376
|
+
- Aluminium: Aluminium, with optional thermal improvement. Does not include aluminium clad.
|
377
|
+
- Steel: Steel, with optional thermal improvement
|
378
|
+
- Wood: Wood with optional cladding
|
379
|
+
- Fiberglass: Fiber reinforced plastic
|
380
|
+
- Composite: Plastic and Wood Fiber composite.
|
381
|
+
- None: This EPD does not cover the frame.
|
382
|
+
- Other: Other framing material not listed
|
383
383
|
|
384
384
|
"""
|
385
385
|
|
@@ -1793,12 +1793,12 @@ class HardwareFunction(StrEnum):
|
|
1793
1793
|
"""
|
1794
1794
|
Hardware function.
|
1795
1795
|
|
1796
|
-
- Lock:
|
1797
|
-
- Hinge:
|
1798
|
-
- Handle:
|
1799
|
-
- Operator:
|
1800
|
-
- Balance:
|
1801
|
-
- Other: Other
|
1796
|
+
- Lock: Locks, Keepers, and similar items that resist opening.
|
1797
|
+
- Hinge: Hinges, Pivots, and similar items that secure glazing to the frame while it moves.
|
1798
|
+
- Handle: Handles, knobs, and similar items for directly manipulating a window.
|
1799
|
+
- Operator: Arms, Cranks, and other hardware that moves a window.
|
1800
|
+
- Balance: Springs, Sash Balances, and other items that counter the weight of an operable sash.
|
1801
|
+
- Other: Other hardware not described above.
|
1802
1802
|
|
1803
1803
|
"""
|
1804
1804
|
|
@@ -1975,11 +1975,17 @@ class ThermalSeparation(StrEnum):
|
|
1975
1975
|
"""
|
1976
1976
|
Thermal separation.
|
1977
1977
|
|
1978
|
-
- Aluminium: Aluminium
|
1979
|
-
|
1980
|
-
-
|
1981
|
-
|
1982
|
-
-
|
1978
|
+
- Aluminium: Aluminium System members with less than 1.6 mm (0.062 in) or no separation between metal or system
|
1979
|
+
members to provide a resistance heat transfer path from exterior to interior.
|
1980
|
+
- Steel: Steel System members with less than 1.6 mm (0.062 in) or no separation between metal or system members to
|
1981
|
+
provide a resistance heat transfer path from exterior to interior.
|
1982
|
+
- Thermally Improved Metal: Metal System members with a separation ≥ 1.60 mm (0.062 in) provided by either a
|
1983
|
+
thermal break or open air space that may be interrupted by short thermal bridges between the interior and
|
1984
|
+
exterior surfaces.
|
1985
|
+
- Thermally Broken Metal: Aluminium System members with a minimum of 5.30 mm (0.210 in) separation provided by
|
1986
|
+
a thermal break.
|
1987
|
+
- Nonmetal: Nonmetal material where the path from inside to outside inherently has low thermal conductivity,
|
1988
|
+
such as wood, vinyl, and fiberglass. Aluminium-clad or split windows fall in this category.
|
1983
1989
|
|
1984
1990
|
"""
|
1985
1991
|
|
@@ -2376,7 +2382,7 @@ class FlatGlassPanesThickness(StrEnum):
|
|
2376
2382
|
|
2377
2383
|
|
2378
2384
|
class NAFSPerformanceGrade(StrEnum):
|
2379
|
-
"""NAFS Performance Grade
|
2385
|
+
"""NAFS Performance Grade."""
|
2380
2386
|
|
2381
2387
|
GRADE_15_PSF = "15 psf"
|
2382
2388
|
GRADE_20_PSF = "20 psf"
|
@@ -68,6 +68,63 @@ class GlazingIntendedApplication(BaseOpenEpdSchema):
|
|
68
68
|
)
|
69
69
|
|
70
70
|
|
71
|
+
class GlazingOptionsMixin(BaseOpenEpdSchema):
|
72
|
+
"""Common glazing options."""
|
73
|
+
|
74
|
+
low_emissivity: bool | None = pyd.Field(default=None, description="Low Emissivity coatings", example=True)
|
75
|
+
electrochromic: bool | None = pyd.Field(
|
76
|
+
default=None,
|
77
|
+
description="Glazing with an electrically controllable solar heat gain and/or other properties.",
|
78
|
+
example=True,
|
79
|
+
)
|
80
|
+
acid_etched: bool | None = pyd.Field(
|
81
|
+
default=None, description="Flat glass that has undergone a chemical etching process.", example=True
|
82
|
+
)
|
83
|
+
tempered: bool | None = pyd.Field(
|
84
|
+
default=None,
|
85
|
+
description="Consists of a single pane that has been heat-treated to give the glass increased impact "
|
86
|
+
"resistance. Standard typically used in North America.",
|
87
|
+
example=True,
|
88
|
+
)
|
89
|
+
toughened: bool | None = pyd.Field(
|
90
|
+
default=None,
|
91
|
+
description="Consists of a single pane that has been specially heat-treated to give the glass increased impact "
|
92
|
+
"resistance. Standard typically used in Europe.",
|
93
|
+
example=True,
|
94
|
+
)
|
95
|
+
laminated: bool | None = pyd.Field(
|
96
|
+
default=None,
|
97
|
+
description="Consists of at least two glass panes lying one on top of the other, with one or several layers of "
|
98
|
+
"a tear-resistant, viscoelastic film positioned between the panes, which consist of polyvinyl "
|
99
|
+
"butyral (PVB)",
|
100
|
+
example=True,
|
101
|
+
)
|
102
|
+
fire_resistant: bool | None = pyd.Field(default=None, example=True)
|
103
|
+
fire_protection: bool | None = pyd.Field(
|
104
|
+
default=None,
|
105
|
+
description="Specifically tested for its ability to block flames and smoke, but not radiant heat. Ranges from"
|
106
|
+
" specialty tempered products rated for ~20 minutes to glass ceramics rated up to 3 hours.",
|
107
|
+
example=True,
|
108
|
+
)
|
109
|
+
pyrolytic_coated: bool | None = pyd.Field(
|
110
|
+
default=None,
|
111
|
+
description="At least one coating is applied in a pyrolytic process, typically during float glass production.",
|
112
|
+
example=True,
|
113
|
+
)
|
114
|
+
sputter_coat: bool | None = pyd.Field(
|
115
|
+
default=None,
|
116
|
+
description="At least one coating is applied using sputter (vacuum deposition) coating.",
|
117
|
+
example=True,
|
118
|
+
)
|
119
|
+
solar_heat_gain: RatioFloat | None = pyd.Field(
|
120
|
+
default=None,
|
121
|
+
description="Solar heat gain, measured at a certain level of Differential Pressure. Range is 0 to 1.",
|
122
|
+
example=0.5,
|
123
|
+
ge=0,
|
124
|
+
le=1,
|
125
|
+
)
|
126
|
+
|
127
|
+
|
71
128
|
class PanelDoorsV1(BaseOpenEpdHierarchicalSpec):
|
72
129
|
"""Panel doors performance specification."""
|
73
130
|
|
@@ -75,13 +132,18 @@ class PanelDoorsV1(BaseOpenEpdHierarchicalSpec):
|
|
75
132
|
|
76
133
|
|
77
134
|
class PressureResistantDoorsV1(BaseOpenEpdHierarchicalSpec):
|
78
|
-
"""Pressure
|
135
|
+
"""Pressure-Resistant Doors."""
|
79
136
|
|
80
137
|
_EXT_VERSION = "1.0"
|
81
138
|
|
82
139
|
|
83
140
|
class SpecialFunctionDoorsV1(BaseOpenEpdHierarchicalSpec):
|
84
|
-
"""
|
141
|
+
"""
|
142
|
+
Special function doors.
|
143
|
+
|
144
|
+
Includes doors for e.g., cold storage, hangars, lightproof applications,
|
145
|
+
security, sound control, vaults, etc.
|
146
|
+
"""
|
85
147
|
|
86
148
|
_EXT_VERSION = "1.0"
|
87
149
|
|
@@ -97,23 +159,32 @@ class SlidingGlassDoorsV1(BaseOpenEpdHierarchicalSpec):
|
|
97
159
|
|
98
160
|
|
99
161
|
class FenestrationAccessoriesV1(BaseOpenEpdHierarchicalSpec):
|
100
|
-
"""
|
162
|
+
"""
|
163
|
+
Fenestration accessories.
|
164
|
+
|
165
|
+
Gaskets, seals, fasteners, and other low-mass items which may be useful in calculating the impact of a
|
166
|
+
fenestration system.
|
167
|
+
"""
|
101
168
|
|
102
169
|
_EXT_VERSION = "1.0"
|
103
170
|
|
104
171
|
|
105
172
|
class FenestrationFramingV1(BaseOpenEpdHierarchicalSpec):
|
106
|
-
"""
|
173
|
+
"""
|
174
|
+
Fenestration Framing.
|
175
|
+
|
176
|
+
Lineal elements ("sticks") for use in fenestration, including frames, sashes, and mullions.
|
177
|
+
"""
|
107
178
|
|
108
179
|
_EXT_VERSION = "1.0"
|
109
180
|
|
110
181
|
# Own fields:
|
111
|
-
thermal_separation: ThermalSeparation | None = pyd.Field(default=None,
|
112
|
-
material: FrameMaterial | None = pyd.Field(default=None,
|
182
|
+
thermal_separation: ThermalSeparation | None = pyd.Field(default=None, example="Aluminium")
|
183
|
+
material: FrameMaterial | None = pyd.Field(default=None, example="Vinyl")
|
113
184
|
|
114
185
|
|
115
186
|
class FenestrationHardwareV1(BaseOpenEpdHierarchicalSpec):
|
116
|
-
"""
|
187
|
+
"""Locks, operation hardware, and other substantial items declared on a per-piece basis."""
|
117
188
|
|
118
189
|
_EXT_VERSION = "1.0"
|
119
190
|
|
@@ -122,69 +193,81 @@ class FenestrationHardwareV1(BaseOpenEpdHierarchicalSpec):
|
|
122
193
|
|
123
194
|
|
124
195
|
class FlatGlassPanesV1(BaseOpenEpdHierarchicalSpec):
|
125
|
-
"""
|
196
|
+
"""Monolithic, uncoated flat glass panes that are not substantially processed."""
|
126
197
|
|
127
198
|
_EXT_VERSION = "1.0"
|
128
199
|
|
129
200
|
# Own fields:
|
130
|
-
thickness: FlatGlassPanesThickness | None = pyd.Field(default=None,
|
201
|
+
thickness: FlatGlassPanesThickness | None = pyd.Field(default=None, example="12 mm")
|
131
202
|
|
132
203
|
_flat_glass_panes_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(
|
133
204
|
validate_unit_factory("m")
|
134
205
|
)
|
135
206
|
|
136
207
|
|
137
|
-
class ProcessedNonInsulatingGlassPanesV1(BaseOpenEpdHierarchicalSpec):
|
138
|
-
"""
|
208
|
+
class ProcessedNonInsulatingGlassPanesV1(BaseOpenEpdHierarchicalSpec, GlazingOptionsMixin):
|
209
|
+
"""
|
210
|
+
Solid glass panes without internal gaps which have been heat-treated or otherwise substantially processed.
|
139
211
|
|
140
|
-
|
212
|
+
Includes:
|
213
|
+
1. Coatings including low-e and other coatings (see PCR)
|
214
|
+
2. laminating (fire-rated, glass clad polycarbonate, interlayers
|
215
|
+
3. Heat treated (heat strengthened, tempered, fire-rated)
|
216
|
+
4. Mechanically or chemically processed or fabricated
|
217
|
+
(edging, bending, etching, drilling, notching, cutting, polishing, etc)
|
218
|
+
5. combined products of processing in 1-5.
|
219
|
+
"""
|
141
220
|
|
142
|
-
|
143
|
-
low_emissivity: bool | None = pyd.Field(default=None, description="", example=True)
|
144
|
-
electrochromic: bool | None = pyd.Field(default=None, description="", example=True)
|
145
|
-
acid_etched: bool | None = pyd.Field(default=None, description="", example=True)
|
146
|
-
tempered: bool | None = pyd.Field(default=None, description="", example=True)
|
147
|
-
toughened: bool | None = pyd.Field(default=None, description="", example=True)
|
148
|
-
laminated: bool | None = pyd.Field(default=None, description="", example=True)
|
149
|
-
fire_resistant: bool | None = pyd.Field(default=None, description="", example=True)
|
150
|
-
fire_protection: bool | None = pyd.Field(default=None, description="", example=True)
|
151
|
-
pyrolytic_coated: bool | None = pyd.Field(default=None, description="", example=True)
|
152
|
-
sputter_coat: bool | None = pyd.Field(default=None, description="", example=True)
|
153
|
-
solar_heat_gain: RatioFloat | None = pyd.Field(default=None, description="", example=0.5, ge=0, le=1)
|
221
|
+
_EXT_VERSION = "1.0"
|
154
222
|
|
155
223
|
|
156
224
|
class GlazedDoorsV1(BaseOpenEpdHierarchicalSpec):
|
157
|
-
"""
|
225
|
+
"""
|
226
|
+
Factory assembled door which is at least 50% glass by area.
|
227
|
+
|
228
|
+
Includes sliding patio doors and hinged doors.
|
229
|
+
"""
|
158
230
|
|
159
231
|
_EXT_VERSION = "1.0"
|
160
232
|
|
161
233
|
|
162
234
|
class UnitSkylightsV1(BaseOpenEpdHierarchicalSpec):
|
163
|
-
"""
|
235
|
+
"""
|
236
|
+
Unit skylights performance specification.
|
237
|
+
|
238
|
+
A factory assembled fenestration unit for installation on the roof of a structure to provide interior
|
239
|
+
building spaces with natural daylight, warmth, and ventilation; generally not operable
|
240
|
+
by hand (cf. roof window). Includes frame(s) and possibly operating hardware.
|
241
|
+
"""
|
164
242
|
|
165
243
|
_EXT_VERSION = "1.0"
|
166
244
|
|
167
245
|
|
168
246
|
class WindowsV1(BaseOpenEpdHierarchicalSpec):
|
169
|
-
"""Windows
|
247
|
+
"""Windows including glazing and frame material."""
|
170
248
|
|
171
249
|
_EXT_VERSION = "1.0"
|
172
250
|
|
173
251
|
|
174
252
|
class IntegratedDoorsOpeningAssembliesV1(BaseOpenEpdHierarchicalSpec):
|
175
|
-
"""
|
253
|
+
"""Pre-installed unit that includes door, frame, and hardware."""
|
176
254
|
|
177
255
|
_EXT_VERSION = "1.0"
|
178
256
|
|
179
257
|
|
180
258
|
class MetalDoorAndFramesV1(BaseOpenEpdHierarchicalSpec):
|
181
|
-
"""Metal
|
259
|
+
"""Metal doors and frames."""
|
182
260
|
|
183
261
|
_EXT_VERSION = "1.0"
|
184
262
|
|
185
263
|
|
186
264
|
class SpecialtyDoorsAndFramesV1(BaseOpenEpdHierarchicalSpec):
|
187
|
-
"""
|
265
|
+
"""
|
266
|
+
Specialty doors and frames.
|
267
|
+
|
268
|
+
Includes e.g., access doors and panels, sliding glass doors, coiling doors, special function doors,
|
269
|
+
folding doors, etc.
|
270
|
+
"""
|
188
271
|
|
189
272
|
_EXT_VERSION = "1.0"
|
190
273
|
|
@@ -200,7 +283,12 @@ class WoodDoorsV1(BaseOpenEpdHierarchicalSpec):
|
|
200
283
|
|
201
284
|
|
202
285
|
class FenestrationPartsV1(BaseOpenEpdHierarchicalSpec):
|
203
|
-
"""
|
286
|
+
"""
|
287
|
+
Fenestration Parts.
|
288
|
+
|
289
|
+
Parts and assemblies for integration into building fenestration such as windows, curtain walls,
|
290
|
+
and storefronts.
|
291
|
+
"""
|
204
292
|
|
205
293
|
_EXT_VERSION = "1.0"
|
206
294
|
|
@@ -216,7 +304,7 @@ class FenestrationPartsV1(BaseOpenEpdHierarchicalSpec):
|
|
216
304
|
|
217
305
|
|
218
306
|
class GlassPanesV1(BaseOpenEpdHierarchicalSpec):
|
219
|
-
"""
|
307
|
+
"""Flat glass panes."""
|
220
308
|
|
221
309
|
_EXT_VERSION = "1.0"
|
222
310
|
|
@@ -252,29 +340,34 @@ class NAFSPerformanceClass(BaseOpenEpdSchema):
|
|
252
340
|
)
|
253
341
|
|
254
342
|
|
255
|
-
class NAFSFenestrationV1(BaseOpenEpdHierarchicalSpec):
|
256
|
-
"""
|
343
|
+
class NAFSFenestrationV1(BaseOpenEpdHierarchicalSpec, GlazingOptionsMixin):
|
344
|
+
"""Factory assembled fenestration units compliant to the North American Fenestration Standard."""
|
257
345
|
|
258
346
|
_EXT_VERSION = "1.0"
|
259
347
|
|
260
348
|
# Own fields:
|
261
|
-
hurricane_resistant: bool | None = pyd.Field(
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
349
|
+
hurricane_resistant: bool | None = pyd.Field(
|
350
|
+
default=None, description="The product has been designed to resist windborne debris.", example=True
|
351
|
+
)
|
352
|
+
|
353
|
+
assembly_u_factor: str | None = pyd.Field(
|
354
|
+
default=None,
|
355
|
+
description="Weighted average conductance of heat across assembly (including frame).",
|
356
|
+
example="1 USI",
|
357
|
+
)
|
358
|
+
air_infiltration: str | None = pyd.Field(
|
359
|
+
default=None,
|
360
|
+
description="Air infiltration, measured at a certain level of Differential Pressure.",
|
361
|
+
example="1 m / s",
|
362
|
+
)
|
363
|
+
|
364
|
+
thermal_separation: ThermalSeparation | None = pyd.Field(default=None, example="Aluminium")
|
276
365
|
dp_rating: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
|
277
|
-
glass_panes: int | None = pyd.Field(
|
366
|
+
glass_panes: int | None = pyd.Field(
|
367
|
+
default=None,
|
368
|
+
description="Number of panes, each separated by a cavity. A 3 pane unit has 2 cavities. example: 3",
|
369
|
+
example=3,
|
370
|
+
)
|
278
371
|
|
279
372
|
performance_class: NAFSPerformanceClass | None = pyd.Field(
|
280
373
|
default=None, description="Performance class according to NAFS."
|
@@ -307,7 +400,7 @@ class NAFSFenestrationV1(BaseOpenEpdHierarchicalSpec):
|
|
307
400
|
Windows: WindowsV1 | None = None
|
308
401
|
|
309
402
|
|
310
|
-
class InsulatingGlazingUnitsV1(BaseOpenEpdHierarchicalSpec):
|
403
|
+
class InsulatingGlazingUnitsV1(BaseOpenEpdHierarchicalSpec, GlazingOptionsMixin):
|
311
404
|
"""Insulating glazing units performance specification."""
|
312
405
|
|
313
406
|
_EXT_VERSION = "1.0"
|
@@ -317,23 +410,27 @@ class InsulatingGlazingUnitsV1(BaseOpenEpdHierarchicalSpec):
|
|
317
410
|
default=None, description="Intended application for IGUs."
|
318
411
|
)
|
319
412
|
|
320
|
-
hurricane_resistant: bool | None = pyd.Field(default=None,
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
cog_u_factor: str | None = pyd.Field(
|
336
|
-
|
413
|
+
hurricane_resistant: bool | None = pyd.Field(default=None, example=True)
|
414
|
+
|
415
|
+
dp_rating: PressureMPaStr | None = pyd.Field(
|
416
|
+
default=None, description="Maximum Differential Pressure, a measure of wind tolerance.", example="1 MPa"
|
417
|
+
)
|
418
|
+
air_infiltration: str | None = pyd.Field(
|
419
|
+
default=None,
|
420
|
+
description="Air infiltration, measured at a certain level of Differential Pressure.",
|
421
|
+
example="1 m / s",
|
422
|
+
)
|
423
|
+
glass_panes: int | None = pyd.Field(
|
424
|
+
default=None,
|
425
|
+
description="Number of panes, each separated by a cavity. A 3 pane unit has 2 cavities. example: 3",
|
426
|
+
example=3,
|
427
|
+
)
|
428
|
+
cog_u_factor: str | None = pyd.Field(
|
429
|
+
default=None, description="Conductance of heat at center of glass.", example="1 USI"
|
430
|
+
)
|
431
|
+
spacer: Spacer | None = pyd.Field(
|
432
|
+
default=None, description="Spacer material for Integrated Glass Unit.", example="Aluminium"
|
433
|
+
)
|
337
434
|
|
338
435
|
_air_infiltration_is_quantity_validator = pyd.validator("air_infiltration", allow_reuse=True)(
|
339
436
|
validate_unit_factory("m / s")
|
@@ -343,19 +440,27 @@ class InsulatingGlazingUnitsV1(BaseOpenEpdHierarchicalSpec):
|
|
343
440
|
|
344
441
|
|
345
442
|
class CurtainWallsV1(BaseOpenEpdHierarchicalSpec):
|
346
|
-
"""
|
443
|
+
"""
|
444
|
+
Curtain Walls.
|
445
|
+
|
446
|
+
Exterior skin of building where walls are non-structural and are outboard of the floor slabs,
|
447
|
+
often as system of aluminum framing with vision glass and opaque panels of glass, metal, or other
|
448
|
+
materials.
|
449
|
+
|
450
|
+
Can be 'unitized' (prefabricated off-site) or 'stick' (fabricated on site).
|
451
|
+
"""
|
347
452
|
|
348
453
|
_EXT_VERSION = "1.0"
|
349
454
|
|
350
455
|
|
351
456
|
class DoorsAndFramesV1(BaseOpenEpdHierarchicalSpec):
|
352
|
-
"""Doors and frames
|
457
|
+
"""Doors (the operable part) and frames (what holds the door proper)."""
|
353
458
|
|
354
459
|
_EXT_VERSION = "1.0"
|
355
460
|
|
356
461
|
# Own fields:
|
357
|
-
height: LengthMmStr | None = pyd.Field(default=None,
|
358
|
-
width: LengthMmStr | None = pyd.Field(default=None,
|
462
|
+
height: LengthMmStr | None = pyd.Field(default=None, example="1200 mm")
|
463
|
+
width: LengthMmStr | None = pyd.Field(default=None, example="600 mm")
|
359
464
|
|
360
465
|
_height_is_quantity_validator = pyd.validator("height", allow_reuse=True)(validate_unit_factory("m"))
|
361
466
|
_width_is_quantity_validator = pyd.validator("width", allow_reuse=True)(validate_unit_factory("m"))
|
@@ -368,13 +473,18 @@ class DoorsAndFramesV1(BaseOpenEpdHierarchicalSpec):
|
|
368
473
|
|
369
474
|
|
370
475
|
class EntrancesV1(BaseOpenEpdHierarchicalSpec):
|
371
|
-
"""
|
476
|
+
"""Building entrances (distinct from the door proper)."""
|
372
477
|
|
373
478
|
_EXT_VERSION = "1.0"
|
374
479
|
|
375
480
|
|
376
481
|
class GlazingV1(BaseOpenEpdHierarchicalSpec):
|
377
|
-
"""
|
482
|
+
"""
|
483
|
+
Glazing performance specification.
|
484
|
+
|
485
|
+
Broad category of glass-based products, accessories, and assemblies ranging from
|
486
|
+
glass panes and framing to curtain walls.
|
487
|
+
"""
|
378
488
|
|
379
489
|
_EXT_VERSION = "1.0"
|
380
490
|
|
@@ -386,30 +496,50 @@ class GlazingV1(BaseOpenEpdHierarchicalSpec):
|
|
386
496
|
|
387
497
|
|
388
498
|
class StorefrontsV1(BaseOpenEpdHierarchicalSpec):
|
389
|
-
"""
|
499
|
+
"""
|
500
|
+
Storefronts.
|
501
|
+
|
502
|
+
Fabricated building facades commonly used in retail applications, typically one or two stories
|
503
|
+
tall and using metal framing and glass.
|
504
|
+
"""
|
390
505
|
|
391
506
|
_EXT_VERSION = "1.0"
|
392
507
|
|
393
508
|
|
394
509
|
class TranslucentWallAndRoofAssembliesV1(BaseOpenEpdHierarchicalSpec):
|
395
|
-
"""
|
510
|
+
"""
|
511
|
+
Translucent wall and roof assemblies.
|
512
|
+
|
513
|
+
Includes structured polycarbonate panel and fiberglass sandwich panel assemblies.
|
514
|
+
"""
|
396
515
|
|
397
516
|
_EXT_VERSION = "1.0"
|
398
517
|
|
399
518
|
|
400
519
|
class WindowWallAssembliesV1(BaseOpenEpdHierarchicalSpec):
|
401
|
-
"""
|
520
|
+
"""
|
521
|
+
Window Wall Assemblies.
|
522
|
+
|
523
|
+
Exterior skin of building where walls are non-structural and sit between floor slabs, often as
|
524
|
+
system of aluminum framing with vision glass and opaque panels of glass, metal,
|
525
|
+
or other materials.
|
526
|
+
"""
|
402
527
|
|
403
528
|
_EXT_VERSION = "1.0"
|
404
529
|
|
405
530
|
|
406
531
|
class OpeningsV1(BaseOpenEpdHierarchicalSpec):
|
407
|
-
"""
|
532
|
+
"""
|
533
|
+
Openings performance specification.
|
534
|
+
|
535
|
+
General category that includes windows, storefronts, window walls, curtain walls,
|
536
|
+
doors, entrances, etc.
|
537
|
+
"""
|
408
538
|
|
409
539
|
_EXT_VERSION = "1.0"
|
410
540
|
|
411
541
|
# Own fields:
|
412
|
-
thickness: LengthMmStr | None = pyd.Field(default=None,
|
542
|
+
thickness: LengthMmStr | None = pyd.Field(default=None, example="80 mm")
|
413
543
|
|
414
544
|
_thickness_is_quantity_validator = pyd.validator("thickness", allow_reuse=True)(validate_unit_factory("m"))
|
415
545
|
|
@@ -33,41 +33,51 @@ class SteelFabricatedMixin(BaseOpenEpdSpec):
|
|
33
33
|
|
34
34
|
|
35
35
|
class ColdFormedFramingV1(BaseOpenEpdHierarchicalSpec):
|
36
|
-
"""
|
36
|
+
"""
|
37
|
+
Cold Formed Framing performance specification.
|
38
|
+
|
39
|
+
Cold formed steel elements such as studs and framing, typically made from coil or sheet steel and used
|
40
|
+
within walls and ceilings.
|
41
|
+
"""
|
37
42
|
|
38
43
|
_EXT_VERSION = "1.0"
|
39
44
|
|
40
45
|
|
41
46
|
class DeckingSteelV1(BaseOpenEpdHierarchicalSpec):
|
42
|
-
"""
|
47
|
+
"""Corrugated Decking made from cold-formed sheet steel. Often filled with concrete."""
|
43
48
|
|
44
49
|
_EXT_VERSION = "1.0"
|
45
50
|
|
46
51
|
|
47
52
|
class SteelSuspensionAssemblyV1(BaseOpenEpdHierarchicalSpec):
|
48
|
-
"""Steel suspension
|
53
|
+
"""Steel suspension assemblies for suspended (e.g. acoustical) ceiling systems."""
|
49
54
|
|
50
55
|
_EXT_VERSION = "1.0"
|
51
56
|
|
52
57
|
|
53
58
|
class HollowSectionsV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
54
|
-
"""Hollow
|
59
|
+
"""Hollow cross section steel shape, typically referred to as hollow structural section (HSS)."""
|
55
60
|
|
56
61
|
_EXT_VERSION = "1.0"
|
57
62
|
|
58
|
-
# Own fields:
|
59
|
-
|
60
63
|
|
61
64
|
class HotRolledSectionsV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
62
|
-
"""
|
65
|
+
"""
|
66
|
+
Hot rolled sections performance specification.
|
63
67
|
|
64
|
-
|
68
|
+
Steel shapes, such as angles, wide flange beams and I-beams, produced using a high temperature
|
69
|
+
mill process.
|
70
|
+
"""
|
65
71
|
|
66
|
-
|
72
|
+
_EXT_VERSION = "1.0"
|
67
73
|
|
68
74
|
|
69
75
|
class PlateSteelV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
70
|
-
"""Plate Steels.
|
76
|
+
"""Plate Steels.
|
77
|
+
|
78
|
+
Flat hot-rolled steel, typically thicker than 'sheet', made by compressing multiple steel
|
79
|
+
layers together into one.
|
80
|
+
"""
|
71
81
|
|
72
82
|
_EXT_VERSION = "1.0"
|
73
83
|
|
@@ -75,43 +85,66 @@ class PlateSteelV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
|
75
85
|
|
76
86
|
|
77
87
|
class MetalRailingsV1(BaseOpenEpdHierarchicalSpec):
|
78
|
-
"""Metal
|
88
|
+
"""Metal Railings including pipe and tube railings."""
|
79
89
|
|
80
90
|
_EXT_VERSION = "1.0"
|
81
91
|
|
82
92
|
|
83
93
|
class MetalStairsV1(BaseOpenEpdHierarchicalSpec):
|
84
|
-
"""
|
94
|
+
"""
|
95
|
+
Metal stairs.
|
96
|
+
|
97
|
+
Includes: metal pan stairs, metal floor plate stairs, grating stairs, fire escapes,
|
98
|
+
ladders, and walkways/catwalks/ramps/platforms.
|
99
|
+
"""
|
85
100
|
|
86
101
|
_EXT_VERSION = "1.0"
|
87
102
|
|
88
103
|
|
89
104
|
class MiscMetalFabricationV1(BaseOpenEpdHierarchicalSpec):
|
90
|
-
"""
|
105
|
+
"""Prefabricated steel assemblies not included in another category."""
|
91
106
|
|
92
107
|
_EXT_VERSION = "1.0"
|
93
108
|
|
94
109
|
|
95
110
|
class OpenWebMembranesV1(BaseOpenEpdHierarchicalSpec):
|
96
|
-
"""
|
111
|
+
"""
|
112
|
+
Open web membranes performance specification.
|
113
|
+
|
114
|
+
Lightweight steel truss, typically made of parallel chords and a triangulated web system,
|
115
|
+
"proportioned to span between bearing points.
|
116
|
+
"""
|
97
117
|
|
98
118
|
_EXT_VERSION = "1.0"
|
99
119
|
|
100
120
|
|
101
121
|
class MBQSteelV1(BaseOpenEpdHierarchicalSpec):
|
102
|
-
"""
|
122
|
+
"""
|
123
|
+
Merchant Bar Quality (MBQ) steel.
|
124
|
+
|
125
|
+
Used as feedstock to steel construction products, but also includes rounds, angles, and light structural shapes.
|
126
|
+
"""
|
103
127
|
|
104
128
|
_EXT_VERSION = "1.0"
|
105
129
|
|
106
130
|
|
107
131
|
class CoilSteelV1(BaseOpenEpdHierarchicalSpec):
|
108
|
-
"""
|
132
|
+
"""
|
133
|
+
Sheet or strip steel, sold in rolls.
|
134
|
+
|
135
|
+
Typically, coil steel is cold-formed into light gauge products.
|
136
|
+
"""
|
109
137
|
|
110
138
|
_EXT_VERSION = "1.0"
|
111
139
|
|
112
140
|
|
113
141
|
class ColdFormedSteelV1(BaseOpenEpdHierarchicalSpec):
|
114
|
-
"""
|
142
|
+
"""
|
143
|
+
Cold Formed Steel Products.
|
144
|
+
|
145
|
+
All types of cold formed steel products. These products are made from hot-rolled steel coils and
|
146
|
+
sheets and are cold formed into products such as studs, decking, panels, and other accessories.
|
147
|
+
"""
|
115
148
|
|
116
149
|
_EXT_VERSION = "1.0"
|
117
150
|
|
@@ -122,14 +155,30 @@ class ColdFormedSteelV1(BaseOpenEpdHierarchicalSpec):
|
|
122
155
|
|
123
156
|
|
124
157
|
class StructuralSteelV1(BaseOpenEpdHierarchicalSpec):
|
125
|
-
"""
|
158
|
+
"""
|
159
|
+
Structural Steel.
|
160
|
+
|
161
|
+
Hot rolled steel shapes, Hollow Sections, pipes, and similar hot-worked structural steels.
|
162
|
+
"""
|
126
163
|
|
127
164
|
_EXT_VERSION = "1.0"
|
128
165
|
|
129
166
|
# Own fields:
|
130
|
-
modulus_of_elasticity: PressureMPaStr | None = pyd.Field(
|
131
|
-
|
132
|
-
|
167
|
+
modulus_of_elasticity: PressureMPaStr | None = pyd.Field(
|
168
|
+
default=None,
|
169
|
+
description="Modulus of Elasticity, https://en.wikipedia.org/wiki/Elastic_modulus ",
|
170
|
+
example="193 GPa",
|
171
|
+
)
|
172
|
+
thermal_expansion: str | None = pyd.Field(
|
173
|
+
default=None,
|
174
|
+
description="Thermal Expansion, https://en.wikipedia.org/wiki/Thermal_expansion",
|
175
|
+
example="1.11E-5 / K",
|
176
|
+
)
|
177
|
+
thermal_conductivity: str | None = pyd.Field(
|
178
|
+
default=None,
|
179
|
+
description="Thermal Conductivity, https://en.wikipedia.org/wiki/Thermal_conductivity_and_resistivity",
|
180
|
+
example="1.45E-5 W / (m * K)",
|
181
|
+
)
|
133
182
|
|
134
183
|
_steel_modulus_of_elasticity_is_quantity_validator = pyd.validator("modulus_of_elasticity", allow_reuse=True)(
|
135
184
|
validate_unit_factory("MPa")
|
@@ -148,7 +197,7 @@ class StructuralSteelV1(BaseOpenEpdHierarchicalSpec):
|
|
148
197
|
|
149
198
|
|
150
199
|
class PrefabricatedSteelAssembliesV1(BaseOpenEpdHierarchicalSpec):
|
151
|
-
"""Prefabricated
|
200
|
+
"""Prefabricated assemblies made primarily of steel."""
|
152
201
|
|
153
202
|
_EXT_VERSION = "1.0"
|
154
203
|
|
@@ -160,22 +209,24 @@ class PrefabricatedSteelAssembliesV1(BaseOpenEpdHierarchicalSpec):
|
|
160
209
|
|
161
210
|
|
162
211
|
class PostTensioningSteelV1(BaseOpenEpdHierarchicalSpec):
|
163
|
-
"""
|
212
|
+
"""Steel tensioning cables or tendons for compression of prestressed concrete."""
|
164
213
|
|
165
214
|
_EXT_VERSION = "1.0"
|
166
215
|
|
167
216
|
|
168
217
|
class RebarSteelV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
169
|
-
"""
|
218
|
+
"""Reinforcing bar used together with concrete."""
|
170
219
|
|
171
220
|
_EXT_VERSION = "1.0"
|
172
221
|
|
173
222
|
# Own fields:
|
174
|
-
grade: SteelRebarGrade | None = pyd.Field(default=None,
|
175
|
-
diameter_min: LengthMmStr | None = pyd.Field(default=None, description="", example="8 mm")
|
176
|
-
bending_pin_max: float | None = pyd.Field(default=None,
|
177
|
-
ts_ys_ratio_max: float | None = pyd.Field(
|
178
|
-
|
223
|
+
grade: SteelRebarGrade | None = pyd.Field(default=None, example="60 ksi")
|
224
|
+
diameter_min: LengthMmStr | None = pyd.Field(default=None, description="Minimal diameter", example="8 mm")
|
225
|
+
bending_pin_max: float | None = pyd.Field(default=None, example=2.3)
|
226
|
+
ts_ys_ratio_max: float | None = pyd.Field(
|
227
|
+
default=None, description="Max ratio of ultimate tensile to yield tensile strength", example=2.3
|
228
|
+
)
|
229
|
+
epoxy_coated: bool | None = pyd.Field(default=None, example=True)
|
179
230
|
|
180
231
|
_steel_rebar_diameter_min_is_quantity_validator = pyd.validator("diameter_min", allow_reuse=True)(
|
181
232
|
validate_unit_factory("m")
|
@@ -189,25 +240,41 @@ class WireMeshSteelV1(BaseOpenEpdHierarchicalSpec, SteelFabricatedMixin):
|
|
189
240
|
|
190
241
|
|
191
242
|
class SteelV1(BaseOpenEpdHierarchicalSpec):
|
192
|
-
"""
|
243
|
+
"""Broad category for construction materials made from steel and its alloys."""
|
193
244
|
|
194
245
|
_EXT_VERSION = "1.0"
|
195
246
|
|
196
247
|
# Own fields:
|
197
|
-
yield_tensile_str: PressureMPaStr | None = pyd.Field(
|
198
|
-
|
248
|
+
yield_tensile_str: PressureMPaStr | None = pyd.Field(
|
249
|
+
default=None, description="Yield Tensile strength (Mpa) per unit area", example="100 MPa"
|
250
|
+
)
|
251
|
+
bar_elongation: float | None = pyd.Field(
|
252
|
+
default=None, description="Increase in length at break, in percent. Typically 10%-20%", example=0.2
|
253
|
+
)
|
199
254
|
recycled_content: RatioFloat | None = pyd.Field(default=None, description="", example=0.5, ge=0, le=1)
|
200
|
-
post_consumer_recycled_content: RatioFloat | None = pyd.Field(
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
255
|
+
post_consumer_recycled_content: RatioFloat | None = pyd.Field(
|
256
|
+
default=None,
|
257
|
+
description="Should be a number between zero and the Recycled Content (steel_recycled_content)",
|
258
|
+
example=0.5,
|
259
|
+
ge=0,
|
260
|
+
le=1,
|
261
|
+
)
|
262
|
+
astm_marking: str | None = pyd.Field(
|
263
|
+
default=None, description="The marking to be expected on the product.", example="S4S60"
|
264
|
+
)
|
265
|
+
euro_marking: str | None = pyd.Field(
|
266
|
+
default=None, description="The marking to be expected on the product.", examples="S4S60"
|
267
|
+
)
|
268
|
+
composition: SteelComposition | None = pyd.Field(
|
269
|
+
default=None, description="Basic chemical composition", example="Carbon"
|
270
|
+
)
|
271
|
+
cold_finished: bool | None = pyd.Field(default=None, example=True)
|
272
|
+
galvanized: bool | None = pyd.Field(default=None, example=True)
|
273
|
+
stainless: bool | None = pyd.Field(default=None, example=True)
|
207
274
|
making_route: SteelMakingRoute | None = pyd.Field(default=None)
|
208
|
-
astm_standards: list[Standard] | None = pyd.Field(default=None, description="")
|
209
|
-
sae_standards: list[Standard] | None = pyd.Field(default=None, description="")
|
210
|
-
en_standards: list[Standard] | None = pyd.Field(default=None, description="")
|
275
|
+
astm_standards: list[Standard] | None = pyd.Field(default=None, description="List of ASTM standards")
|
276
|
+
sae_standards: list[Standard] | None = pyd.Field(default=None, description="List of SAE standards")
|
277
|
+
en_standards: list[Standard] | None = pyd.Field(default=None, description="List of EN standards")
|
211
278
|
|
212
279
|
_steel_yield_tensile_str_is_quantity_validator = pyd.validator("yield_tensile_str", allow_reuse=True)(
|
213
280
|
validate_unit_factory("MPa")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: openepd
|
3
|
-
Version: 3.1.
|
3
|
+
Version: 3.1.2
|
4
4
|
Summary: Python library to work with OpenEPD format
|
5
5
|
Home-page: https://github.com/cchangelabs/openepd
|
6
6
|
License: Apache-2.0
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
19
19
|
Provides-Extra: api-client
|
20
20
|
Requires-Dist: email-validator (>=1.3.1)
|
21
|
+
Requires-Dist: idna (>=3.7)
|
21
22
|
Requires-Dist: pydantic (>=1.10,<3.0)
|
22
23
|
Requires-Dist: requests (>=2.0) ; extra == "api-client"
|
23
24
|
Project-URL: Repository, https://github.com/cchangelabs/openepd
|
@@ -1,5 +1,5 @@
|
|
1
1
|
openepd/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
|
2
|
-
openepd/__version__.py,sha256=
|
2
|
+
openepd/__version__.py,sha256=GaGWDv9_2nYUszRosW58lmsPGqgtPMKx9e0eVNN9v40,855
|
3
3
|
openepd/api/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
|
4
4
|
openepd/api/base_sync_client.py,sha256=JcNpWsGoIK_1Eg27CAQd7nIjbcfD56jQ1nS6B48Q0cI,21142
|
5
5
|
openepd/api/category/__init__.py,sha256=rqQJWF5jpYAgRbbAycUfWMGsr5kGtfjmwzsTeqbElJw,837
|
@@ -52,12 +52,12 @@ openepd/model/specs/generated/cast_decks_and_underlayment.py,sha256=2VwwCgVRb3Su
|
|
52
52
|
openepd/model/specs/generated/cladding.py,sha256=RHq6irHwXJNnKuBOsA3h2g1jedMDOJPmV4WNjkdesgs,6939
|
53
53
|
openepd/model/specs/generated/cmu.py,sha256=mSRYG67m2c01C1dmYNyQjXQmYCcM4frpLQ3wKurTa50,2324
|
54
54
|
openepd/model/specs/generated/common.py,sha256=n_wuE-VtNFytpE-uLZrSXeeIIoNl2lSutPodiGKH94E,1117
|
55
|
-
openepd/model/specs/generated/concrete.py,sha256=
|
55
|
+
openepd/model/specs/generated/concrete.py,sha256=CrHhIA-FR8zgvbCL_9oNVnRSaXhGMwCmEs4ep4XUZ4Y,8324
|
56
56
|
openepd/model/specs/generated/conveying_equipment.py,sha256=HcMSuyng9OlRKvUVYSstJx0XtaD8_cQ9ka8l4vG76AY,2422
|
57
57
|
openepd/model/specs/generated/electrical.py,sha256=oEhWkm4Au9N0xtTLUNTUVMxQUuJuvoLgOKccnAI0oGQ,10457
|
58
58
|
openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py,sha256=CiI6wcfo_tf6QoGkpAjUskCUKNJQvz0_N0RD7tF1oiA,2117
|
59
59
|
openepd/model/specs/generated/electricity.py,sha256=8W_vkCn_MDoB5rqGbPp2g04VMEG0ULMexD4OImgAt9U,1029
|
60
|
-
openepd/model/specs/generated/enums.py,sha256=
|
60
|
+
openepd/model/specs/generated/enums.py,sha256=fCX13A-xCZoIBb_CR-_XSBBWemLSCg5QhqCoE2IxlW4,58482
|
61
61
|
openepd/model/specs/generated/finishes.py,sha256=xGjhNfpecOT7H4zElK34VSJuy8mfJ8gFF85PurKatao,22337
|
62
62
|
openepd/model/specs/generated/fire_and_smoke_protection.py,sha256=sbyEIMHB8zkIREqvUW6SSYZO9Tlx_zEoJrHWhqIjboI,2801
|
63
63
|
openepd/model/specs/generated/furnishings.py,sha256=NkS59ulTVqzSWFveM4Qd0Wv6bh0E-sx45fLrTH3Ixs4,3076
|
@@ -68,13 +68,13 @@ openepd/model/specs/generated/material_handling.py,sha256=qiyo_nH4nXmvTZxebqhOMX
|
|
68
68
|
openepd/model/specs/generated/mechanical.py,sha256=fELaoqPbNhgOQ_6oB8NIRfgz7Nff_nB6rqb0um1MGKY,11561
|
69
69
|
openepd/model/specs/generated/mechanical_insulation.py,sha256=CAtiQCPZUnRnfnKS8upqxQGuWoizCk4Hq8hgxg_0ZoA,1900
|
70
70
|
openepd/model/specs/generated/network_infrastructure.py,sha256=rejSwn6i0Ns4K2tFbv212wroM-zT4B2vTeIr3g8MVeg,8644
|
71
|
-
openepd/model/specs/generated/openings.py,sha256=
|
71
|
+
openepd/model/specs/generated/openings.py,sha256=llb7UvXe93qZ94MAhCNVWDFWdALSi_xhjJcQ5JFNIws,19729
|
72
72
|
openepd/model/specs/generated/other_electrical_equipment.py,sha256=06HI_DEoHlywStzhj8rQtkfnXyWc-4Q4O3iE2rv4h2I,1057
|
73
73
|
openepd/model/specs/generated/other_materials.py,sha256=DCVKE_C0aVdotwayPuMATTlEmDjfTUm3-cQ8gzdxGMw,3453
|
74
74
|
openepd/model/specs/generated/plumbing.py,sha256=MOtI9aRGHtW64hui2x9ayHgkhtXtem0Aa6GTHJMpHw8,5439
|
75
75
|
openepd/model/specs/generated/precast_concrete.py,sha256=0aMCCXnCCgt7GGvjAppFAe-Hidjn-rokpvhOL1YgK0A,2690
|
76
76
|
openepd/model/specs/generated/sheathing.py,sha256=pV_j6R8mZ7Kyr8WYxP6UzsP3qSAqwxbVfe9V7jjSYb0,3516
|
77
|
-
openepd/model/specs/generated/steel.py,sha256=
|
77
|
+
openepd/model/specs/generated/steel.py,sha256=yKRhe4scCbMPvps6pk7cuA-TSe_HuynyeuQu1VceJfE,10255
|
78
78
|
openepd/model/specs/generated/thermal_moisture_protection.py,sha256=3rqYO7_ljDMF_SLy0SsMjuiciOyL2qgVCyYz3b9ouTM,7963
|
79
79
|
openepd/model/specs/generated/utility_piping.py,sha256=qUJEFUWMav-TTB4UcJhRW2E_xftBwr0NwL_oTZmLuLQ,2768
|
80
80
|
openepd/model/specs/generated/wood.py,sha256=w_z9b2bIBjNyLEsn8MvFxVo0sVSuK75Mmuh9fQbOqgo,6199
|
@@ -89,7 +89,7 @@ openepd/model/validation/numbers.py,sha256=4gkMS35zKnGyfdFyLTgHncNmKpg8-WOYX9qaU
|
|
89
89
|
openepd/model/validation/quantity.py,sha256=GIPPtzOVwMYgKpx1XbDmoLQERlcoQ-VSK6k_EyMNQoQ,5287
|
90
90
|
openepd/model/versioning.py,sha256=1gqeeAhc2lVonq9ErOD3Ws7XZ0CgZnmlFpKHKrc9IwI,4690
|
91
91
|
openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
|
-
openepd-3.1.
|
93
|
-
openepd-3.1.
|
94
|
-
openepd-3.1.
|
95
|
-
openepd-3.1.
|
92
|
+
openepd-3.1.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
93
|
+
openepd-3.1.2.dist-info/METADATA,sha256=ih0zcoUzRm83KjbY5uSwBPTdbjdb2vBlWPA1G4G3VQs,7790
|
94
|
+
openepd-3.1.2.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
95
|
+
openepd-3.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|