openepd 6.31.0__tar.gz → 6.31.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.
Files changed (164) hide show
  1. {openepd-6.31.0 → openepd-6.31.2}/PKG-INFO +1 -1
  2. {openepd-6.31.0 → openepd-6.31.2}/pyproject.toml +1 -1
  3. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/__version__.py +1 -1
  4. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/base.py +1 -1
  5. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/common.py +1 -1
  6. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/org.py +4 -0
  7. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/electrical.py +1 -0
  8. openepd-6.31.2/src/openepd/model/specs/range/other_electrical_equipment.py +18 -0
  9. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/electrical.py +33 -0
  10. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/masonry.py +0 -10
  11. openepd-6.31.2/src/openepd/model/specs/singular/other_electrical_equipment.py +18 -0
  12. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/validation/quantity.py +1 -1
  13. {openepd-6.31.0 → openepd-6.31.2}/LICENSE +0 -0
  14. {openepd-6.31.0 → openepd-6.31.2}/README.md +0 -0
  15. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/__init__.py +0 -0
  16. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/__init__.py +0 -0
  17. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/average_dataset/__init__.py +0 -0
  18. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
  19. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
  20. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/base_sync_client.py +0 -0
  21. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/category/__init__.py +0 -0
  22. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/category/dto.py +0 -0
  23. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/category/sync_api.py +0 -0
  24. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/common.py +0 -0
  25. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/__init__.py +0 -0
  26. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/base.py +0 -0
  27. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/common.py +0 -0
  28. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/meta.py +0 -0
  29. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/mf.py +0 -0
  30. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/dto/params.py +0 -0
  31. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/epd/__init__.py +0 -0
  32. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/epd/dto.py +0 -0
  33. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/epd/sync_api.py +0 -0
  34. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/errors.py +0 -0
  35. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/org/__init__.py +0 -0
  36. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/org/sync_api.py +0 -0
  37. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/pcr/__init__.py +0 -0
  38. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/pcr/sync_api.py +0 -0
  39. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/plant/__init__.py +0 -0
  40. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/plant/sync_api.py +0 -0
  41. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/standard/__init__.py +0 -0
  42. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/standard/sync_api.py +0 -0
  43. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/sync_client.py +0 -0
  44. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/test/__init__.py +0 -0
  45. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/api/utils.py +0 -0
  46. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/bundle/__init__.py +0 -0
  47. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/bundle/base.py +0 -0
  48. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/bundle/model.py +0 -0
  49. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/bundle/reader.py +0 -0
  50. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/bundle/writer.py +0 -0
  51. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/compat/__init__.py +0 -0
  52. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/compat/compat_functional_validators.py +0 -0
  53. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/compat/pydantic.py +0 -0
  54. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/constants/__init__.py +0 -0
  55. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/constants/scope_phases.py +0 -0
  56. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/m49/__init__.py +0 -0
  57. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/m49/const.py +0 -0
  58. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/m49/utils.py +0 -0
  59. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/__init__.py +0 -0
  60. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/category.py +0 -0
  61. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/declaration.py +0 -0
  62. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/epd.py +0 -0
  63. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/factory.py +0 -0
  64. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/generic_estimate.py +0 -0
  65. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/geography.py +0 -0
  66. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/industry_epd.py +0 -0
  67. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/lcia.py +0 -0
  68. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/pcr.py +0 -0
  69. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/README.md +0 -0
  70. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/__init__.py +0 -0
  71. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/asphalt.py +0 -0
  72. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/base.py +0 -0
  73. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/concrete.py +0 -0
  74. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/enums.py +0 -0
  75. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/__init__.py +0 -0
  76. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/accessories.py +0 -0
  77. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/aggregates.py +0 -0
  78. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/aluminium.py +0 -0
  79. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/asphalt.py +0 -0
  80. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/bulk_materials.py +0 -0
  81. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
  82. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/cladding.py +0 -0
  83. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/cmu.py +0 -0
  84. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/concrete.py +0 -0
  85. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
  86. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
  87. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/electricity.py +0 -0
  88. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/exterior_improvements.py +0 -0
  89. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/finishes.py +0 -0
  90. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
  91. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/furnishings.py +0 -0
  92. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/grouting.py +0 -0
  93. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/manufacturing_inputs.py +0 -0
  94. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/masonry.py +0 -0
  95. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/material_handling.py +0 -0
  96. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/mechanical.py +0 -0
  97. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
  98. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/mixins/__init__.py +0 -0
  99. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/mixins/access_flooring_mixin.py +0 -0
  100. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
  101. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/non_construction.py +0 -0
  102. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/openings.py +0 -0
  103. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/other_materials.py +0 -0
  104. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/plumbing.py +0 -0
  105. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/precast_concrete.py +0 -0
  106. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/sheathing.py +0 -0
  107. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/steel.py +0 -0
  108. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
  109. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/utility_piping.py +0 -0
  110. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/wood.py +0 -0
  111. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/range/wood_joists.py +0 -0
  112. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/__init__.py +0 -0
  113. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/accessories.py +0 -0
  114. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/aggregates.py +0 -0
  115. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/aluminium.py +0 -0
  116. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/asphalt.py +0 -0
  117. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
  118. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
  119. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/cladding.py +0 -0
  120. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/cmu.py +0 -0
  121. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/common.py +0 -0
  122. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/concrete.py +0 -0
  123. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
  124. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
  125. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
  126. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
  127. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
  128. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/electricity.py +0 -0
  129. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/exterior_improvements.py +0 -0
  130. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/finishes.py +0 -0
  131. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
  132. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/furnishings.py +0 -0
  133. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/grouting.py +0 -0
  134. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/manufacturing_inputs.py +0 -0
  135. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/material_handling.py +0 -0
  136. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/mechanical.py +0 -0
  137. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
  138. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
  139. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/mixins/access_flooring_mixin.py +0 -0
  140. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
  141. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
  142. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/non_construction.py +0 -0
  143. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/openings.py +0 -0
  144. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/other_materials.py +0 -0
  145. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/plumbing.py +0 -0
  146. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
  147. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/sheathing.py +0 -0
  148. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/steel.py +0 -0
  149. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
  150. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/utility_piping.py +0 -0
  151. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/wood.py +0 -0
  152. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/specs/singular/wood_joists.py +0 -0
  153. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/standard.py +0 -0
  154. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/validation/__init__.py +0 -0
  155. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/validation/common.py +0 -0
  156. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/validation/enum.py +0 -0
  157. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/validation/numbers.py +0 -0
  158. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/model/versioning.py +0 -0
  159. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/patch_pydantic.py +0 -0
  160. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/py.typed +0 -0
  161. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/utils/__init__.py +0 -0
  162. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/utils/functional.py +0 -0
  163. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/utils/mapping/__init__.py +0 -0
  164. {openepd-6.31.0 → openepd-6.31.2}/src/openepd/utils/mapping/common.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openepd
