openepd 6.13.2__py3-none-any.whl → 7.0.1__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/__init__.py +0 -6
- openepd/__version__.py +1 -1
- openepd/api/average_dataset/generic_estimate_sync_api.py +11 -10
- openepd/api/average_dataset/industry_epd_sync_api.py +9 -8
- openepd/api/base_sync_client.py +53 -9
- openepd/api/category/sync_api.py +1 -1
- openepd/api/dto/base.py +4 -4
- openepd/api/dto/common.py +24 -16
- openepd/api/dto/meta.py +15 -11
- openepd/api/dto/mf.py +9 -8
- openepd/api/epd/dto.py +43 -33
- openepd/api/epd/sync_api.py +9 -9
- openepd/api/pcr/sync_api.py +2 -2
- openepd/bundle/model.py +11 -10
- openepd/bundle/reader.py +12 -5
- openepd/bundle/writer.py +17 -6
- openepd/model/base.py +61 -44
- openepd/model/category.py +13 -10
- openepd/model/common.py +107 -59
- openepd/model/declaration.py +93 -64
- openepd/model/epd.py +51 -43
- openepd/model/generic_estimate.py +28 -13
- openepd/model/industry_epd.py +15 -9
- openepd/model/lcia.py +161 -136
- openepd/model/org.py +70 -37
- openepd/model/pcr.py +38 -32
- openepd/model/specs/asphalt.py +31 -22
- openepd/model/specs/base.py +14 -11
- openepd/model/specs/concrete.py +60 -39
- openepd/model/specs/range/aggregates.py +9 -9
- openepd/model/specs/range/aluminium.py +7 -7
- openepd/model/specs/range/asphalt.py +22 -19
- openepd/model/specs/range/cladding.py +16 -16
- openepd/model/specs/range/cmu.py +10 -9
- openepd/model/specs/range/concrete.py +36 -27
- openepd/model/specs/range/conveying_equipment.py +16 -15
- openepd/model/specs/range/electrical.py +24 -22
- openepd/model/specs/range/finishes.py +109 -104
- openepd/model/specs/range/fire_and_smoke_protection.py +7 -7
- openepd/model/specs/range/furnishings.py +16 -12
- openepd/model/specs/range/manufacturing_inputs.py +16 -16
- openepd/model/specs/range/masonry.py +16 -16
- openepd/model/specs/range/mechanical.py +47 -47
- openepd/model/specs/range/mechanical_insulation.py +7 -7
- openepd/model/specs/range/network_infrastructure.py +54 -46
- openepd/model/specs/range/openings.py +36 -31
- openepd/model/specs/range/plumbing.py +15 -13
- openepd/model/specs/range/precast_concrete.py +20 -16
- openepd/model/specs/range/sheathing.py +18 -18
- openepd/model/specs/range/steel.py +27 -25
- openepd/model/specs/range/thermal_moisture_protection.py +20 -20
- openepd/model/specs/range/utility_piping.py +9 -9
- openepd/model/specs/range/wood.py +19 -19
- openepd/model/specs/range/wood_joists.py +8 -8
- openepd/model/specs/singular/__init__.py +9 -5
- openepd/model/specs/singular/aggregates.py +22 -15
- openepd/model/specs/singular/aluminium.py +20 -5
- openepd/model/specs/singular/asphalt.py +44 -20
- openepd/model/specs/singular/cladding.py +38 -23
- openepd/model/specs/singular/cmu.py +26 -11
- openepd/model/specs/singular/common.py +3 -2
- openepd/model/specs/singular/concrete.py +85 -48
- openepd/model/specs/singular/conveying_equipment.py +30 -17
- openepd/model/specs/singular/deprecated/__init__.py +3 -2
- openepd/model/specs/singular/deprecated/concrete.py +68 -33
- openepd/model/specs/singular/deprecated/steel.py +28 -15
- openepd/model/specs/singular/electrical.py +69 -41
- openepd/model/specs/singular/finishes.py +250 -140
- openepd/model/specs/singular/fire_and_smoke_protection.py +9 -6
- openepd/model/specs/singular/furnishings.py +16 -14
- openepd/model/specs/singular/manufacturing_inputs.py +23 -14
- openepd/model/specs/singular/masonry.py +66 -21
- openepd/model/specs/singular/mechanical.py +48 -47
- openepd/model/specs/singular/mechanical_insulation.py +7 -6
- openepd/model/specs/singular/mixins/conduit_mixin.py +13 -10
- openepd/model/specs/singular/network_infrastructure.py +111 -52
- openepd/model/specs/singular/openings.py +127 -95
- openepd/model/specs/singular/plumbing.py +15 -12
- openepd/model/specs/singular/precast_concrete.py +68 -54
- openepd/model/specs/singular/sheathing.py +47 -27
- openepd/model/specs/singular/steel.py +69 -45
- openepd/model/specs/singular/thermal_moisture_protection.py +36 -20
- openepd/model/specs/singular/utility_piping.py +11 -8
- openepd/model/specs/singular/wood.py +48 -24
- openepd/model/specs/singular/wood_joists.py +19 -6
- openepd/model/standard.py +15 -8
- openepd/model/validation/common.py +9 -3
- openepd/model/validation/numbers.py +0 -13
- openepd/model/validation/quantity.py +88 -55
- openepd/model/versioning.py +9 -6
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/METADATA +2 -2
- openepd-7.0.1.dist-info/RECORD +141 -0
- openepd/compat/__init__.py +0 -15
- openepd/compat/compat_functional_validators.py +0 -25
- openepd/compat/pydantic.py +0 -30
- openepd/patch_pydantic.py +0 -108
- openepd-6.13.2.dist-info/RECORD +0 -145
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/LICENSE +0 -0
- {openepd-6.13.2.dist-info → openepd-7.0.1.dist-info}/WHEEL +0 -0
openepd/patch_pydantic.py
DELETED
@@ -1,108 +0,0 @@
|
|
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 typing import Any
|
17
|
-
|
18
|
-
from pydantic import utils as pydantic_utils
|
19
|
-
|
20
|
-
from openepd.compat.pydantic import pyd
|
21
|
-
|
22
|
-
|
23
|
-
def patch_pydantic_metaclass():
|
24
|
-
"""
|
25
|
-
Patch pydantic's ModelMetaclass to restore class attribute lookup for fields.
|
26
|
-
|
27
|
-
In pydantic, while the model fields are defined in the model as class-level attributes, in runtime they disappear
|
28
|
-
due to ModelMetaclass logic. ModelMetaclass takes the defined attributes, removes them from class dict and puts
|
29
|
-
into a special __fields__ attribute to avoid naming conflict.
|
30
|
-
|
31
|
-
We would like to be able to access the attributes via dot notation in the runtimes, since it makes refactoring
|
32
|
-
easier.
|
33
|
-
|
34
|
-
This class exposes the original fields when accessed via class name. For example, one can call `Pcr.name` and get
|
35
|
-
`ModelField`, in addition to calling `pcr.__fields__` on an instance.
|
36
|
-
"""
|
37
|
-
|
38
|
-
def model_metaclass__getattr__(cls, name: str) -> Any:
|
39
|
-
if name in cls.__fields__:
|
40
|
-
return cls.__fields__[name]
|
41
|
-
return getattr(super, name)
|
42
|
-
|
43
|
-
pyd.main.ModelMetaclass.__getattr__ = model_metaclass__getattr__
|
44
|
-
|
45
|
-
|
46
|
-
def patch_pydantic_metaclass_validator():
|
47
|
-
"""
|
48
|
-
Patch the internal validator function used during model construction to support modified metaclass.
|
49
|
-
|
50
|
-
Pydantic has a special guard which stops execution if a model defines field which shadows a basemodel interface.
|
51
|
-
For example, if someone would define a field named `__fields__` this would break code.
|
52
|
-
|
53
|
-
With the modified metaclass functionality, we are exposing the original fields as class attributes, and this
|
54
|
-
breaks this check.
|
55
|
-
|
56
|
-
This patcher method modifies the pydantic internals so that the check is retained, but it is not causing exception
|
57
|
-
when doing the normal field inheritance.
|
58
|
-
"""
|
59
|
-
model_field_classes = list()
|
60
|
-
|
61
|
-
try:
|
62
|
-
from pydantic.v1.fields import ModelField as ModelFieldV1
|
63
|
-
|
64
|
-
model_field_classes.append(ModelFieldV1)
|
65
|
-
except ImportError:
|
66
|
-
pass
|
67
|
-
|
68
|
-
try:
|
69
|
-
from pydantic.fields import ModelField as ModelFieldPydanticV1
|
70
|
-
|
71
|
-
model_field_classes.append(ModelFieldPydanticV1)
|
72
|
-
except ImportError:
|
73
|
-
pass
|
74
|
-
|
75
|
-
try:
|
76
|
-
from pydantic_core.core_schema import ModelField as ModelFieldV2
|
77
|
-
|
78
|
-
model_field_classes.append(ModelFieldV2)
|
79
|
-
except ImportError:
|
80
|
-
pass
|
81
|
-
model_field_classes_tuple = tuple(model_field_classes)
|
82
|
-
|
83
|
-
def pydantic_utils__validate_field_name(bases: list[type[pyd.BaseModel]], field_name: str) -> None:
|
84
|
-
for base in bases:
|
85
|
-
if attr := getattr(base, field_name, None):
|
86
|
-
if isinstance(attr, model_field_classes_tuple):
|
87
|
-
continue
|
88
|
-
|
89
|
-
raise NameError(
|
90
|
-
f'Field name "{field_name}" shadows a BaseModel attribute; '
|
91
|
-
f"use a different field name with \"alias='{field_name}'\"."
|
92
|
-
)
|
93
|
-
|
94
|
-
pyd.main.validate_field_name = pydantic_utils__validate_field_name
|
95
|
-
pydantic_utils.validate_field_name = pydantic_utils__validate_field_name
|
96
|
-
|
97
|
-
|
98
|
-
def patch_pydantic():
|
99
|
-
"""
|
100
|
-
Modify Pydantic to support field attribute access via class.
|
101
|
-
|
102
|
-
Example: Field the_field in the model TheModel(BaseModel). Before this patch, one can do
|
103
|
-
`TheModel().__fields__["the_field"]' to get field descriptor. After the fix, one can do TheModel.the_field.
|
104
|
-
|
105
|
-
To disable, set env variable `OPENEPD_DISABLE_PYDANTIC_PATCH` to "1", "yes" or "true".
|
106
|
-
"""
|
107
|
-
patch_pydantic_metaclass()
|
108
|
-
patch_pydantic_metaclass_validator()
|
openepd-6.13.2.dist-info/RECORD
DELETED
@@ -1,145 +0,0 @@
|
|
1
|
-
openepd/__init__.py,sha256=fhxfEyEurLvSfvQci-vb3njzl_lvhcLXiZrecCOaMU8,794
|
2
|
-
openepd/__version__.py,sha256=qONobSZDRb30xeK087DIv0mIqy0n-JQXVGDOZraUG1I,639
|
3
|
-
openepd/api/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
4
|
-
openepd/api/average_dataset/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
5
|
-
openepd/api/average_dataset/generic_estimate_sync_api.py,sha256=KHCmSKMOJTQct6vhdhAatAENoouStc_yVRza5AFNoIo,7953
|
6
|
-
openepd/api/average_dataset/industry_epd_sync_api.py,sha256=CG5c6FQD3I8sl9PKI9VHFUaJlFrnF8E14i4k6Uv0B74,6286
|
7
|
-
openepd/api/base_sync_client.py,sha256=E6yrqME-c1emV1BrI33dwjdu6wcFoRkqWtg1zFyki2Y,20992
|
8
|
-
openepd/api/category/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
9
|
-
openepd/api/category/dto.py,sha256=-nsSNH1zWIluFuF50qmnIcvloX08Jk_KV5mebJqzLe4,850
|
10
|
-
openepd/api/category/sync_api.py,sha256=XlT5a_IkfaVARrZY0hjDUzDVP2ThkR2j_MRNqz6zkTE,1371
|
11
|
-
openepd/api/common.py,sha256=bLSER3RQQFR4lyEuxQPKNjTaa3S0K8fFi8x4QRAPM_g,8812
|
12
|
-
openepd/api/dto/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
13
|
-
openepd/api/dto/base.py,sha256=w-Ci0MN2vTIQ0Vl0YKLUXVG_fC0OxiwojT9SX3lWktg,1033
|
14
|
-
openepd/api/dto/common.py,sha256=3d-frR8kqVw0TFwFE7u7ovxKQM0ZAzNcwaLiGgSO-zE,4488
|
15
|
-
openepd/api/dto/meta.py,sha256=IrGJtfl6-mBXLSWZjcyr08WvvOh9VL0LJnx5ubhJqco,2160
|
16
|
-
openepd/api/dto/mf.py,sha256=59YvIrH5teHlpxINihxryFyCjs7jBZZuqYIO1K-daA8,1994
|
17
|
-
openepd/api/dto/params.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
18
|
-
openepd/api/epd/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
19
|
-
openepd/api/epd/dto.py,sha256=MqhHjaNdtOc-KT2zNI88EB9-1d2a6CS2zzSus8HefBo,4874
|
20
|
-
openepd/api/epd/sync_api.py,sha256=coM-4VDn_sn3DeBbA4YnStsMBqX7zQZSmUnUXHi0gM8,7320
|
21
|
-
openepd/api/errors.py,sha256=BgZeNfMNAKVPfhpuiVapCXNBSsXygAOWql-gy7m9j7E,2868
|
22
|
-
openepd/api/pcr/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
23
|
-
openepd/api/pcr/sync_api.py,sha256=MyBOlBqdJt35-fXk-Vr-RpiKUbN_XlilUwwFGvVROdQ,1557
|
24
|
-
openepd/api/sync_client.py,sha256=reD_OXsaVOvUvnC-cyp5aq8sKSOH2Z8xmImxV2ClQIM,3105
|
25
|
-
openepd/api/test/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
26
|
-
openepd/api/utils.py,sha256=xOU8ihC0eghsoaCFhC85PU4WYRwNxVEpfK3gzq4e9ik,2092
|
27
|
-
openepd/bundle/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
28
|
-
openepd/bundle/base.py,sha256=Ou2zlAV7VRKp7Lxu8h4k56OLEMwn5F1nrEEF_ies_lE,6869
|
29
|
-
openepd/bundle/model.py,sha256=_fQWW1KsxKquFFB6JtU3dyc82re1vqmwMpxe6zUEfSE,2605
|
30
|
-
openepd/bundle/reader.py,sha256=sXhqwxXFN2GdNS0cQHdaxKEtNM4jzhcML1yN4XAIRzE,6687
|
31
|
-
openepd/bundle/writer.py,sha256=gHK1D-F-td2C18QFWerg666JUTLaGUkTUSQURJi9o74,8136
|
32
|
-
openepd/compat/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
33
|
-
openepd/compat/compat_functional_validators.py,sha256=aWg3a80fqT8zjN0S260N-Ad2WFKAaB8ByN7ArBW3NMA,834
|
34
|
-
openepd/compat/pydantic.py,sha256=dNwPXK1X5xq9sdkd0kcbKQAUIter1GAfcxXOl6hmITQ,1146
|
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
|
-
openepd/model/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
39
|
-
openepd/model/base.py,sha256=1GeaEDn-ppy94GaOaZI1y6Yew_0eBBho1COaxfzzLCw,9834
|
40
|
-
openepd/model/category.py,sha256=reeOVRDuZPYU77EMwG0K5VjnK2H9yOGxT0PJXXqrjEk,1639
|
41
|
-
openepd/model/common.py,sha256=2MYjaXXq3_ECjTD7lI4SSZm3wguLrPraaObUpqF0t5g,13062
|
42
|
-
openepd/model/declaration.py,sha256=56cjshR21PxTVCM5xOq_JH7Rw4gw1q_9jdroHaDDOiI,13832
|
43
|
-
openepd/model/epd.py,sha256=qYYJQKbcFNOU_qS5Ag9CXn7Tx0TkIoUOZQEDGJI-xZw,12290
|
44
|
-
openepd/model/factory.py,sha256=doexyqZXJVGd45T1JsbjuyGUjEykW-MerKUq4SQHhRY,2656
|
45
|
-
openepd/model/generic_estimate.py,sha256=zLGTyf4Uzmp2C0m-J1ePWItSz2RGdZ0OiGPWC5nhKHk,3992
|
46
|
-
openepd/model/geography.py,sha256=Jx7NIDdk_sIvwyh-7YxnIjAwIHW2HCQK7UtFGM2xKtw,42095
|
47
|
-
openepd/model/industry_epd.py,sha256=QZr7OhgGkzqZ8H5p6dCIVk9zSHEYtK3y9Nk-DvkFMyk,4011
|
48
|
-
openepd/model/lcia.py,sha256=gS4WFcw7v8PKKDCBUQXQP5I8Jh_TdyZyIklAjUc5HL4,25507
|
49
|
-
openepd/model/org.py,sha256=MtaUrD8IdSbcMJEwL2lnXOIXNfE8wpzrepFSe2qh2uc,5342
|
50
|
-
openepd/model/pcr.py,sha256=b8WmeII8MZ3rJFWxugqv_Z0ETan8NMWj9L6mSrhneJk,5494
|
51
|
-
openepd/model/specs/README.md,sha256=UGhSiFJ9hOxT1mZl-5ZrhkOrPKf1W_gcu5CI9hzV7LU,2430
|
52
|
-
openepd/model/specs/__init__.py,sha256=YcAvn0h_Bhz_Cb4-uEl8DiBI82nXogQsocB-c2zvr_A,3094
|
53
|
-
openepd/model/specs/asphalt.py,sha256=bfNnTAIT6BN2trWOAoYOjDgfbhvIbBw4hfFaTn9Ecpk,3420
|
54
|
-
openepd/model/specs/base.py,sha256=cJTv4kO3QyS0vqfytTlKrOBu-2sBwx7NM0_YZS4i3rY,2652
|
55
|
-
openepd/model/specs/concrete.py,sha256=D9jbhZDtTXNBoAgljQBPxsmGsMvLSIAP5H53ZYiXcGI,5336
|
56
|
-
openepd/model/specs/enums.py,sha256=_WMe0l8ZKPIGQG53A1rB_Sv_p2izr8Zemg9AEEYOU2g,63638
|
57
|
-
openepd/model/specs/range/__init__.py,sha256=ZXgsyzn_c6H2SPCo5hTVZOjRqlCf0HvVVMDQ4RGaPSU,4502
|
58
|
-
openepd/model/specs/range/accessories.py,sha256=wnOv1V_uatA6g_9QVfZaSp-rNLbyZ_KS-t3wlHaeEsI,2498
|
59
|
-
openepd/model/specs/range/aggregates.py,sha256=udVbsYc1Lyrd6a4YZBGNDQ3sBi-L3WLub_e1ecq7U-Q,2549
|
60
|
-
openepd/model/specs/range/aluminium.py,sha256=m2u43hHAcPmvm9dkhcqMojTRuJmX4gofW_uU5AZzqG8,2745
|
61
|
-
openepd/model/specs/range/asphalt.py,sha256=DN3--5g0WL2AQ8Vc23M899rPqxCaFgEhaYqV8vWRbZY,2934
|
62
|
-
openepd/model/specs/range/bulk_materials.py,sha256=SuKhmJXMa9jl0CrkYr3QVvPX_GDbr7KATzrSS-fJEU4,1051
|
63
|
-
openepd/model/specs/range/cast_decks_and_underlayment.py,sha256=37fx7jDRy6xryZTVweW_vu78h0kRs5vQurGS-Ypayog,1132
|
64
|
-
openepd/model/specs/range/cladding.py,sha256=3rMnT-km0tZ9b_Wb-i8vMxO-Uw94SPJqCYzMLDD4BOQ,7236
|
65
|
-
openepd/model/specs/range/cmu.py,sha256=4bf9z1ps_WTYfhdtG_duqEwTahIBrykm6v7c-uyeyWY,1862
|
66
|
-
openepd/model/specs/range/concrete.py,sha256=lmLEhll8xgkMu__BRbQRACvZ5u3R9ui2oVhE9qR0RMs,6907
|
67
|
-
openepd/model/specs/range/conveying_equipment.py,sha256=Ly5i8yUwn-2Xjh8-mA1-rwel0eRQZ028zrEApO2XhxQ,3176
|
68
|
-
openepd/model/specs/range/electrical.py,sha256=TkmXFiGbyX5rtNqVYftr37wuhwyx-3T71IfXlUufkkU,11860
|
69
|
-
openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py,sha256=rbdmHvz9nRMgcWrCGVnN0xXSl5ZezuwArOZ_4xCQIgM,2525
|
70
|
-
openepd/model/specs/range/electricity.py,sha256=yn_S25C_tZqseb8hiJ1yiHszu2mQ49FOFWWCqNpOBY0,997
|
71
|
-
openepd/model/specs/range/finishes.py,sha256=oCaPVYJja1KYxwEzTHCl7HtxQ2mokzeyahjyP33zHSg,21291
|
72
|
-
openepd/model/specs/range/fire_and_smoke_protection.py,sha256=u5veICQznf-woYlh49S_IbvPA23CLWEy7Ngvic2FIpw,3337
|
73
|
-
openepd/model/specs/range/furnishings.py,sha256=7r9albaHmuf0ttqkSQ6elJcSzgFgOHSrwAfhEpJMm5k,6531
|
74
|
-
openepd/model/specs/range/grouting.py,sha256=BQPxH6BvlXpdhLEZBui9zTuY93K_9syjoa6rdnF8GGY,1095
|
75
|
-
openepd/model/specs/range/manufacturing_inputs.py,sha256=xzgkNz7yG8cp715hxS0LtJX9nfJ5RQR8GxlD2bAduwE,5574
|
76
|
-
openepd/model/specs/range/masonry.py,sha256=IyjQMb8Mx3tpJlHIIam0OrMkFsJXKvc0WXRLRBupozY,2867
|
77
|
-
openepd/model/specs/range/material_handling.py,sha256=9jxRHpjMKu71B5omH55UjkNVJvaTLgTMtEidSKPFn5c,1483
|
78
|
-
openepd/model/specs/range/mechanical.py,sha256=vAUXSYJXBIhDNuVJHOGeP--Pvt0YObJLdedmkXF6_9c,10267
|
79
|
-
openepd/model/specs/range/mechanical_insulation.py,sha256=S2-NkFVkjLmn_dk3gsG8C2YcV0SFXbOCgY6LKberqh8,1737
|
80
|
-
openepd/model/specs/range/network_infrastructure.py,sha256=8bJGGEME7TELLxKAfKCCkZfA-K27Mp7tkC71W6YOxEc,8498
|
81
|
-
openepd/model/specs/range/openings.py,sha256=tgy7XbiwPleqrsSVrKBadvmnXSyV3bnOVf84K8vwEMQ,15451
|
82
|
-
openepd/model/specs/range/other_electrical_equipment.py,sha256=H4tZHcHyR2uUYHn-bQfLC6hR4tynVp_7EJbiI-YpK7Y,1001
|
83
|
-
openepd/model/specs/range/other_materials.py,sha256=k7Gv6YvWy43B-QFBabBt-TkvkC450Pz2a2pz9t6r4OU,4495
|
84
|
-
openepd/model/specs/range/plumbing.py,sha256=RYfP6ail7cYrwBluxmbAkC9icbxXaxdrdnf4Vqhy9ho,5342
|
85
|
-
openepd/model/specs/range/precast_concrete.py,sha256=hXnljuc6djoScmx50ZWkmVjnihCTjiZV755aaKCs6uA,3763
|
86
|
-
openepd/model/specs/range/sheathing.py,sha256=tATL6dzKTdN0rUKZRzZd779dLhKdEavL5Bjybnt2MjU,3395
|
87
|
-
openepd/model/specs/range/steel.py,sha256=tPRtWSqhVjmbbWVFoFpS7rQKDsaYn9D_6afBOYhqPug,10417
|
88
|
-
openepd/model/specs/range/thermal_moisture_protection.py,sha256=WOyUzR_t39mpekg1vOrU9e529DyR1EPM0h3QAP46kdc,9409
|
89
|
-
openepd/model/specs/range/utility_piping.py,sha256=mQTrKbMTES_0Yta9DBnKehsmA2BAN_zYF_uPZCTKLPo,2665
|
90
|
-
openepd/model/specs/range/wood.py,sha256=1ZAkUwcFF9etc7CZ1_BSvjchpnqnngfZihYZMtuLdeM,6946
|
91
|
-
openepd/model/specs/range/wood_joists.py,sha256=NCBHL0gdKwdKlGCP6up_Royl9BtWUUeuFfS1r2vIZ30,1785
|
92
|
-
openepd/model/specs/singular/__init__.py,sha256=igkfspzFQzoIFPU6Gd6RbxkyLr2RFPGn7brKUo_jN5s,6910
|
93
|
-
openepd/model/specs/singular/accessories.py,sha256=xcuSJrG84oTm_w76_wlv_sItfK36gSyDmUD2TnpZnVE,2013
|
94
|
-
openepd/model/specs/singular/aggregates.py,sha256=oSfArxvLUj63w_U0tZViRyiOpMRRjE72ncy2BimKxco,2934
|
95
|
-
openepd/model/specs/singular/aluminium.py,sha256=pkcjMf_gBTler1nzbb7_XEKCpUD1hyM-tly3Twfr_lo,2403
|
96
|
-
openepd/model/specs/singular/asphalt.py,sha256=JDviENdY_2tcj5SrzgJnYJHuxTIOhLCWcXhmoSiELKk,3295
|
97
|
-
openepd/model/specs/singular/bulk_materials.py,sha256=LKTmh432ak51L0GsVf-40389Lwx-sxZm_jSfzWNfagE,875
|
98
|
-
openepd/model/specs/singular/cast_decks_and_underlayment.py,sha256=HjIEKekxCAKx51XEvH1tthUP6gNTbntDoi8gSu8LjZk,955
|
99
|
-
openepd/model/specs/singular/cladding.py,sha256=ywT6E8iv55khqbrkMRFOkm_PAWht3qt4ybNDNRa1wyw,6588
|
100
|
-
openepd/model/specs/singular/cmu.py,sha256=yexfb3REDGvVG3yD_1Yg1Zt-atBWLa8tv2lPmBPDWfw,1952
|
101
|
-
openepd/model/specs/singular/common.py,sha256=rPJTp2XuSa_dOXj6ZikzMv-lLbEwPLaP-XsXkjDB4uI,1048
|
102
|
-
openepd/model/specs/singular/concrete.py,sha256=G3PRrqNdlAougtuvvmjp1Fp-qFOvUTVbpW2UFfMQ-ts,7718
|
103
|
-
openepd/model/specs/singular/conveying_equipment.py,sha256=AK_KdGyBDh0_Dl3YCkIyfHEfpiJmntdH-e9rFaIZv2s,3042
|
104
|
-
openepd/model/specs/singular/deprecated/__init__.py,sha256=f8I04fHO5QWpNtorrCgbUXz4r0B0zgsk8zDUfXu_i80,2635
|
105
|
-
openepd/model/specs/singular/deprecated/concrete.py,sha256=swSOfViIvy7z923C6uHBcIZrv_JRMv7wSJHpg9PGAJg,5265
|
106
|
-
openepd/model/specs/singular/deprecated/steel.py,sha256=0A3Y50XpLsPt105t_H8BzByaDUbLoX1o_QIr566JfB4,3499
|
107
|
-
openepd/model/specs/singular/electrical.py,sha256=BiaPpZBGBzUt5wVacd1tOIZ9dRn9ZAKFg582UfNnmyI,11113
|
108
|
-
openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py,sha256=oZYyHgnXn9RH3YzltUEDiiQKrin2mvMlTgC3OhxV7DY,1978
|
109
|
-
openepd/model/specs/singular/electricity.py,sha256=f1cJ9eklNUf97khCIZiT5-z8V_TbOcvH2me_1UTQVrE,823
|
110
|
-
openepd/model/specs/singular/finishes.py,sha256=bAlNZiUP-HwePaJyC1D4j2fpv0xnMp3V5mhtAs9iaxQ,22571
|
111
|
-
openepd/model/specs/singular/fire_and_smoke_protection.py,sha256=1uyEGdMAsboYORHvSFN1wftRVAps_UJ1Ep3Dk9arT3s,3058
|
112
|
-
openepd/model/specs/singular/furnishings.py,sha256=6V6Dc4xph8PcIQhuuLFyFGL4w2Yh_ByEKCNvQfUkxZQ,5603
|
113
|
-
openepd/model/specs/singular/grouting.py,sha256=pg2tX3W7a2TQ3z_eyFYGlBJY3WEwn6JlZyqM3PQIJcU,934
|
114
|
-
openepd/model/specs/singular/manufacturing_inputs.py,sha256=9WSDOVN0mUqvFXqWf82lkpHi-XRQSMcEpe9bweegwhU,5093
|
115
|
-
openepd/model/specs/singular/masonry.py,sha256=f6nph-gscAmVeJ60bG-ebto5kz0fgh0LY27n0VutGFA,3165
|
116
|
-
openepd/model/specs/singular/material_handling.py,sha256=iEeUx1hNKla669y0zl-QAJn6xA7ceq75aRG8qT0p56Q,1274
|
117
|
-
openepd/model/specs/singular/mechanical.py,sha256=VvW9PQ3VI8GCaqu5MKUmxjmcaHkKDAHAIhLyK-DVlUw,9862
|
118
|
-
openepd/model/specs/singular/mechanical_insulation.py,sha256=h-Ir-jiLF-cpiHap4wx5G4fpvsRRKzqcGVXb5U5aqvQ,1607
|
119
|
-
openepd/model/specs/singular/mixins/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
120
|
-
openepd/model/specs/singular/mixins/conduit_mixin.py,sha256=tj6p-MF84rg4LGxXPC65uMvmn6NlxmATuloe4TcuQdk,1928
|
121
|
-
openepd/model/specs/singular/network_infrastructure.py,sha256=eB3p1zu1u15Ly5iuyyJ4xl3Z1GuBCRVU18Wpz8FWZrg,8521
|
122
|
-
openepd/model/specs/singular/openings.py,sha256=UbdojHW3yxV9DdWECgyANKicdH5czz6pyFPKpzzLxmw,18941
|
123
|
-
openepd/model/specs/singular/other_electrical_equipment.py,sha256=FX7p4rMuUbTrz1yDwKkS-Z6odohoq-zCw6SU3Kw5ISs,814
|
124
|
-
openepd/model/specs/singular/other_materials.py,sha256=_00_fCPn7G_-HVKC1cQcNvBDf4CtXFLOGvYLDJtL5ZA,3498
|
125
|
-
openepd/model/specs/singular/plumbing.py,sha256=fHmKyy1aQxu8NZ3RTwxuA0CCERMgwVUdMA74kMDVc8o,4568
|
126
|
-
openepd/model/specs/singular/precast_concrete.py,sha256=W2tKf0vOnAdfeGc1n7Pk8yx9jy44afdFB0cbwHjw1HI,7327
|
127
|
-
openepd/model/specs/singular/sheathing.py,sha256=dfBSGElsJ-suj3WH7CZx5k3_v5E5IHVDOscwRI5yghE,3709
|
128
|
-
openepd/model/specs/singular/steel.py,sha256=bPK2BUS_DfM7ulgvG-IZtB9yZETZV9HiUF-9TzodTYI,10529
|
129
|
-
openepd/model/specs/singular/thermal_moisture_protection.py,sha256=7fikgfPyopWruPzhWdyU-YWvlo5facOjXbviyl_qOEw,8195
|
130
|
-
openepd/model/specs/singular/utility_piping.py,sha256=KunlvMGqH_Z62TecGnT_4HhsTase01aJJIGIsyY5mGY,2483
|
131
|
-
openepd/model/specs/singular/wood.py,sha256=6bGl5TgJgAZxosh_46YcZDm57DOyFyLZ9g2W-oDlhl8,6591
|
132
|
-
openepd/model/specs/singular/wood_joists.py,sha256=WL_l48aTuazQkWwdz5EQcGrbK5biWhqHqhWdHXITPIo,1719
|
133
|
-
openepd/model/standard.py,sha256=LFqZKK8nYJHKvcW0BaLoFm0-TVYpQr2l9l70vHLRiNk,1688
|
134
|
-
openepd/model/validation/__init__.py,sha256=9THJcV3LT7JDBOMz1px-QFf_sdJ0LOqJ5dmA9Dvvtd4,620
|
135
|
-
openepd/model/validation/common.py,sha256=3HYzftDMYvaX_gpl337g8AdsohMkaOoOR6pmE22Mm5c,2435
|
136
|
-
openepd/model/validation/enum.py,sha256=ttODVtMEQaBemMFywGUNlXU4bAM25FiBlVDKZbOv2iY,1793
|
137
|
-
openepd/model/validation/numbers.py,sha256=r15pLe8oWY1tshazQvis_suVXpC6PUcPzKTvj3QTL9Q,851
|
138
|
-
openepd/model/validation/quantity.py,sha256=vfSe-3DGQf84bCp_sMIU0ZPAA1wIilodpTjLSMoz5Jk,20194
|
139
|
-
openepd/model/versioning.py,sha256=cm3LaAUODnbbu3W3pC6baJzxKusTQ1kZH-PwwScCj3c,4473
|
140
|
-
openepd/patch_pydantic.py,sha256=LVqDMKn723VYYf_V-RgTLxIb1xiUtYOfPYCQP6-7RoM,4122
|
141
|
-
openepd/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
142
|
-
openepd-6.13.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
143
|
-
openepd-6.13.2.dist-info/METADATA,sha256=mJIwK2tPktGs8i7uVmk6xqRuMpSg3AWA5H3RELYtypo,9039
|
144
|
-
openepd-6.13.2.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
145
|
-
openepd-6.13.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|