openepd 6.28.0__tar.gz → 6.29.0__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.
- {openepd-6.28.0 → openepd-6.29.0}/PKG-INFO +1 -1
- {openepd-6.28.0 → openepd-6.29.0}/pyproject.toml +1 -1
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/__version__.py +1 -1
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/declaration.py +24 -5
- {openepd-6.28.0 → openepd-6.29.0}/LICENSE +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/README.md +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/average_dataset/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/average_dataset/generic_estimate_sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/average_dataset/industry_epd_sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/base_sync_client.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/category/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/category/dto.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/category/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/common.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/base.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/common.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/meta.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/mf.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/dto/params.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/epd/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/epd/dto.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/epd/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/errors.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/org/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/org/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/pcr/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/pcr/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/plant/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/plant/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/standard/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/standard/sync_api.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/sync_client.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/test/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/utils.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/bundle/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/bundle/base.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/bundle/model.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/bundle/reader.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/bundle/writer.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/compat/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/compat/compat_functional_validators.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/compat/pydantic.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/constants/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/constants/scope_phases.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/m49/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/m49/const.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/m49/utils.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/base.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/category.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/common.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/epd.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/factory.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/generic_estimate.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/geography.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/industry_epd.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/lcia.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/org.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/pcr.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/README.md +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/asphalt.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/base.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/enums.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/accessories.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/aggregates.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/aluminium.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/asphalt.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/bulk_materials.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/cast_decks_and_underlayment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/cladding.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/cmu.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/conveying_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/electrical.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/electrical_transmission_and_distribution_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/electricity.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/exterior_improvements.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/finishes.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/fire_and_smoke_protection.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/furnishings.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/grouting.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/manufacturing_inputs.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/masonry.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/material_handling.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/mechanical.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/mechanical_insulation.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/mixins/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/mixins/access_flooring_mixin.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/network_infrastructure.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/openings.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/other_electrical_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/other_materials.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/plumbing.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/precast_concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/sheathing.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/steel.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/thermal_moisture_protection.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/utility_piping.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/wood.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/wood_joists.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/accessories.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/aggregates.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/aluminium.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/asphalt.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/bulk_materials.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/cladding.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/cmu.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/common.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/conveying_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/deprecated/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/deprecated/concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/deprecated/steel.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/electrical.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/electrical_transmission_and_distribution_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/electricity.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/exterior_improvements.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/finishes.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/fire_and_smoke_protection.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/furnishings.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/grouting.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/manufacturing_inputs.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/masonry.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/material_handling.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mechanical.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mechanical_insulation.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mixins/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mixins/access_flooring_mixin.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mixins/conduit_mixin.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/network_infrastructure.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/openings.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/other_electrical_equipment.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/other_materials.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/plumbing.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/precast_concrete.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/sheathing.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/steel.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/thermal_moisture_protection.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/utility_piping.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/wood.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/wood_joists.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/standard.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/validation/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/validation/common.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/validation/enum.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/validation/numbers.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/validation/quantity.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/versioning.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/patch_pydantic.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/py.typed +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/utils/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/utils/functional.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/utils/mapping/__init__.py +0 -0
- {openepd-6.28.0 → openepd-6.29.0}/src/openepd/utils/mapping/common.py +0 -0
@@ -16,10 +16,12 @@
|
|
16
16
|
import abc
|
17
17
|
import datetime
|
18
18
|
from enum import StrEnum
|
19
|
+
import math
|
20
|
+
from typing import Final
|
19
21
|
|
20
22
|
from openepd.compat.pydantic import pyd
|
21
23
|
from openepd.model.base import BaseOpenEpdSchema, OpenXpdUUID, RootDocument
|
22
|
-
from openepd.model.common import Amount
|
24
|
+
from openepd.model.common import Amount, DataUrl
|
23
25
|
from openepd.model.geography import Geography
|
24
26
|
from openepd.model.org import Org
|
25
27
|
from openepd.model.pcr import Pcr
|
@@ -32,6 +34,14 @@ DEVELOPER_DESCRIPTION = "The organization responsible for the underlying LCA (an
|
|
32
34
|
PROGRAM_OPERATOR_DESCRIPTION = "JSON object for program operator Org"
|
33
35
|
THIRD_PARTY_VERIFIER_DESCRIPTION = "JSON object for Org that performed a critical review of the EPD data"
|
34
36
|
|
37
|
+
PRODUCT_IMAGE_MAX_LENGTH: Final[int] = math.ceil(32 * 1024 * 4 / 3)
|
38
|
+
"""
|
39
|
+
Maximum length for product_image, product_image_small fields.
|
40
|
+
|
41
|
+
Image file size must be less than 32KB. Base64 encoding overhead (approximately 33%) requires
|
42
|
+
limiting the encoded string length to 4/3 of the file size limit.
|
43
|
+
"""
|
44
|
+
|
35
45
|
|
36
46
|
class BaseDeclaration(RootDocument, abc.ABC):
|
37
47
|
"""Base class for declaration-related documents (EPDs, Industry-wide EPDs, Generic Estimates)."""
|
@@ -128,11 +138,13 @@ class BaseDeclaration(RootDocument, abc.ABC):
|
|
128
138
|
""",
|
129
139
|
)
|
130
140
|
|
131
|
-
product_image_small: pyd.AnyUrl | None = pyd.Field(
|
132
|
-
description="
|
141
|
+
product_image_small: pyd.AnyUrl | DataUrl | None = pyd.Field(
|
142
|
+
description="URL referencing an image illustrating the product. May be a dataURL of up to 32kb. 200x200 or smaller.",
|
143
|
+
default=None,
|
133
144
|
)
|
134
|
-
product_image: pyd.AnyUrl | pyd.FileUrl | None = pyd.Field(
|
135
|
-
description="
|
145
|
+
product_image: pyd.AnyUrl | pyd.FileUrl | DataUrl | None = pyd.Field(
|
146
|
+
description="URL referencing an image illustrating the product, of no more than 10MB. May be a dataURL of up to 32KB.",
|
147
|
+
default=None,
|
136
148
|
)
|
137
149
|
declaration_url: str | None = pyd.Field(
|
138
150
|
description="Link to data object on original registrar's site",
|
@@ -161,6 +173,13 @@ class BaseDeclaration(RootDocument, abc.ABC):
|
|
161
173
|
example=50.0,
|
162
174
|
)
|
163
175
|
|
176
|
+
@pyd.validator("product_image", "product_image_small")
|
177
|
+
def validate_product_image(cls, v: str | None) -> str | None:
|
178
|
+
if v and len(v) > PRODUCT_IMAGE_MAX_LENGTH:
|
179
|
+
msg = f"URL must not exceed {PRODUCT_IMAGE_MAX_LENGTH} characters"
|
180
|
+
raise ValueError(msg)
|
181
|
+
return v
|
182
|
+
|
164
183
|
|
165
184
|
class AverageDatasetMixin(pyd.BaseModel, title="Average Dataset"):
|
166
185
|
"""Fields common for average dataset (Industry-wide EPDs, Generic Estimates)."""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/api/average_dataset/generic_estimate_sync_api.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/cast_decks_and_underlayment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/fire_and_smoke_protection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/mixins/access_flooring_mixin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/other_electrical_equipment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/range/thermal_moisture_protection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/cast_decks_and_underlayment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/fire_and_smoke_protection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/mixins/access_flooring_mixin.py
RENAMED
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/network_infrastructure.py
RENAMED
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/other_electrical_equipment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openepd-6.28.0 → openepd-6.29.0}/src/openepd/model/specs/singular/thermal_moisture_protection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|