openepd 6.21.0__tar.gz → 6.22.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 (156) hide show
  1. {openepd-6.21.0 → openepd-6.22.0}/PKG-INFO +1 -1
  2. {openepd-6.21.0 → openepd-6.22.0}/pyproject.toml +1 -1
  3. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/__version__.py +1 -1
  4. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/manufacturing_inputs.py +13 -4
  5. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/openings.py +9 -3
  6. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/manufacturing_inputs.py +9 -2
  7. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/openings.py +9 -1
  8. {openepd-6.21.0 → openepd-6.22.0}/LICENSE +0 -0
  9. {openepd-6.21.0 → openepd-6.22.0}/README.md +0 -0
  10. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/__init__.py +0 -0
  11. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/__init__.py +0 -0
  12. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/average_dataset/__init__.py +0 -0
  13. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
  14. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
  15. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/base_sync_client.py +0 -0
  16. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/category/__init__.py +0 -0
  17. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/category/dto.py +0 -0
  18. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/category/sync_api.py +0 -0
  19. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/common.py +0 -0
  20. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/__init__.py +0 -0
  21. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/base.py +0 -0
  22. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/common.py +0 -0
  23. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/meta.py +0 -0
  24. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/mf.py +0 -0
  25. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/dto/params.py +0 -0
  26. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/epd/__init__.py +0 -0
  27. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/epd/dto.py +0 -0
  28. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/epd/sync_api.py +0 -0
  29. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/errors.py +0 -0
  30. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/org/__init__.py +0 -0
  31. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/org/sync_api.py +0 -0
  32. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/pcr/__init__.py +0 -0
  33. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/pcr/sync_api.py +0 -0
  34. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/plant/__init__.py +0 -0
  35. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/plant/sync_api.py +0 -0
  36. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/standard/__init__.py +0 -0
  37. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/standard/sync_api.py +0 -0
  38. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/sync_client.py +0 -0
  39. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/test/__init__.py +0 -0
  40. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/api/utils.py +0 -0
  41. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/bundle/__init__.py +0 -0
  42. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/bundle/base.py +0 -0
  43. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/bundle/model.py +0 -0
  44. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/bundle/reader.py +0 -0
  45. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/bundle/writer.py +0 -0
  46. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/compat/__init__.py +0 -0
  47. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/compat/compat_functional_validators.py +0 -0
  48. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/compat/pydantic.py +0 -0
  49. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/m49/__init__.py +0 -0
  50. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/m49/const.py +0 -0
  51. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/m49/utils.py +0 -0
  52. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/__init__.py +0 -0
  53. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/base.py +0 -0
  54. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/category.py +0 -0
  55. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/common.py +0 -0
  56. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/declaration.py +0 -0
  57. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/epd.py +0 -0
  58. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/factory.py +0 -0
  59. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/generic_estimate.py +0 -0
  60. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/geography.py +0 -0
  61. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/industry_epd.py +0 -0
  62. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/lcia.py +0 -0
  63. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/org.py +0 -0
  64. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/pcr.py +0 -0
  65. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/README.md +0 -0
  66. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/__init__.py +0 -0
  67. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/asphalt.py +0 -0
  68. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/base.py +0 -0
  69. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/concrete.py +0 -0
  70. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/enums.py +0 -0
  71. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/__init__.py +0 -0
  72. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/accessories.py +0 -0
  73. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/aggregates.py +0 -0
  74. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/aluminium.py +0 -0
  75. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/asphalt.py +0 -0
  76. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/bulk_materials.py +0 -0
  77. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
  78. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/cladding.py +0 -0
  79. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/cmu.py +0 -0
  80. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/concrete.py +0 -0
  81. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
  82. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/electrical.py +0 -0
  83. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
  84. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/electricity.py +0 -0
  85. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/exterior_improvements.py +0 -0
  86. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/finishes.py +0 -0
  87. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
  88. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/furnishings.py +0 -0
  89. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/grouting.py +0 -0
  90. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/masonry.py +0 -0
  91. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/material_handling.py +0 -0
  92. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/mechanical.py +0 -0
  93. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
  94. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/mixins/__init__.py +0 -0
  95. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/mixins/access_flooring_mixin.py +0 -0
  96. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
  97. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/other_electrical_equipment.py +0 -0
  98. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/other_materials.py +0 -0
  99. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/plumbing.py +0 -0
  100. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/precast_concrete.py +0 -0
  101. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/sheathing.py +0 -0
  102. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/steel.py +0 -0
  103. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
  104. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/utility_piping.py +0 -0
  105. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/wood.py +0 -0
  106. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/range/wood_joists.py +0 -0
  107. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/__init__.py +0 -0
  108. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/accessories.py +0 -0
  109. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/aggregates.py +0 -0
  110. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/aluminium.py +0 -0
  111. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/asphalt.py +0 -0
  112. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
  113. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
  114. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/cladding.py +0 -0
  115. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/cmu.py +0 -0
  116. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/common.py +0 -0
  117. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/concrete.py +0 -0
  118. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
  119. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
  120. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
  121. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
  122. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/electrical.py +0 -0
  123. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
  124. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/electricity.py +0 -0
  125. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/exterior_improvements.py +0 -0
  126. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/finishes.py +0 -0
  127. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
  128. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/furnishings.py +0 -0
  129. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/grouting.py +0 -0
  130. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/masonry.py +0 -0
  131. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/material_handling.py +0 -0
  132. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/mechanical.py +0 -0
  133. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
  134. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
  135. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/mixins/access_flooring_mixin.py +0 -0
  136. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
  137. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
  138. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/other_electrical_equipment.py +0 -0
  139. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/other_materials.py +0 -0
  140. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/plumbing.py +0 -0
  141. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
  142. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/sheathing.py +0 -0
  143. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/steel.py +0 -0
  144. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
  145. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/utility_piping.py +0 -0
  146. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/wood.py +0 -0
  147. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/specs/singular/wood_joists.py +0 -0
  148. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/standard.py +0 -0
  149. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/validation/__init__.py +0 -0
  150. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/validation/common.py +0 -0
  151. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/validation/enum.py +0 -0
  152. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/validation/numbers.py +0 -0
  153. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/validation/quantity.py +0 -0
  154. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/model/versioning.py +0 -0
  155. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/patch_pydantic.py +0 -0
  156. {openepd-6.21.0 → openepd-6.22.0}/src/openepd/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openepd
