openepd 3.1.0__tar.gz → 3.1.2__tar.gz
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-3.1.0 → openepd-3.1.2}/PKG-INFO +2 -1
- {openepd-3.1.0 → openepd-3.1.2}/pyproject.toml +3 -2
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/__version__.py +1 -1
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/concrete.py +18 -10
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/concrete.py +62 -17
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/enums.py +26 -20
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/openings.py +209 -79
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/steel.py +109 -42
- {openepd-3.1.0 → openepd-3.1.2}/LICENSE +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/README.md +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/base_sync_client.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/category/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/category/dto.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/category/sync_api.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/common.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/base.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/common.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/meta.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/mf.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/dto/params.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/epd/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/epd/dto.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/epd/sync_api.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/errors.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/pcr/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/pcr/dto.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/pcr/sync_api.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/sync_client.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/api/test/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/bundle/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/bundle/base.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/bundle/model.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/bundle/reader.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/bundle/writer.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/compat/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/compat/pydantic.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/base.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/category.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/common.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/epd.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/factory.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/lcia.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/org.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/pcr.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/README.md +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/aluminium.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/asphalt.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/base.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/accessories.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/aggregates.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/aluminium.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/asphalt.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/bulk_materials.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/cast_decks_and_underlayment.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/cladding.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/cmu.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/common.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/conveying_equipment.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/electrical.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/electricity.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/finishes.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/fire_and_smoke_protection.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/furnishings.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/grouting.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/manufacturing_inputs.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/masonry.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/material_handling.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/mechanical.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/mechanical_insulation.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/network_infrastructure.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/other_electrical_equipment.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/other_materials.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/plumbing.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/precast_concrete.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/sheathing.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/thermal_moisture_protection.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/utility_piping.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/wood.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/generated/wood_joists.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/glass.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/steel.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/specs/wood.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/standard.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/validation/__init__.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/validation/common.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/validation/numbers.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/validation/quantity.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/model/versioning.py +0 -0
- {openepd-3.1.0 → openepd-3.1.2}/src/openepd/py.typed +0 -0
@@ -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,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "openepd"
|
3
|
-
version = "3.1.
|
3
|
+
version = "3.1.2"
|
4
4
|
license = "Apache-2.0"
|
5
5
|
description = "Python library to work with OpenEPD format"
|
6
6
|
authors = ["C-Change Labs <support@c-change-labs.com>"]
|
@@ -24,6 +24,7 @@ python = "^3.11"
|
|
24
24
|
pydantic = ">=1.10,<3.0"
|
25
25
|
email-validator = ">=1.3.1"
|
26
26
|
requests = { version = ">=2.0", optional = true }
|
27
|
+
idna = ">=3.7"
|
27
28
|
|
28
29
|
# Optional dependencies
|
29
30
|
# lxml = { version = "~=4.9.2", optional = true }
|
@@ -38,7 +39,7 @@ teamcity-messages = ">=1.31"
|
|
38
39
|
wheel = "~=0.40.0"
|
39
40
|
|
40
41
|
# Dev tools
|
41
|
-
black = "~=
|
42
|
+
black = "~=24.3"
|
42
43
|
licenseheaders = "~=0.8"
|
43
44
|
flake8 = "~=4.0"
|
44
45
|
flake8-import-graph = "~=0.1.3"
|
@@ -159,16 +159,24 @@ class CmuSpec(BaseOpenEpdSpec):
|
|
159
159
|
class Cementitious(BaseOpenEpdSchema):
|
160
160
|
"""List of cementitious materials, and proportion by mass."""
|
161
161
|
|
162
|
-
opc: RatioFloat | None = pyd.Field(
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
162
|
+
opc: RatioFloat | None = pyd.Field(
|
163
|
+
default=None, description="Ordinary Gray Portland Cement", example=0.5, ge=0, le=1
|
164
|
+
)
|
165
|
+
wht: RatioFloat | None = pyd.Field(default=None, description="White Portland Cement", example=0.5, ge=0, le=1)
|
166
|
+
ggbs: RatioFloat | None = pyd.Field(
|
167
|
+
default=None, description="Ground Granulated Blast Furnace Slag", example=0.5, ge=0, le=1
|
168
|
+
)
|
169
|
+
flyAsh: RatioFloat | None = pyd.Field(
|
170
|
+
default=None, description="Fly Ash, including types F, CL, and CH", example=0.5, ge=0, le=1
|
171
|
+
)
|
172
|
+
siFume: RatioFloat | None = pyd.Field(default=None, description="Silica Fume", example=0.5, ge=0, le=1)
|
173
|
+
gg45: RatioFloat | None = pyd.Field(
|
174
|
+
default=None, description="Ground Glass, 45um or smaller", example=0.5, ge=0, le=1
|
175
|
+
)
|
176
|
+
natPoz: RatioFloat | None = pyd.Field(default=None, description="Natural pozzolan", example=0.5, ge=0, le=1)
|
177
|
+
mk: RatioFloat | None = pyd.Field(default=None, description="Metakaolin", example=0.5, ge=0, le=1)
|
178
|
+
CaCO3: RatioFloat | None = pyd.Field(default=None, description="Limestone", example=0.5, ge=0, le=1)
|
179
|
+
other: RatioFloat | None = pyd.Field(default=None, description="Other SCMs", example=0.5, ge=0, le=1)
|
172
180
|
|
173
181
|
|
174
182
|
class TypicalApplication(BaseOpenEpdSchema):
|
@@ -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"
|