openepd 6.16.0__py3-none-any.whl → 6.17.0__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.16.0"
16
+ VERSION = "6.17.0"
@@ -13,9 +13,9 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
- __all__ = ("SpecsRange",)
17
-
18
- # NB! This is a generated code. Do not edit it manually. Please see src/openepd/model/specs/README.md
16
+ __all__ = [
17
+ "SpecsRange",
18
+ ]
19
19
 
20
20
 
21
21
  from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
@@ -33,6 +33,7 @@ from .conveying_equipment import ConveyingEquipmentRangeV1
33
33
  from .electrical import ElectricalRangeV1
34
34
  from .electrical_transmission_and_distribution_equipment import ElectricalTransmissionAndDistributionEquipmentRangeV1
35
35
  from .electricity import ElectricityRangeV1
36
+ from .exterior_improvements import ExteriorImprovementsV1
36
37
  from .finishes import FinishesRangeV1
37
38
  from .fire_and_smoke_protection import FireAndSmokeProtectionRangeV1
38
39
  from .furnishings import FurnishingsRangeV1
@@ -99,3 +100,4 @@ class SpecsRange(BaseOpenEpdHierarchicalSpec):
99
100
  MechanicalInsulation: MechanicalInsulationRangeV1 | None = None
100
101
  OtherElectricalEquipment: OtherElectricalEquipmentRangeV1 | None = None
101
102
  WoodJoists: WoodJoistsRangeV1 | None = None
103
+ ExteriorImprovements: ExteriorImprovementsV1 | None = None
@@ -0,0 +1,46 @@
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
+ from openepd.compat.pydantic import pyd
17
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
+ from openepd.model.validation.quantity import AmountRangePressureMpa
19
+
20
+
21
+ class ConcretePaversV1(BaseOpenEpdHierarchicalSpec):
22
+ """
23
+ Segmental units of concrete of standardized sizes and shapes for use in paving applications.
24
+
25
+ Includes pavers and paving slabs.
26
+ """
27
+
28
+ _EXT_VERSION = "1.0"
29
+
30
+ compressive_strength: AmountRangePressureMpa | None = pyd.Field(
31
+ default=None,
32
+ description=(
33
+ "Unit strength in MPa, ksi, or psi. "
34
+ "This is the net compressive strength, also known as unit strength, as opposed to f′ₘ (f prime m) which is "
35
+ "the strength of the completed wall module."
36
+ ),
37
+ )
38
+ white_cement: bool | None = pyd.Field(default=None, description="CMU using some portion of white cement")
39
+
40
+
41
+ class ExteriorImprovementsV1(BaseOpenEpdHierarchicalSpec):
42
+ """Products that alter the exterior appearance of a lot or its structures."""
43
+
44
+ _EXT_VERSION = "1.0"
45
+
46
+ ConcretePavers: ConcretePaversV1 | None = None
@@ -13,6 +13,11 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  #
16
+ __all__ = [
17
+ "Specs",
18
+ ]
19
+
20
+
16
21
  from collections.abc import Sequence
17
22
  import types
18
23
  from typing import Any, ClassVar, TypeVar
@@ -39,6 +44,7 @@ from openepd.model.specs.singular.electrical_transmission_and_distribution_equip
39
44
  ElectricalTransmissionAndDistributionEquipmentV1,
40
45
  )
41
46
  from openepd.model.specs.singular.electricity import ElectricityV1
47
+ from openepd.model.specs.singular.exterior_improvements import ExteriorImprovementsV1
42
48
  from openepd.model.specs.singular.finishes import FinishesV1
43
49
  from openepd.model.specs.singular.fire_and_smoke_protection import FireAndSmokeProtectionV1
44
50
  from openepd.model.specs.singular.furnishings import FurnishingsV1
@@ -61,8 +67,6 @@ from openepd.model.specs.singular.utility_piping import UtilityPipingV1
61
67
  from openepd.model.specs.singular.wood import WoodV1
62
68
  from openepd.model.specs.singular.wood_joists import WoodJoistsV1
63
69
 
64
- __all__ = ("Specs",)
65
-
66
70
  TValue = TypeVar("TValue")
67
71
 
68
72
 
@@ -108,6 +112,7 @@ class Specs(BaseOpenEpdHierarchicalSpec):
108
112
  MechanicalInsulation: MechanicalInsulationV1 | None = None
109
113
  OtherElectricalEquipment: OtherElectricalEquipmentV1 | None = None
110
114
  WoodJoists: WoodJoistsV1 | None = None
115
+ ExteriorImprovements: ExteriorImprovementsV1 | None = None
111
116
 
112
117
  # historical backward-compatible specs
113
118
  concrete: ConcreteOldSpec | None = None
