openepd 3.2.0__tar.gz → 3.4.0__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.
Files changed (94) hide show
  1. {openepd-3.2.0 → openepd-3.4.0}/PKG-INFO +1 -1
  2. {openepd-3.2.0 → openepd-3.4.0}/pyproject.toml +1 -1
  3. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/__version__.py +1 -1
  4. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/common.py +1 -0
  5. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/conveying_equipment.py +31 -2
  6. openepd-3.4.0/src/openepd/model/specs/generated/precast_concrete.py +202 -0
  7. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/validation/quantity.py +6 -0
  8. openepd-3.2.0/src/openepd/model/specs/generated/precast_concrete.py +0 -64
  9. {openepd-3.2.0 → openepd-3.4.0}/LICENSE +0 -0
  10. {openepd-3.2.0 → openepd-3.4.0}/README.md +0 -0
  11. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/__init__.py +0 -0
  12. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/__init__.py +0 -0
  13. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/base_sync_client.py +0 -0
  14. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/category/__init__.py +0 -0
  15. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/category/dto.py +0 -0
  16. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/category/sync_api.py +0 -0
  17. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/common.py +0 -0
  18. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/__init__.py +0 -0
  19. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/base.py +0 -0
  20. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/common.py +0 -0
  21. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/meta.py +0 -0
  22. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/mf.py +0 -0
  23. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/dto/params.py +0 -0
  24. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/epd/__init__.py +0 -0
  25. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/epd/dto.py +0 -0
  26. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/epd/sync_api.py +0 -0
  27. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/errors.py +0 -0
  28. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/pcr/__init__.py +0 -0
  29. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/pcr/dto.py +0 -0
  30. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/pcr/sync_api.py +0 -0
  31. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/sync_client.py +0 -0
  32. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/api/test/__init__.py +0 -0
  33. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/bundle/__init__.py +0 -0
  34. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/bundle/base.py +0 -0
  35. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/bundle/model.py +0 -0
  36. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/bundle/reader.py +0 -0
  37. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/bundle/writer.py +0 -0
  38. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/compat/__init__.py +0 -0
  39. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/compat/compat_functional_validators.py +0 -0
  40. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/compat/pydantic.py +0 -0
  41. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/__init__.py +0 -0
  42. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/base.py +0 -0
  43. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/category.py +0 -0
  44. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/epd.py +0 -0
  45. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/factory.py +0 -0
  46. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/lcia.py +0 -0
  47. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/org.py +0 -0
  48. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/pcr.py +0 -0
  49. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/README.md +0 -0
  50. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/__init__.py +0 -0
  51. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/asphalt.py +0 -0
  52. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/base.py +0 -0
  53. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/concrete.py +0 -0
  54. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/__init__.py +0 -0
  55. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/accessories.py +0 -0
  56. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/aggregates.py +0 -0
  57. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/aluminium.py +0 -0
  58. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/asphalt.py +0 -0
  59. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/bulk_materials.py +0 -0
  60. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/cast_decks_and_underlayment.py +0 -0
  61. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/cladding.py +0 -0
  62. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/cmu.py +0 -0
  63. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/common.py +0 -0
  64. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/concrete.py +0 -0
  65. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/electrical.py +0 -0
  66. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py +0 -0
  67. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/electricity.py +0 -0
  68. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/enums.py +0 -0
  69. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/finishes.py +0 -0
  70. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/fire_and_smoke_protection.py +0 -0
  71. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/furnishings.py +0 -0
  72. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/grouting.py +0 -0
  73. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/manufacturing_inputs.py +0 -0
  74. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/masonry.py +0 -0
  75. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/material_handling.py +0 -0
  76. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/mechanical.py +0 -0
  77. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/mechanical_insulation.py +0 -0
  78. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/network_infrastructure.py +0 -0
  79. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/openings.py +0 -0
  80. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/other_electrical_equipment.py +0 -0
  81. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/other_materials.py +0 -0
  82. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/plumbing.py +0 -0
  83. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/sheathing.py +0 -0
  84. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/steel.py +0 -0
  85. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/thermal_moisture_protection.py +0 -0
  86. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/utility_piping.py +0 -0
  87. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/wood.py +0 -0
  88. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/specs/generated/wood_joists.py +0 -0
  89. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/standard.py +0 -0
  90. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/validation/__init__.py +0 -0
  91. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/validation/common.py +0 -0
  92. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/validation/numbers.py +0 -0
  93. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/model/versioning.py +0 -0
  94. {openepd-3.2.0 → openepd-3.4.0}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openepd