3
- Version: 6.21.0
3
+ Version: 6.22.0
4
4
  Summary: Python library to work with OpenEPD format
5
5
  License: Apache-2.0
6
6
  Author: C-Change Labs
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openepd"
3
- version = "6.21.0"
3
+ version = "6.22.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>"]
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- VERSION = "6.21.0"
16
+ VERSION = "6.22.0"
@@ -26,8 +26,6 @@ __all__ = (
26
26
  "TextilesRangeV1",
27
27
  )
28
28
 
29
- # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
30
-
31
29
 
32
30
  from openepd.compat.pydantic import pyd
33
31
  from openepd.model.common import RangeFloat
@@ -181,17 +179,27 @@ class AccessFlooringPanelsRangeV1(BaseOpenEpdHierarchicalSpec, AccessFlooringRan
181
179
  _EXT_VERSION = "1.0"
182
180
 
183
181
 
182
+ class AsphaltInputsRangeV1(BaseOpenEpdHierarchicalSpec):
183
+ """
184
+ Binders, additives, and other non-aggregate-like ingredients for asphalt.
185
+
186
+ Range version.
187
+ """
188
+
189
+ _EXT_VERSION = "1.0"
190
+
191
+
184
192
  class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
185
193
  """
186
194
  Manufacturing inputs.
187
195
 
188
196
  Broad category for collecting materials primarily used as manufacturing inputs, rather than directly used in
189
- a construction.
197
+ construction.
190
198
 
191
199
  Range version.
192
200
  """
193
201
 
194
- _EXT_VERSION = "1.1"
202
+ _EXT_VERSION = "1.2"
195
203
 
196
204
  AccessFlooringPedestals: AccessFlooringPedestalsRangeV1 | None = None
197
205
  CarpetBacking: CarpetBackingRangeV1 | None = None
@@ -200,3 +208,4 @@ class ManufacturingInputsRangeV1(BaseOpenEpdHierarchicalSpec):
200
208
  ConcreteAdmixtures: ConcreteAdmixturesRangeV1 | None = None
201
209
  Textiles: TextilesRangeV1 | None = None
202
210
  AccessFlooringPanels: AccessFlooringPanelsRangeV1 | None = None
211
+ AsphaltInputs: AsphaltInputsRangeV1 | None = None
@@ -44,8 +44,6 @@ __all__ = (
44
44
  "WoodDoorsRangeV1",
45
45
  )
46
46
 
47
- # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
48
-
49
47
 
50
48
  from openepd.compat.pydantic import pyd
51
49
  from openepd.model.common import RangeInt, RangeRatioFloat
@@ -218,7 +216,15 @@ class UnitSkylightsRangeV1(BaseOpenEpdHierarchicalSpec):
218
216
  Range version.
219
217
  """
220
218
 
221
- _EXT_VERSION = "1.0"
219
+ _EXT_VERSION = "1.1"
220
+
221
+ roof_window: bool | None = pyd.Field(
222
+ default=None,
223
+ description=(
224
+ "Similar to a skylight but has an outward opening that extends from a roof, and is therefore not fixed"
225
+ ),
226
+ example=True,
227
+ )
222
228
 
223
229
 
224
230
  class WindowsRangeV1(BaseOpenEpdHierarchicalSpec):
@@ -143,15 +143,21 @@ class AccessFlooringPanelsV1(BaseOpenEpdHierarchicalSpec, AccessFlooringMixin):
143
143
  _EXT_VERSION = "1.0"
144
144
 
145
145
 
146
+ class AsphaltInputsV1(BaseOpenEpdHierarchicalSpec):
147
+ """Binders, additives, and other non-aggregate-like ingredients for asphalt."""
148
+
149
+ _EXT_VERSION = "1.0"
150
+
151
+
146
152
  class ManufacturingInputsV1(BaseOpenEpdHierarchicalSpec):
147
153
  """
148
154
  Manufacturing inputs.
149
155
 
150
156
  Broad category for collecting materials primarily used as manufacturing inputs, rather than directly used in
151
- a construction.
157
+ construction.
152
158
  """
153
159
 
154
- _EXT_VERSION = "1.1"
160
+ _EXT_VERSION = "1.2"
155
161
 
156
162
  # Nested specs:
157
163
  AccessFlooringPedestals: AccessFlooringPedestalsV1 | None = None
@@ -161,3 +167,4 @@ class ManufacturingInputsV1(BaseOpenEpdHierarchicalSpec):
161
167
  ConcreteAdmixtures: ConcreteAdmixturesV1 | None = None
162
168
  Textiles: TextilesV1 | None = None
163
169
  AccessFlooringPanels: AccessFlooringPanelsV1 | None = None
170
+ AsphaltInputs: AsphaltInputsV1 | None = None
@@ -242,7 +242,15 @@ class UnitSkylightsV1(BaseOpenEpdHierarchicalSpec):
242
242
  by hand (cf. roof window). Includes frame(s) and possibly operating hardware.
243
243
  """
244
244
 
245
- _EXT_VERSION = "1.0"
245
+ _EXT_VERSION = "1.1"
246
+
247
+ roof_window: bool | None = pyd.Field(
248
+ default=None,
249
+ description=(
250
+ "Similar to a skylight but has an outward opening that extends from a roof, and is therefore not fixed"
251
+ ),
252
+ example=True,
253
+ )
246
254
 
247
255
 
248
256
  class WindowsV1(BaseOpenEpdHierarchicalSpec):
File without changes
File without changes
File without changes