@@ -0,0 +1,46 @@
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
+ from openepd.compat.pydantic import pyd
17
+ from openepd.model.specs.base import BaseOpenEpdHierarchicalSpec
18
+ from openepd.model.validation.quantity import AmountPressureMpa
19
+
20
+
21
+ class ConcretePaversV1(BaseOpenEpdHierarchicalSpec):
22
+ """
23
+ Segmental units of concrete of standardized sizes and shapes for use in paving applications.
24
+
25
+ Includes pavers and paving slabs.
26
+ """
27
+
28
+ _EXT_VERSION = "1.0"
29
+
30
+ compressive_strength: AmountPressureMpa | None = pyd.Field(
31
+ default=None,
32
+ description=(
33
+ "Unit strength in MPa, ksi, or psi. "
34
+ "This is the net compressive strength, also known as unit strength, as opposed to f′ₘ (f prime m) which is "
35
+ "the strength of the completed wall module."
36
+ ),
37
+ )
38
+ white_cement: bool | None = pyd.Field(default=None, description="CMU using some portion of white cement")
39
+
40
+
41
+ class ExteriorImprovementsV1(BaseOpenEpdHierarchicalSpec):
42
+ """Products that alter the exterior appearance of a lot or its structures."""
43
+
44
+ _EXT_VERSION = "1.0"
45
+
46
+ ConcretePavers: ConcretePaversV1 | None = None
@@ -464,7 +464,7 @@ class WithPressureMpaMixin(WithDimensionalityMixin):
464
464
 
465
465
 
466
466
  class AmountPressureMpa(Amount, WithPressureMpaMixin):
467
- """Length (mm)."""
467
+ """Pressure (MPa)."""
468
468
 
469
469
  pass
470
470
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openepd
3
- Version: 6.16.0
3
+ Version: 6.17.0
4
4
  Summary: Python library to work with OpenEPD format
5
5
  License: Apache-2.0
6
6
  Author: C-Change Labs
@@ -59,7 +59,7 @@ including uniqueness of organizations/plants, precise PCR references, and dated
59
59
  The openEPD format is **extensible**. Standard extensions exist for concrete products, and for
60
60
  documenting supply-chain specific data.
61
61
 