3
- Version: 3.2.0
3
+ Version: 3.4.0
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openepd"
3
- version = "3.2.0"
3
+ version = "3.4.0"
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>"]
@@ -17,4 +17,4 @@
17
17
  # Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
18
18
  # Find out more at www.BuildingTransparency.org
19
19
  #
20
- VERSION = "3.2.0"
20
+ VERSION = "3.4.0"
@@ -153,3 +153,4 @@ class OpenEPDUnit(StrEnum):
153
153
  use = "use"
154
154
  degree_c = "°C"
155
155
  kg_co2 = "kgCO2e"
156
+ hour = "hour"
@@ -20,7 +20,35 @@
20
20
  from openepd.compat.pydantic import pyd
21
21
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
22
22
  from openepd.model.specs.generated.enums import ElevatorsBuildingRise, ElevatorsUsageIntensity
23
- from openepd.model.validation.quantity import LengthMStr, MassKgStr, SpeedStr
23
+ from openepd.model.validation.quantity import CapacityPerHourStr, LengthMStr, MassKgStr, SpeedStr
24
+
25
+
26
+ class EscalatorsV1(BaseOpenEpdHierarchicalSpec):
27
+ """
28
+ Escalators category performance specification.
29
+
30
+ A moving staircase consisting of a circulating belt of steps driven by a motor,
31
+ which conveys people between the floors of a building.
32
+ """
33
+
34
+ vertical_rize: LengthMStr | None = pyd.Field(
35
+ default=None,
36
+ description="The vertical distance between the top and bottom landings of an escalator",
37
+ example="1 m",
38
+ )
39
+ speed: SpeedStr | None = pyd.Field(default=None, description="Reference speed of the escalator", example="1 m / s")
40
+ step_width: LengthMStr | None = pyd.Field(default=None, description="Width of the escalator steps", example="1 m")
41
+ max_capacity: CapacityPerHourStr | None = pyd.Field(
42
+ default=None, description="Max capacity of escalator in persons per hour", example="1 hour^-1"
43
+ )
44
+ indoor: bool | None = pyd.Field(
45
+ default=None, description="Escalator can be used for indoor applications", example=True
46
+ )
47
+ outdoor: bool | None = pyd.Field(
48
+ default=None, description="Escalator can be used for outdoor applications", example=True
49
+ )
50
+
51
+ _EXT_VERSION = "1.0"
24
52
 
25
53
 
26
54
  class ElevatorsV1(BaseOpenEpdHierarchicalSpec):
@@ -41,7 +69,8 @@ class ElevatorsV1(BaseOpenEpdHierarchicalSpec):
41
69
  class ConveyingEquipmentV1(BaseOpenEpdHierarchicalSpec):
42
70
  """Conveying Equipment."""
43
71
 
44
- _EXT_VERSION = "1.0"
72
+ _EXT_VERSION = "1.1"
45
73
 
46
74
  # Nested specs:
47
75
  Elevators: ElevatorsV1 | None = None