3
- Version: 6.31.0
3
+ Version: 6.31.2
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.31.0"
3
+ version = "6.31.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>"]
@@ -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.31.0"
16
+ VERSION = "6.31.2"
@@ -70,7 +70,7 @@ class BaseOpenEpdSchema(pyd.BaseModel):
70
70
  allow_mutation = True
71
71
  validate_assignment = False
72
72
  allow_population_by_field_name = True
73
- use_enum_values = True
73
+ use_enum_values = False
74
74
  schema_extra: Callable | dict = modify_pydantic_schema
75
75
 
76
76
  def to_serializable(self, *args, **kwargs) -> dict[str, Any]:
@@ -22,7 +22,7 @@ from openepd.compat.pydantic import pyd
22
22
  from openepd.model.base import BaseOpenEpdSchema
23
23
  from openepd.model.validation.numbers import RatioFloat
24
24
 
25
- DATA_URL_REGEX = r"^data:([-\w]+\/[-+\w.]+)?(;?\w+=[-\w]+)*(;base64)?,.*$"
25
+ DATA_URL_REGEX = r"^data:([-\w]+\/[-+\w.]+)?(;?\w+=[-\w]+)*(;base64)?,(.*)$"
26
26
  """
27
27
  Regular expression pattern for matching Data URLs.
28
28
 
@@ -179,6 +179,10 @@ class Plant(PlantRef, WithAttachmentsMixin, WithAltIdsMixin):
179
179
  msg = "Incorrect pluscode for plant"
180
180
  raise ValueError(msg)
181
181
 
182
+ if not openlocationcode.isFull(pluscode):
183
+ msg = "Passed Open Location Code is not a valid full code"
184
+ raise ValueError(msg)
185
+
182
186
  if not web_domain:
183
187
  msg = "Incorrect web_domain for plant"
184
188
  raise ValueError(msg)
@@ -33,6 +33,7 @@ __all__ = (
33
33
  "LowVoltBusesRangeV1",
34
34
  "LowVoltageElectricalDistributionRangeV1",
35
35
  "MedVoltBusesRangeV1",
36
+ "OtherElectricalEquipmentRangeV1",
36
37
  "OtherElectricalPowerStorageRangeV1",
37
38
  "OtherGenerationRangeV1",
38
39
  "OutdoorLightingRangeV1",
@@ -0,0 +1,18 @@
1
+ #
2
+ # Copyright 2025 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
+
17
+ # Deprecated import: This import is kept for backward compatibility and should be removed in the future.
18
+ from .electrical import OtherElectricalEquipmentRangeV1 # noqa: F401
@@ -13,6 +13,39 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
+ __all__ = (
17
+ "BatteriesV1",
18
+ "CableTraysV1",
19
+ "ElectricPowerV1",
20
+ "ElectricalBusesV1",
21
+ "ElectricalConduitV1",
22
+ "ElectricalGenerationEquipmentV1",
23
+ "ElectricalPowerStorageV1",
24
+ "ElectricalV1",
25
+ "ElectricityFromPowerGridV1",
26
+ "ElectricityFromSpecificGeneratorV1",
27
+ "FloorEquipmentBoxesV1",
28
+ "FueledElectricalGeneratorsV1",
29
+ "LightbulbsV1",
30
+ "LightingControlsV1",
31
+ "LightingFixturesV1",
32
+ "LightingV1",
33
+ "LowVoltBusesV1",
34
+ "LowVoltageElectricalDistributionV1",
35
+ "MedVoltBusesV1",
36
+ "OtherElectricalEquipmentV1",
37
+ "OtherElectricalPowerStorageV1",
38
+ "OtherGenerationV1",
39
+ "OutdoorLightingV1",
40
+ "PhotovoltaicsV1",
41
+ "PowerDistributionUnitsV1",
42
+ "PowerPurchaseAgreementsV1",
43
+ "RacewaysV1",
44
+ "SpecialtyLightingV1",
45
+ "TaskLightingV1",
46
+ "WindTurbinesV1",
47
+ )
48
+
16
49
  from openepd.compat.pydantic import pyd
17
50
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
51
  from openepd.model.specs.enums import CableTraysMaterial, EnergySource, RacewaysMaterial
@@ -18,8 +18,6 @@ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
18
  from openepd.model.validation.quantity import (
19
19
  PressureMPaStr,
20
20
  ThermalConductivityStr,
21
- validate_quantity_ge_factory,
22
- validate_quantity_unit_factory,
23
21
  )
24
22
 
25
23
 
@@ -41,14 +39,6 @@ class AutoclavedAeratedConcreteV1(BaseOpenEpdHierarchicalSpec):
41
39
  )
42
40
  white: bool | None = pyd.Field(default=None, description="", example=True)
43
41
 
44
- _aac_thermal_conductivity_is_quantity_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
45
- validate_quantity_unit_factory("W / (m * K)")
46
- )
47
-
48
- _aac_thermal_conductivity_min_validator = pyd.validator("thermal_conductivity", allow_reuse=True)(
49
- validate_quantity_ge_factory("0 W / (m * K)")
50
- )
51
-
52
42
 
53
43
  class BrickV1(BaseOpenEpdHierarchicalSpec):
54
44
  """Solid masonry units made from clay or shale."""
@@ -0,0 +1,18 @@
1
+ #
2
+ # Copyright 2025 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
+
17
+ # Deprecated import: This import is kept for backward compatibility and should be removed in the future.
18
+ from .electrical import OtherElectricalEquipmentV1 # noqa: F401
@@ -317,7 +317,7 @@ class AreaPerVolumeStr(QuantityStr):
317
317
  class ThermalConductivityStr(QuantityStr):
318
318
  """Thermal conductivity quantity type."""
319
319
 
320
- unit = "1 W / K / m"
320
+ unit = "W / K / m"
321
321
 
322
322
 
323
323
  class ThermalExpansionStr(QuantityStr):
File without changes
File without changes
File without changes