openepd 6.31.0__py3-none-any.whl → 6.31.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 CHANGED
@@ -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"
openepd/model/base.py CHANGED
@@ -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]:
openepd/model/common.py CHANGED
@@ -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
 
openepd/model/org.py CHANGED
@@ -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):
@@ -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,5 +1,5 @@
1
1
  openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
2
- openepd/__version__.py,sha256=RP90yLyA0fimq3bkON2BWP9vB79LaYyadZfDCC33-SA,639
2
+ openepd/__version__.py,sha256=UFkCgstvKywEim-Fe7_uHEzuZwO946IbHObLbqlHfYQ,639
3
3
  openepd/api/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
4
4
  openepd/api/average_dataset/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
5
5
  openepd/api/average_dataset/generic_estimate_sync_api.py,sha256=_eZt_jGVL1a3p9cr-EF39Ve9Vl5sB8zwzTc_slnRL50,7975
@@ -44,9 +44,9 @@ openepd/m49/__init__.py,sha256=AApOMp9PJPMXZbPB4piedqKtgHE01mlj_MyF3kf519U,718
44
44
  openepd/m49/const.py,sha256=bkYu6J7dQNVb2-nNkjy97uMpt64vICX5o-PHr0lk_90,31833
45
45
  openepd/m49/utils.py,sha256=vQl0wMXtYS2b7NeLIWilDNUopq3MATmLnhEFcMYTeZA,7256
46
46
  openepd/model/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
47
- openepd/model/base.py,sha256=6rP6r-7NwKC6JLFB24v2w4Z-_f_w6ZSNLte5zyj5o70,9928
47
+ openepd/model/base.py,sha256=WAnVnPdsvkRumsDV6XEnYYhFjexIO1ttmzB9znkA8r8,9929
48
48
  openepd/model/category.py,sha256=reeOVRDuZPYU77EMwG0K5VjnK2H9yOGxT0PJXXqrjEk,1639
49
- openepd/model/common.py,sha256=WM6ankkeZazVzKwbn4s5FHwENMTIKWsgdRJkX7DYmpg,13875
49
+ openepd/model/common.py,sha256=YIEvA_SfUIBC2LshxqPU8jFDp0mvaDT6jNgcJXgQnQk,13877
50
50
  openepd/model/declaration.py,sha256=F7LEMeZSJndtvO0AqnvTS43MeRxI3MO1IWLyF1SlwPU,14744
51
51
  openepd/model/epd.py,sha256=SGAgEEAuvRGsIlgIUI60UqV1alhb5kouOvp8fAC0VPg,12320
52
52
  openepd/model/factory.py,sha256=UWSGpfCr3GiMTP4rzBkwqxzbXB6GKZ_5Okb1Dqa_4aA,2701
@@ -54,7 +54,7 @@ openepd/model/generic_estimate.py,sha256=zLGTyf4Uzmp2C0m-J1ePWItSz2RGdZ0OiGPWC5n
54
54
  openepd/model/geography.py,sha256=Jx7NIDdk_sIvwyh-7YxnIjAwIHW2HCQK7UtFGM2xKtw,42095
55
55
  openepd/model/industry_epd.py,sha256=QZr7OhgGkzqZ8H5p6dCIVk9zSHEYtK3y9Nk-DvkFMyk,4011
56
56
  openepd/model/lcia.py,sha256=PdaSZz02PMBJl_t2B_dmkcbzIFjA7iACrWj1fllHfw0,26230
57
- openepd/model/org.py,sha256=zxBt-c2f1nhJUqygUzhsq6AEEwfNiYGquhgYvcUfvSo,7771
57
+ openepd/model/org.py,sha256=qP4VED4bcgwgyMARHF7S1LX7lkqCXMyxeIqfjgOI8gs,7927
58
58
  openepd/model/pcr.py,sha256=7nf6ATofdrlPt81vdU6p0E8n_ftFEuCEIKxtYlFwclw,5476
59
59
  openepd/model/specs/README.md,sha256=UGhSiFJ9hOxT1mZl-5ZrhkOrPKf1W_gcu5CI9hzV7LU,2430
60
60
  openepd/model/specs/__init__.py,sha256=YbyiLnQRQIX9mEdfQRVP3Rp1q3iNwujQMBbDK2-CYdM,3836
@@ -73,7 +73,7 @@ openepd/model/specs/range/cladding.py,sha256=r7M2lc77NR2GXBkgkqRzskQ6TdZeMd7pEEm
73
73
  openepd/model/specs/range/cmu.py,sha256=Sv4yw6121LSgYhW4J82xKsIi1KucaeDVF7xmpZtoCt8,1833