76
+ Escalators: EscalatorsV1 | None = None
@@ -0,0 +1,202 @@
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
+ # This software was developed with support from the Skanska USA,
17
+ # Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
18
+ # Find out more at www.BuildingTransparency.org
19
+ #
20
+ from openepd.compat.pydantic import pyd
21
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec, BaseOpenEpdSpec
22
+ from openepd.model.validation.numbers import RatioFloat
23
+ from openepd.model.validation.quantity import PressureMPaStr
24
+
25
+
26
+ class StructuralPrecastElementType(BaseOpenEpdSpec):
27
+ """Precast element types for Structural Precast Concrete."""
28
+
29
+ wall: bool | None = pyd.Field(
30
+ description="Precast solid wall elements, including thin shell",
31
+ example=True,
32
+ default=None,
33
+ )
34
+ solid_slab: bool | None = pyd.Field(
35
+ description="Precast slabs used for floor or roof applications",
36
+ example=True,
37
+ default=None,
38
+ )
39
+ hollowcore: bool | None = pyd.Field(
40
+ description="Precast slabs with tubular voids, typically used flooring applications",
41
+ example=True,
42
+ default=None,
43
+ )
44
+ beam: bool | None = pyd.Field(
45
+ description="Precast structural beams for carrying or transferring loads; includes girders",
46
+ example=True,
47
+ default=None,
48
+ )
49
+ column: bool | None = pyd.Field(
50
+ description="Precast structural columns for carrying or transferring loads",
51
+ example=True,
52
+ default=None,
53
+ )
54
+ stairs: bool | None = pyd.Field(
55
+ description="Staircases made of precast concrete components",
56
+ example=True,
57
+ default=None,
58
+ )
59
+ balcony: bool | None = pyd.Field(
60
+ description="Balcony slabs made from precast concrete",
61
+ example=True,
62
+ default=None,
63
+ )
64
+ pile: bool | None = pyd.Field(
65
+ description="Precast concrete structural foundation elements used to support offshore structures such as bridges, oil rigs, and floating airports",
66
+ example=True,
67
+ default=None,
68
+ )
69
+
70
+
71
+ class UtilityPrecastElementType(BaseOpenEpdSpec):
72
+ """Precast element types for Utility Underground Precast Concrete."""
73
+
74
+ manhole: bool | None = pyd.Field(
75
+ description="Precast barrel-shaped chambers used for wastewater management and access management",
76
+ example=True,
77
+ default=None,
78
+ )
79
+ retaining_wall: bool | None = pyd.Field(
80
+ description="Precast concrete structures for retaining soil",
81
+ example=True,
82
+ default=None,
83
+ )
84
+ box_culvert: bool | None = pyd.Field(
85
+ description="A precast concrete structure commonly used to channel water, primarily as part of a drainage system",
86
+ example=True,
87
+ default=None,
88
+ )
89
+
90
+
91
+ class ArchitecturalPrecastElementType(BaseOpenEpdSpec):
92
+ """Precast element types for Architectural Precast Concrete."""
93
+
94
+ wall: bool | None = pyd.Field(
95
+ description="Precast solid wall elements, including thin shell",
96
+ example=True,
97
+ default=None,
98
+ )
99
+
100
+
101
+ class CivilPrecastElementType(BaseOpenEpdSpec):
102
+ """Precast element types for Civil Precast Concrete."""
103
+
104
+ beam: bool | None = pyd.Field(
105
+ description="Precast structural beams for carrying or transferring loads; includes girders",
106
+ example=True,
107
+ default=None,
108
+ )
109
+ manhole: bool | None = pyd.Field(
110
+ description="Precast barrel-shaped chambers used for wastewater management and access management",
111
+ example=True,
112
+ default=None,
113
+ )
114
+ retaining_wall: bool | None = pyd.Field(
115
+ description="Precast concrete structures for retaining soil",
116
+ example=True,
117
+ default=None,
118
+ )
119
+ rail_sleeper: bool | None = pyd.Field(
120
+ description="Rectangular supports for the rails on railroad tracks, which transfer loads to the track ballast and subgrade and keep the rails spaced to the correct gauge. Also called railroad ties",
121
+ example=True,
122
+ default=None,
123
+ )
124
+ box_culvert: bool | None = pyd.Field(
125
+ description="A precast concrete structure commonly used to channel water, primarily as part of a drainage system",
126
+ example=True,
127
+ default=None,
128
+ )
129
+ pile: bool | None = pyd.Field(
130
+ description="Precast concrete structural foundation elements used to support offshore structures such as bridges, oil rigs, and floating airports",
131
+ example=True,
132
+ default=None,
133
+ )
134
+ road_barriers: bool | None = pyd.Field(
135
+ description="Precast Vehicle and Traffic Barriers",
136
+ example=True,
137
+ default=None,
138
+ )
139
+
140
+
141
+ class ArchitecturalPrecastV1(BaseOpenEpdHierarchicalSpec):
142
+ """Precast concrete cladding used for architectural purposes."""
143
+
144
+ _EXT_VERSION = "1.1"
145
+
146
+ element_type: ArchitecturalPrecastElementType | None = pyd.Field(
147
+ default=None, description="Precast element type used for architectural applications."
148
+ )
149
+
150
+
151
+ class StructuralPrecastV1(BaseOpenEpdHierarchicalSpec):
152
+ """Precast concrete used for structural purposes."""
153
+
154
+ _EXT_VERSION = "1.1"
155
+
156
+ element_type: StructuralPrecastElementType | None = pyd.Field(
157
+ default=None, description="Precast element type used for structural applications."
158
+ )
159
+
160
+
161
+ class UtilityUndergroundPrecastV1(BaseOpenEpdHierarchicalSpec):
162
+ """Precast concrete for utility vaults, manhole, drain inlets. Excludes piping."""
163
+
164
+ _EXT_VERSION = "1.1"
165
+
166
+ element_type: UtilityPrecastElementType | None = pyd.Field(
167
+ default=None, description="Precast element type used for utility underground applications."
168
+ )
169
+
170
+
171
+ class CivilPrecastV1(BaseOpenEpdHierarchicalSpec):
172
+ """Precast concrete used for civil engineering applications including bridges, highways, and railroads."""
173
+
174
+ _EXT_VERSION = "1.0"
175
+
176
+ element_type: CivilPrecastElementType | None = pyd.Field(
177
+ default=None, description="Precast element type used as civil engineering components."
178
+ )
179
+
180
+
181
+ class PrecastConcreteV1(BaseOpenEpdHierarchicalSpec):
182
+ """General category for precast concrete components."""
183
+
184
+ _EXT_VERSION = "1.1"
185
+
186
+ # Own fields:
187
+ lightweight: bool | None = pyd.Field(default=None, description="", example=True)
188
+ concrete_compressive_strength_28d: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
189
+ insulated: bool | None = pyd.Field(default=None, description="", example=True)
190
+ gfrc: bool | None = pyd.Field(
191
+ default=None,
192
+ description="Glass Fiber Reinforced Concrete is fiber-reinforced concrete sometimes used in "
193
+ "architectural panels",
194
+ example=True,
195
+ )
196
+ steel_mass_percentage: RatioFloat | None = pyd.Field(default=None, description="", example=0.5, ge=0, le=1)
197
+
198
+ # Nested specs:
199
+ ArchitecturalPrecast: ArchitecturalPrecastV1 | None = None
200
+ StructuralPrecast: StructuralPrecastV1 | None = None
201
+ UtilityUndergroundPrecast: UtilityUndergroundPrecastV1 | None = None
202
+ CivilPrecast: CivilPrecastV1 | None = None
@@ -214,6 +214,12 @@ class GwpKgCo2eStr(QuantityStr):
214
214
  unit = OpenEPDUnit.kg_co2