62
- [Read More about OpenEPD format here](https://www.buildingtransparency.org/programs/openepd/).
62
+ [Read More about OpenEPD format here](https://www.open-epd-forum.org).
63
63
 
64
64
  ## Usage
65
65
 
@@ -1,5 +1,5 @@
1
1
  openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
2
- openepd/__version__.py,sha256=XeIxyc82yNcm1KC2o3naA6ab11ZMUfH2TzGzWFPmjWQ,639
2
+ openepd/__version__.py,sha256=pw3U9DES_3Of-AMo_2ZvETeB0EokgmJXb6lSw7mmaNQ,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
@@ -54,7 +54,7 @@ openepd/model/specs/asphalt.py,sha256=eHhcITbBrNYR5N6x4Q2BxpsR64BR9OkjJ4bvPRYOqM
54
54
  openepd/model/specs/base.py,sha256=10IDyRFKQgFnyIPSqpeayP8Og1BDgs1EepXX5dyCMM4,2674
55
55
  openepd/model/specs/concrete.py,sha256=D9jbhZDtTXNBoAgljQBPxsmGsMvLSIAP5H53ZYiXcGI,5336
56
56
  openepd/model/specs/enums.py,sha256=tX26ZSV1yWPSJMjmo_JRQI2_wJhXJ8XD4nJjRB26rpw,63049
57
- openepd/model/specs/range/__init__.py,sha256=ZXgsyzn_c6H2SPCo5hTVZOjRqlCf0HvVVMDQ4RGaPSU,4502
57
+ openepd/model/specs/range/__init__.py,sha256=9gFsBsdqxcGHgi1_BF9vQaRnjY9WyN_6uYsSKnhojBs,4526
58
58
  openepd/model/specs/range/accessories.py,sha256=hZYz8mvAqrfLFiOIZ9qQZ59zmEiu0xE61Ko9cQ7NSKU,2498
59
59
  openepd/model/specs/range/aggregates.py,sha256=udVbsYc1Lyrd6a4YZBGNDQ3sBi-L3WLub_e1ecq7U-Q,2549
60
60
  openepd/model/specs/range/aluminium.py,sha256=Z3laZKXoPtfmOLLr4c4uf7Z-8TNmfz51X-_yd7GQIj8,2745
@@ -68,6 +68,7 @@ openepd/model/specs/range/conveying_equipment.py,sha256=_rqJ9Y3kkP8E6-vkZb6Pih3J
68
68
  openepd/model/specs/range/electrical.py,sha256=EI8pv9SN4lJbFNz1wlyMNAjkA0dsi84pc2J9YvtiwzY,11860
69
69
  openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,sha256=xDdyLj6oJRmdybq7W91MtgE80FDpaG6ii5hE921aRGQ,2525
70
70
  openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
71
+ openepd/model/specs/range/exterior_improvements.py,sha256=N-fAjuVVt8ZGBcBhjBU9p82mpiKlpOah_EwNmHtDoBE,1721
71
72
  openepd/model/specs/range/finishes.py,sha256=ZvP_AShojfM_aTgFdBfjaxGfMHGZQ1PBdpfJshRYVX4,21188
72
73
  openepd/model/specs/range/fire_and_smoke_protection.py,sha256=GUap2Xrn-rFF8CMDyRcOpmQpO8JgZ7PSUXGr_SKUzws,3337
73
74
  openepd/model/specs/range/furnishings.py,sha256=_HdPg1_LepLgdo5tV59oRer1PRYniIM0kLEKbnlyoLM,6703
@@ -89,7 +90,7 @@ openepd/model/specs/range/thermal_moisture_protection.py,sha256=aUpStISG2snc8aZ7
89
90
  openepd/model/specs/range/utility_piping.py,sha256=mQTrKbMTES_0Yta9DBnKehsmA2BAN_zYF_uPZCTKLPo,2665
90
91
  openepd/model/specs/range/wood.py,sha256=ZMStFsFOw5d6tCL2P7kksBnlYhwfvWJBZqoAdqSIUDg,6917
91
92
  openepd/model/specs/range/wood_joists.py,sha256=NCBHL0gdKwdKlGCP6up_Royl9BtWUUeuFfS1r2vIZ30,1785
92
- openepd/model/specs/singular/__init__.py,sha256=AUVpQi2F8oq9xoMdz5zI0FFXHQYjknPvg_1ydxwVp3A,11278
93
+ openepd/model/specs/singular/__init__.py,sha256=JuoXYIhyexFBY6gwCAa823CDT3XISSjjMBjQue7HTvM,11434
93
94
  openepd/model/specs/singular/accessories.py,sha256=xcuSJrG84oTm_w76_wlv_sItfK36gSyDmUD2TnpZnVE,2013
94
95
  openepd/model/specs/singular/aggregates.py,sha256=oSfArxvLUj63w_U0tZViRyiOpMRRjE72ncy2BimKxco,2934
95
96
  openepd/model/specs/singular/aluminium.py,sha256=7Z3WmuW22o92cPHfR6X_OBSoer0V5llwiNdQmWgKTx8,2408
@@ -107,6 +108,7 @@ openepd/model/specs/singular/deprecated/steel.py,sha256=0A3Y50XpLsPt105t_H8BzBya
107
108
  openepd/model/specs/singular/electrical.py,sha256=BiaPpZBGBzUt5wVacd1tOIZ9dRn9ZAKFg582UfNnmyI,11113
108
109
  openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py,sha256=oZYyHgnXn9RH3YzltUEDiiQKrin2mvMlTgC3OhxV7DY,1978
109
110
  openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
111
+ openepd/model/specs/singular/exterior_improvements.py,sha256=tf9lHxb5Mj9Sf3WGjR1wq-mKcyqlvvVKpZG2W6cLcxo,1711
110
112
  openepd/model/specs/singular/finishes.py,sha256=Pg6eb3-NFB45hhGltNjW_7SGeujcE882CZX7P8X8FMk,22571
111
113
  openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORHvSFN1wftRVAps_UJ1Ep3Dk9arT3s,3058
112
114
  openepd/model/specs/singular/furnishings.py,sha256=4bReWm8FSWHRyq6vmjPm7ZixFIau7J8JF1gtZq6_jVA,5732
@@ -135,11 +137,11 @@ openepd/model/validation/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA
135
137
  openepd/model/validation/common.py,sha256=nzZoboF8Hab8WpQA4HGkqe7hds-SLJylh_QhasrEtZs,2518
136
138
  openepd/model/validation/enum.py,sha256=0nRnjwmObw8ERQYWRWbovZjm90CMHi1Sc-UeNxCFnsc,1846
137
139
  openepd/model/validation/numbers.py,sha256=r15pLe8oWY1tshazQvis_suVXpC6PUcPzKTvj3QTL9Q,851
138
- openepd/model/validation/quantity.py,sha256=ve0sPN9hG4Zca-fb4xJT9RqFBJ6rpPHSquBzLm7ldyQ,20227
140
+ openepd/model/validation/quantity.py,sha256=mP4gIkeOGZuHRhprsf_BX11Cic75NssYxOTkQ1Cyu9c,20230
139
141
  openepd/model/versioning.py,sha256=wBZdOVL3ND9FMIRU9PS3vx9M_7MBiO70xYPQvPez6po,4522
140
142
  openepd/patch_pydantic.py,sha256=bO7U5HqthFol0vfycb0a42UAGL3KOQ8-9MW4yCWOFP0,4150
141
143
  openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- openepd-6.16.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
143
- openepd-6.16.0.dist-info/METADATA,sha256=NYgXqugKCkHYEYGG99E8GMUVJ-zua7IYTjHgNX44Mfc,9091
144
- openepd-6.16.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
145
- openepd-6.16.0.dist-info/RECORD,,
144
+ openepd-6.17.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
145
+ openepd-6.17.0.dist-info/METADATA,sha256=-BVTS9w6zrEhvgm_yiewWbqEctGCErxZBqz_hQGVbHA,9067
146
+ openepd-6.17.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
147
+ openepd-6.17.0.dist-info/RECORD,,