74
74
  openepd/model/specs/range/concrete.py,sha256=CwRJ_0lJ6zRFwaiom3jrp50BSTiB9mIGL3ujcygZwfs,7528
75
75
  openepd/model/specs/range/conveying_equipment.py,sha256=_rqJ9Y3kkP8E6-vkZb6Pih3JnR1nUESJoOLf-LT--sc,3176
76
- openepd/model/specs/range/electrical.py,sha256=s8X-byhQCD68c_lHqAZ4hWPBSY6Or67p2rM-OIVOA1M,12100
76
+ openepd/model/specs/range/electrical.py,sha256=00fqX7KuM76ZZpL6yyhAHiDNkLgUFvyHfOCsE3Q62io,12139
77
77
  openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,sha256=xDdyLj6oJRmdybq7W91MtgE80FDpaG6ii5hE921aRGQ,2525
78
78
  openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
79
79
  openepd/model/specs/range/exterior_improvements.py,sha256=dcgX9Tv4U_Zki9nGcy6ykvyesDYAtS_CuD-7nf17kMQ,1736
@@ -91,6 +91,7 @@ openepd/model/specs/range/mixins/access_flooring_mixin.py,sha256=JEcvlmKv3R5dVIM
91
91
  openepd/model/specs/range/network_infrastructure.py,sha256=aqXEIGqFy0gNCM_ftd3J6aT3FZf9JlT0SBOImhdkTg0,8498
92
92
  openepd/model/specs/range/non_construction.py,sha256=PDJn1QKQR9wHYr-KtWIxji-41IKFSeMZUS1fSjy4QGU,1664
93
93
  openepd/model/specs/range/openings.py,sha256=4MeNkbMAhtcGbiG5lxHCSRSdJ4F42uBMSXp5XJFODj4,15590
94
+ openepd/model/specs/range/other_electrical_equipment.py,sha256=NM7mlm38W9PTFMPPvvX5IaPMR2CCbpVO6Yi3i9iBb78,796
94
95
  openepd/model/specs/range/other_materials.py,sha256=EAKHR9VJAkoqHL0FL2x-7PBvBxDD07drqoVLhBlaYzw,5823
95
96
  openepd/model/specs/range/plumbing.py,sha256=jQKrKYGDR33uh3ffo6uVyt3xuSmexkkelfNh_-omNCg,5342
96
97
  openepd/model/specs/range/precast_concrete.py,sha256=nn1U1XwKqqzY1cOPP3KqHZMJq4Ut9RAox4SMVYBa5B8,3763
@@ -115,7 +116,7 @@ openepd/model/specs/singular/conveying_equipment.py,sha256=AK_KdGyBDh0_Dl3YCkIyf
115
116
  openepd/model/specs/singular/deprecated/__init__.py,sha256=f8I04fHO5QWpNtorrCgbUXz4r0B0zgsk8zDUfXu_i80,2635
116
117
  openepd/model/specs/singular/deprecated/concrete.py,sha256=swSOfViIvy7z923C6uHBcIZrv_JRMv7wSJHpg9PGAJg,5265
117
118
  openepd/model/specs/singular/deprecated/steel.py,sha256=0A3Y50XpLsPt105t_H8BzByaDUbLoX1o_QIr566JfB4,3499
118
- openepd/model/specs/singular/electrical.py,sha256=UOXVL6ri5b05O1-5YB1us-8QeBlHrTeRr21qjFrH6TM,11313
119
+ openepd/model/specs/singular/electrical.py,sha256=mGWddo7MO_S632Os4cpZnJG7bxxCghMB9n1x4g7Lnkk,12148
119
120
  openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py,sha256=oZYyHgnXn9RH3YzltUEDiiQKrin2mvMlTgC3OhxV7DY,1978
120
121
  openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
121
122
  openepd/model/specs/singular/exterior_improvements.py,sha256=tf9lHxb5Mj9Sf3WGjR1wq-mKcyqlvvVKpZG2W6cLcxo,1711
@@ -124,7 +125,7 @@ openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORH
124
125
  openepd/model/specs/singular/furnishings.py,sha256=4bReWm8FSWHRyq6vmjPm7ZixFIau7J8JF1gtZq6_jVA,5732
125
126
  openepd/model/specs/singular/grouting.py,sha256=pg2tX3W7a2TQ3z_eyFYGlBJY3WEwn6JlZyqM3PQIJcU,934
126
127
  openepd/model/specs/singular/manufacturing_inputs.py,sha256=iIkkBMl13GmuphgvDnh-f4SmilviNrUSDopUfxtJAdc,5699