215
215
 
216
216
 
217
+ class CapacityPerHourStr(QuantityStr):
218
+ """Capacity per-hour quantity type."""
219
+
220
+ unit = f"{OpenEPDUnit.hour}^-1"
221
+
222
+
217
223
  class RValueStr(QuantityStr):
218
224
  """R-Value quantity type."""
219
225
 
@@ -1,64 +0,0 @@
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
- # This software was developed with support from the Skanska USA,
17
- # Charles Pankow Foundation, Microsoft Sustainability Fund, Interface, MKA Foundation, and others.
18
- # Find out more at www.BuildingTransparency.org
19
- #
20
- from openepd.compat.pydantic import pyd
21
- from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
22
- from openepd.model.validation.numbers import RatioFloat
23
- from openepd.model.validation.quantity import PressureMPaStr
24
-
25
-
26
- class ArchitecturalPrecastV1(BaseOpenEpdHierarchicalSpec):
27
- """Precast concrete cladding used for architectural purposes."""
28
-
29
- _EXT_VERSION = "1.0"
30
-
31
-
32
- class StructuralPrecastV1(BaseOpenEpdHierarchicalSpec):
33
- """Precast concrete used for structural purposes."""
34
-
35
- _EXT_VERSION = "1.0"
36
-
37
-
38
- class UtilityUndergroundPrecastV1(BaseOpenEpdHierarchicalSpec):
39
- """Precast concrete for utility vaults, manhole, drain inlets. Excludes piping."""
40
-
41
- _EXT_VERSION = "1.0"
42
-
43
-
44
- class PrecastConcreteV1(BaseOpenEpdHierarchicalSpec):
45
- """General category for precast concrete components."""
46
-
47
- _EXT_VERSION = "1.0"
48
-
49
- # Own fields:
50
- lightweight: bool | None = pyd.Field(default=None, description="", example=True)
51
- concrete_compressive_strength_28d: PressureMPaStr | None = pyd.Field(default=None, description="", example="1 MPa")
52
- insulated: bool | None = pyd.Field(default=None, description="", example=True)
53
- gfrc: bool | None = pyd.Field(
54
- default=None,
55
- description="Glass Fiber Reinforced Concrete is fiber-reinforced concrete sometimes used in "
56
- "architectural panels",
57
- example=True,
58
- )
59
- steel_mass_percentage: RatioFloat | None = pyd.Field(default=None, description="", example=0.5, ge=0, le=1)
60
-
61
- # Nested specs:
62
- ArchitecturalPrecast: ArchitecturalPrecastV1 | None = None
63
- StructuralPrecast: StructuralPrecastV1 | None = None
64
- UtilityUndergroundPrecast: UtilityUndergroundPrecastV1 | None = None
File without changes
File without changes
File without changes
File without changes