openepd 6.13.1__py3-none-any.whl → 6.14.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 +1 -1
- openepd/m49/__init__.py +2 -0
- openepd/m49/const.py +5 -2
- openepd/m49/{geo_converter.py → utils.py} +24 -2
- openepd/model/lcia.py +23 -0
- openepd/model/specs/range/furnishings.py +15 -15
- openepd/model/specs/singular/furnishings.py +10 -10
- {openepd-6.13.1.dist-info → openepd-6.14.0.dist-info}/METADATA +3 -1
- {openepd-6.13.1.dist-info → openepd-6.14.0.dist-info}/RECORD +11 -11
- {openepd-6.13.1.dist-info → openepd-6.14.0.dist-info}/WHEEL +1 -1
- {openepd-6.13.1.dist-info → openepd-6.14.0.dist-info}/LICENSE +0 -0
openepd/__version__.py
CHANGED
openepd/m49/__init__.py
CHANGED
openepd/m49/const.py
CHANGED
@@ -13,8 +13,8 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
-
|
17
16
|
from typing import NamedTuple
|
17
|
+
import warnings
|
18
18
|
|
19
19
|
M49_CODE_WORLD = "001"
|
20
20
|
M49_CODE_AFRICA = "002"
|
@@ -1169,4 +1169,7 @@ def is_m49_code(to_check: str) -> bool:
|
|
1169
1169
|
:param to_check: any string
|
1170
1170
|
:return: `True` if passed string is M49 code, `False` otherwise
|
1171
1171
|
"""
|
1172
|
-
|
1172
|
+
warnings.warn("Use m49.utils.is_m49_code instead.", DeprecationWarning)
|
1173
|
+
from . import utils
|
1174
|
+
|
1175
|
+
return utils.is_m49_code(to_check)
|
@@ -13,11 +13,21 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
|
+
__all__ = [
|
17
|
+
"iso_to_m49",
|
18
|
+
"m49_to_iso",
|
19
|
+
"region_and_country_names_to_m49",
|
20
|
+
"m49_to_region_and_country_names",
|
21
|
+
"openepd_to_m49",
|
22
|
+
"m49_to_openepd",
|
23
|
+
"is_m49_code",
|
24
|
+
]
|
16
25
|
from typing import Collection
|
17
26
|
|
18
27
|
from openepd.m49.const import (
|
19
28
|
COUNTRY_VERBOSE_NAME_TO_M49,
|
20
29
|
ISO3166_ALPHA2_TO_M49,
|
30
|
+
M49_AREAS,
|
21
31
|
M49_TO_COUNTRY_VERBOSE_NAME,
|
22
32
|
M49_TO_ISO3166_ALPHA2,
|
23
33
|
M49_TO_REGION_VERBOSE_NAME,
|
@@ -122,10 +132,10 @@ def openepd_to_m49(regions: Collection[str]) -> set[str]:
|
|
122
132
|
Convert OpenEPD geography definitions to pure M49 region codes.
|
123
133
|
|
124
134
|
:param regions: list of OpenEPD geography definitions including letter codes and aliases
|
125
|
-
like "EU27" or "NAFTA" (e.g., ["EU27", "NAFTA"], ["US", "CA, MX"])
|
135
|
+
like "EU27" or "NAFTA" (e.g., ["EU27", "NAFTA"], ["US", "CA, MX"], ["NAFTA", "051"])
|
126
136
|
:return: Set of M49 region codes (e.g., {"040", "056", "100", "191", "196", "203", "208", "233", "246", "250",
|
127
137
|
"276", "300", "348", "372", "380", "428", "440", "442", "470", "528", "616", "620", "642", "703", "705", "724",
|
128
|
-
"752", "840", "124", "484"}, {"840", "124", "484"})
|
138
|
+
"752", "840", "124", "484"}, {"840", "124", "484"}, {"840", "124", "484", "051"})
|
129
139
|
:raises ValueError: If a region or country name is not found in ISO3166 or OpenEPD special regions.
|
130
140
|
"""
|
131
141
|
|
@@ -140,6 +150,8 @@ def openepd_to_m49(regions: Collection[str]) -> set[str]:
|
|
140
150
|
m49_code = ISO3166_ALPHA2_TO_M49.get(region.upper())
|
141
151
|
if m49_code:
|
142
152
|
result.add(m49_code)
|
153
|
+
elif is_m49_code(region):
|
154
|
+
result.add(region)
|
143
155
|
else:
|
144
156
|
raise ValueError(f"Region '{region}' not found in ISO3166 or OpenEPD special regions.")
|
145
157
|
return result
|
@@ -176,3 +188,13 @@ def m49_to_openepd(regions: list[str]) -> set[str]:
|
|
176
188
|
raise ValueError(f"Region code '{code}' not found in ISO3166 or OpenEPD special regions.")
|
177
189
|
|
178
190
|
return result
|
191
|
+
|
192
|
+
|
193
|
+
def is_m49_code(to_check: str) -> bool:
|
194
|
+
"""
|
195
|
+
Check if passed string is M49 code.
|
196
|
+
|
197
|
+
:param to_check: any string
|
198
|
+
:return: `True` if passed string is M49 code, `False` otherwise
|
199
|
+
"""
|
200
|
+
return to_check in M49_AREAS or to_check in M49_TO_ISO3166_ALPHA2
|
openepd/model/lcia.py
CHANGED
@@ -359,6 +359,18 @@ class ScopeSetCTUe(ScopeSet):
|
|
359
359
|
allowed_units = "CTUe"
|
360
360
|
|
361
361
|
|
362
|
+
class ScopeSetKgSbe(ScopeSet):
|
363
|
+
"""ScopeSet measured in kgSbe."""
|
364
|
+
|
365
|
+
allowed_units = "kgSbe"
|
366
|
+
|
367
|
+
|
368
|
+
class ScopeSetMJ(ScopeSet):
|
369
|
+
"""ScopeSet measured in MJ."""
|
370
|
+
|
371
|
+
allowed_units = "MJ"
|
372
|
+
|
373
|
+
|
362
374
|
class ScopeSetDiseaseIncidence(ScopeSet):
|
363
375
|
"""ScopeSet measuring disease incidence measured in AnnualPerCapita (cases)."""
|
364
376
|
|
@@ -474,6 +486,17 @@ class ImpactSet(ScopesetByNameBase):
|
|
474
486
|
default=None,
|
475
487
|
description="Land use related impacts / Soil quality, in potential soil quality parameters.",
|
476
488
|
)
|
489
|
+
ADP_mineral: ScopeSetKgSbe | None = pyd.Field(
|
490
|
+
alias="ADP-mineral",
|
491
|
+
default=None,
|
492
|
+
description='Abiotic depletion potential for non-fossil resources. EN15804 calls this "ADP - minerals and metals".',
|
493
|
+
)
|
494
|
+
|
495
|
+
ADP_fossil: ScopeSetMJ | None = pyd.Field(
|
496
|
+
alias="ADP-fossil",
|
497
|
+
default=None,
|
498
|
+
description="Abiotic depletion potential for fossil resources",
|
499
|
+
)
|
477
500
|
|
478
501
|
|
479
502
|
class LCIAMethod(StrEnum):
|
@@ -19,11 +19,11 @@ __all__ = (
|
|
19
19
|
"CountertopsRangeV1",
|
20
20
|
"DemountablePartitionsRangeV1",
|
21
21
|
"OtherFurnishingsRangeV1",
|
22
|
-
"
|
23
|
-
"
|
24
|
-
"
|
25
|
-
"
|
26
|
-
"
|
22
|
+
"OpenStorageFurnitureRangeV1",
|
23
|
+
"ClosedStorageFurnitureRangeV1",
|
24
|
+
"RetractableStorageFurnitureRangeV1",
|
25
|
+
"MobileStorageFurnitureRangeV1",
|
26
|
+
"WallMountedStorageShelvingRangeV1",
|
27
27
|
"OtherStorageFurnitureRangeV1",
|
28
28
|
"StorageFurnitureRangeV1",
|
29
29
|
"TablesRangeV1",
|
@@ -97,7 +97,7 @@ class OtherFurnishingsRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
97
97
|
_EXT_VERSION = "1.0"
|
98
98
|
|
99
99
|
|
100
|
-
class
|
100
|
+
class OpenStorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
|
101
101
|
"""
|
102
102
|
Open Storage.
|
103
103
|
|
@@ -109,7 +109,7 @@ class OpenStorageRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
109
109
|
_EXT_VERSION = "1.0"
|
110
110
|
|
111
111
|
|
112
|
-
class
|
112
|
+
class ClosedStorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
|
113
113
|
"""
|
114
114
|
Closed Storage.
|
115
115
|
|
@@ -121,7 +121,7 @@ class ClosedStorageRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
121
121
|
_EXT_VERSION = "1.0"
|
122
122
|
|
123
123
|
|
124
|
-
class
|
124
|
+
class RetractableStorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
|
125
125
|
"""
|
126
126
|
Retractable Storage.
|
127
127
|
|
@@ -133,7 +133,7 @@ class RetractableStorageRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
133
133
|
_EXT_VERSION = "1.0"
|
134
134
|
|
135
135
|
|
136
|
-
class
|
136
|
+
class MobileStorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
|
137
137
|
"""
|
138
138
|
Mobile Storage.
|
139
139
|
|
@@ -145,7 +145,7 @@ class MobileStorageRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
145
145
|
_EXT_VERSION = "1.0"
|
146
146
|
|
147
147
|
|
148
|
-
class
|
148
|
+
class WallMountedStorageShelvingRangeV1(BaseOpenEpdHierarchicalSpec):
|
149
149
|
"""
|
150
150
|
Wall Mounted Shelving.
|
151
151
|
|
@@ -176,11 +176,11 @@ class StorageFurnitureRangeV1(BaseOpenEpdHierarchicalSpec):
|
|
176
176
|
|
177
177
|
_EXT_VERSION = "1.1"
|
178
178
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
179
|
+
OpenStorageFurniture: OpenStorageFurnitureRangeV1 | None = None
|
180
|
+
ClosedStorageFurniture: ClosedStorageFurnitureRangeV1 | None = None
|
181
|
+
RetractableStorageFurniture: RetractableStorageFurnitureRangeV1 | None = None
|
182
|
+
MobileStorageFurniture: MobileStorageFurnitureRangeV1 | None = None
|
183
|
+
WallMountedStorageShelving: WallMountedStorageShelvingRangeV1 | None = None
|
184
184
|
OtherStorageFurniture: OtherStorageFurnitureRangeV1 | None = None
|
185
185
|
|
186
186
|
|
@@ -57,7 +57,7 @@ class OtherFurnishingsV1(BaseOpenEpdHierarchicalSpec):
|
|
57
57
|
_EXT_VERSION = "1.0"
|
58
58
|
|
59
59
|
|
60
|
-
class
|
60
|
+
class OpenStorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
|
61
61
|
"""
|
62
62
|
Open Storage.
|
63
63
|
|
@@ -67,7 +67,7 @@ class OpenStorageV1(BaseOpenEpdHierarchicalSpec):
|
|
67
67
|
_EXT_VERSION = "1.0"
|
68
68
|
|
69
69
|
|
70
|
-
class
|
70
|
+
class ClosedStorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
|
71
71
|
"""
|
72
72
|
Closed Storage.
|
73
73
|
|
@@ -77,7 +77,7 @@ class ClosedStorageV1(BaseOpenEpdHierarchicalSpec):
|
|
77
77
|
_EXT_VERSION = "1.0"
|
78
78
|
|
79
79
|
|
80
|
-
class
|
80
|
+
class RetractableStorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
|
81
81
|
"""
|
82
82
|
Retractable Storage.
|
83
83
|
|
@@ -87,7 +87,7 @@ class RetractableStorageV1(BaseOpenEpdHierarchicalSpec):
|
|
87
87
|
_EXT_VERSION = "1.0"
|
88
88
|
|
89
89
|
|
90
|
-
class
|
90
|
+
class MobileStorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
|
91
91
|
"""
|
92
92
|
Mobile Storage.
|
93
93
|
|
@@ -97,7 +97,7 @@ class MobileStorageV1(BaseOpenEpdHierarchicalSpec):
|
|
97
97
|
_EXT_VERSION = "1.0"
|
98
98
|
|
99
99
|
|
100
|
-
class
|
100
|
+
class WallMountedStorageShelvingV1(BaseOpenEpdHierarchicalSpec):
|
101
101
|
"""
|
102
102
|
Wall Mounted Shelving.
|
103
103
|
|
@@ -119,11 +119,11 @@ class StorageFurnitureV1(BaseOpenEpdHierarchicalSpec):
|
|
119
119
|
_EXT_VERSION = "1.1"
|
120
120
|
|
121
121
|
# Nested specs:
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
122
|
+
OpenStorageFurniture: OpenStorageFurnitureV1 | None = None
|
123
|
+
ClosedStorageFurniture: ClosedStorageFurnitureV1 | None = None
|
124
|
+
RetractableStorageFurniture: RetractableStorageFurnitureV1 | None = None
|
125
|
+
MobileStorageFurniture: MobileStorageFurnitureV1 | None = None
|
126
|
+
WallMountedStorageShelving: WallMountedStorageShelvingV1 | None = None
|
127
127
|
OtherStorageFurniture: OtherStorageFurnitureV1 | None = None
|
128
128
|
|
129
129
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: openepd
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.14.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
|
@@ -15,6 +15,8 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
18
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
19
21
|
Provides-Extra: api-client
|
20
22
|
Requires-Dist: email-validator (>=1.3.1)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
|
2
|
-
openepd/__version__.py,sha256=
|
2
|
+
openepd/__version__.py,sha256=j453SSnXhKMHPbf1O03SN8RtQbB3r2ZWnWQ2okYB0mw,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=KHCmSKMOJTQct6vhdhAatAENoouStc_yVRza5AFNoIo,7953
|
@@ -32,9 +32,9 @@ openepd/bundle/writer.py,sha256=gHK1D-F-td2C18QFWerg666JUTLaGUkTUSQURJi9o74,8136
|
|
32
32
|
openepd/compat/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
33
33
|
openepd/compat/compat_functional_validators.py,sha256=aWg3a80fqT8zjN0S260N-Ad2WFKAaB8ByN7ArBW3NMA,834
|
34
34
|
openepd/compat/pydantic.py,sha256=dNwPXK1X5xq9sdkd0kcbKQAUIter1GAfcxXOl6hmITQ,1146
|
35
|
-
openepd/m49/__init__.py,sha256=
|
36
|
-
openepd/m49/const.py,sha256=
|
37
|
-
openepd/m49/
|
35
|
+
openepd/m49/__init__.py,sha256=vkXC6i8OeCl5K88JUIRN_NKfsAIpNIaN-fyPmmd-Lfk,689
|
36
|
+
openepd/m49/const.py,sha256=buspTHOOWhkBXWUIS0oqvQ0y1L7y70Y_PXilkiBIKD4,31819
|
37
|
+
openepd/m49/utils.py,sha256=Qm8HvxAZlQncsyUYDO0lG0feMFFnT4HQPNSMp78W4zU,7111
|
38
38
|
openepd/model/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
39
39
|
openepd/model/base.py,sha256=1GeaEDn-ppy94GaOaZI1y6Yew_0eBBho1COaxfzzLCw,9834
|
40
40
|
openepd/model/category.py,sha256=reeOVRDuZPYU77EMwG0K5VjnK2H9yOGxT0PJXXqrjEk,1639
|
@@ -45,7 +45,7 @@ openepd/model/factory.py,sha256=doexyqZXJVGd45T1JsbjuyGUjEykW-MerKUq4SQHhRY,2656
|
|
45
45
|
openepd/model/generic_estimate.py,sha256=zLGTyf4Uzmp2C0m-J1ePWItSz2RGdZ0OiGPWC5nhKHk,3992
|
46
46
|
openepd/model/geography.py,sha256=Jx7NIDdk_sIvwyh-7YxnIjAwIHW2HCQK7UtFGM2xKtw,42095
|
47
47
|
openepd/model/industry_epd.py,sha256=QZr7OhgGkzqZ8H5p6dCIVk9zSHEYtK3y9Nk-DvkFMyk,4011
|
48
|
-
openepd/model/lcia.py,sha256=
|
48
|
+
openepd/model/lcia.py,sha256=sUuVOJivfyx1m2l83YdPyTgkJBOn7mJGVFxvbCo_bCk,26107
|
49
49
|
openepd/model/org.py,sha256=MtaUrD8IdSbcMJEwL2lnXOIXNfE8wpzrepFSe2qh2uc,5342
|
50
50
|
openepd/model/pcr.py,sha256=b8WmeII8MZ3rJFWxugqv_Z0ETan8NMWj9L6mSrhneJk,5494
|
51
51
|
openepd/model/specs/README.md,sha256=UGhSiFJ9hOxT1mZl-5ZrhkOrPKf1W_gcu5CI9hzV7LU,2430
|
@@ -70,7 +70,7 @@ openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,
|
|
70
70
|
openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
|
71
71
|
openepd/model/specs/range/finishes.py,sha256=oCaPVYJja1KYxwEzTHCl7HtxQ2mokzeyahjyP33zHSg,21291
|
72
72
|
openepd/model/specs/range/fire_and_smoke_protection.py,sha256=u5veICQznf-woYlh49S_IbvPA23CLWEy7Ngvic2FIpw,3337
|
73
|
-
openepd/model/specs/range/furnishings.py,sha256=
|
73
|
+
openepd/model/specs/range/furnishings.py,sha256=FOGfaaA2mGtlWuBuzJLxkHU3JSKzhtCDZVgpfEtR85Y,6703
|
74
74
|
openepd/model/specs/range/grouting.py,sha256=BQPxH6BvlXpdhLEZBui9zTuY93K_9syjoa6rdnF8GGY,1095
|
75
75
|
openepd/model/specs/range/manufacturing_inputs.py,sha256=xzgkNz7yG8cp715hxS0LtJX9nfJ5RQR8GxlD2bAduwE,5574
|
76
76
|
openepd/model/specs/range/masonry.py,sha256=IyjQMb8Mx3tpJlHIIam0OrMkFsJXKvc0WXRLRBupozY,2867
|
@@ -109,7 +109,7 @@ openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.
|
|
109
109
|
openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
|
110
110
|
openepd/model/specs/singular/finishes.py,sha256=bAlNZiUP-HwePaJyC1D4j2fpv0xnMp3V5mhtAs9iaxQ,22571
|
111
111
|
openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORHvSFN1wftRVAps_UJ1Ep3Dk9arT3s,3058
|
112
|
-
openepd/model/specs/singular/furnishings.py,sha256=
|
112
|
+
openepd/model/specs/singular/furnishings.py,sha256=4bReWm8FSWHRyq6vmjPm7ZixFIau7J8JF1gtZq6_jVA,5732
|
113
113
|
openepd/model/specs/singular/grouting.py,sha256=pg2tX3W7a2TQ3z_eyFYGlBJY3WEwn6JlZyqM3PQIJcU,934
|
114
114
|
openepd/model/specs/singular/manufacturing_inputs.py,sha256=9WSDOVN0mUqvFXqWf82lkpHi-XRQSMcEpe9bweegwhU,5093
|
115
115
|
openepd/model/specs/singular/masonry.py,sha256=f6nph-gscAmVeJ60bG-ebto5kz0fgh0LY27n0VutGFA,3165
|
@@ -139,7 +139,7 @@ openepd/model/validation/quantity.py,sha256=vfSe-3DGQf84bCp_sMIU0ZPAA1wIilodpTjL
|
|
139
139
|
openepd/model/versioning.py,sha256=cm3LaAUODnbbu3W3pC6baJzxKusTQ1kZH-PwwScCj3c,4473
|
140
140
|
openepd/patch_pydantic.py,sha256=LVqDMKn723VYYf_V-RgTLxIb1xiUtYOfPYCQP6-7RoM,4122
|
141
141
|
openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
142
|
-
openepd-6.
|
143
|
-
openepd-6.
|
144
|
-
openepd-6.
|
145
|
-
openepd-6.
|
142
|
+
openepd-6.14.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
143
|
+
openepd-6.14.0.dist-info/METADATA,sha256=h-mIxr7O0iGai5O1phDjpdwakuWYzUtnrTzEW9BzX3U,9141
|
144
|
+
openepd-6.14.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
145
|
+
openepd-6.14.0.dist-info/RECORD,,
|
File without changes
|