127
- openepd/model/specs/singular/masonry.py,sha256=f6nph-gscAmVeJ60bG-ebto5kz0fgh0LY27n0VutGFA,3165
128
+ openepd/model/specs/singular/masonry.py,sha256=5UOu6Upiz7wHbbTqASIminlwan2I1X2IhgQRG1hcVlU,2759
128
129
  openepd/model/specs/singular/material_handling.py,sha256=iEeUx1hNKla669y0zl-QAJn6xA7ceq75aRG8qT0p56Q,1274
129
130
  openepd/model/specs/singular/mechanical.py,sha256=VvW9PQ3VI8GCaqu5MKUmxjmcaHkKDAHAIhLyK-DVlUw,9862
130
131
  openepd/model/specs/singular/mechanical_insulation.py,sha256=h-Ir-jiLF-cpiHap4wx5G4fpvsRRKzqcGVXb5U5aqvQ,1607
@@ -134,6 +135,7 @@ openepd/model/specs/singular/mixins/conduit_mixin.py,sha256=tj6p-MF84rg4LGxXPC65
134
135
  openepd/model/specs/singular/network_infrastructure.py,sha256=eB3p1zu1u15Ly5iuyyJ4xl3Z1GuBCRVU18Wpz8FWZrg,8521
135
136
  openepd/model/specs/singular/non_construction.py,sha256=VW_dP5I8AUkwa923d2r9X8S78k6OUA5rU0UAypUX8t8,1634
136
137
  openepd/model/specs/singular/openings.py,sha256=IoLBp003qvWZOeTeIPtVPcq4AXdY3ZSSzRK10mnnJac,19183
138
+ openepd/model/specs/singular/other_electrical_equipment.py,sha256=55BCXX5GPxYPea_8Ro7hs_gec4ZMZJA72KEuejQqg3Y,791
137
139
  openepd/model/specs/singular/other_materials.py,sha256=iD_AeC8vHXAQuvw62TrVOyoRS6uy5LFb_2PSODDn2hk,4759
138
140
  openepd/model/specs/singular/plumbing.py,sha256=fHmKyy1aQxu8NZ3RTwxuA0CCERMgwVUdMA74kMDVc8o,4568
139
141
  openepd/model/specs/singular/precast_concrete.py,sha256=W2tKf0vOnAdfeGc1n7Pk8yx9jy44afdFB0cbwHjw1HI,7327
@@ -148,7 +150,7 @@ openepd/model/validation/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA
148
150
  openepd/model/validation/common.py,sha256=nzZoboF8Hab8WpQA4HGkqe7hds-SLJylh_QhasrEtZs,2518
149
151
  openepd/model/validation/enum.py,sha256=0nRnjwmObw8ERQYWRWbovZjm90CMHi1Sc-UeNxCFnsc,1846
150
152
  openepd/model/validation/numbers.py,sha256=r15pLe8oWY1tshazQvis_suVXpC6PUcPzKTvj3QTL9Q,851
151
- openepd/model/validation/quantity.py,sha256=mP4gIkeOGZuHRhprsf_BX11Cic75NssYxOTkQ1Cyu9c,20230
153
+ openepd/model/validation/quantity.py,sha256=mUvWoSbxEQ04ZYGQHwC6uYM9ETEBJxcwsSq8ngDvgx8,20228
152
154
  openepd/model/versioning.py,sha256=wBZdOVL3ND9FMIRU9PS3vx9M_7MBiO70xYPQvPez6po,4522
153
155
  openepd/patch_pydantic.py,sha256=bO7U5HqthFol0vfycb0a42UAGL3KOQ8-9MW4yCWOFP0,4150
154
156
  openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -156,7 +158,7 @@ openepd/utils/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
156
158
  openepd/utils/functional.py,sha256=sm7od2_UE-cNToezBlwFQ1TCUJub1tz6VykA1X8XH-I,1274
157
159
  openepd/utils/mapping/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
158
160
  openepd/utils/mapping/common.py,sha256=WphCzwQQlzX11tUk88Ubyq3QPBLvH0tBPSIuH0kmiug,7339
159
- openepd-6.31.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
160
- openepd-6.31.0.dist-info/METADATA,sha256=sPFX7iPzgiEauVaalAsCm0JvfOq9naQKVhi_Xt8npuM,9827
161
- openepd-6.31.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
162
- openepd-6.31.0.dist-info/RECORD,,
161
+ openepd-6.31.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
162
+ openepd-6.31.2.dist-info/METADATA,sha256=VYAkuvgVPMCgqN6CP6nATMUCxPxnuf7zoQs7FaQ-bnw,9827
163
+ openepd-6.31.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
164
+ openepd-6.31.2.dist-info/RECORD,,