openepd 4.9.0__tar.gz → 4.10.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-4.9.0 → openepd-4.10.0}/PKG-INFO +1 -1
- {openepd-4.9.0 → openepd-4.10.0}/pyproject.toml +1 -1
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/__version__.py +1 -1
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/base.py +1 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/declaration.py +80 -1
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/epd.py +18 -30
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/factory.py +2 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/generic_estimate.py +7 -31
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/geography.py +273 -271
- openepd-4.10.0/src/openepd/model/industry_epd.py +98 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/electrical.py +3 -2
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/enums.py +24 -0
- openepd-4.10.0/src/openepd/model/specs/generated/mixins/conduit_mixin.py +50 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/network_infrastructure.py +3 -2
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/steel.py +4 -1
- openepd-4.10.0/src/openepd/model/validation/__init__.py +15 -0
- {openepd-4.9.0 → openepd-4.10.0}/LICENSE +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/README.md +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/base_sync_client.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/category/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/category/dto.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/category/sync_api.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/common.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/base.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/common.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/meta.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/mf.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/dto/params.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/epd/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/epd/dto.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/epd/sync_api.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/errors.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/pcr/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/pcr/sync_api.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/sync_client.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/test/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/api/utils.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/bundle/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/bundle/base.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/bundle/model.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/bundle/reader.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/bundle/writer.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/compat/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/compat/compat_functional_validators.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/compat/pydantic.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/category.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/common.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/lcia.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/org.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/pcr.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/README.md +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/asphalt.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/base.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/concrete.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/accessories.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/aggregates.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/aluminium.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/asphalt.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/bulk_materials.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/cast_decks_and_underlayment.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/cladding.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/cmu.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/common.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/concrete.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/conveying_equipment.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/electrical_transmission_and_distribution_equipment.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/electricity.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/finishes.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/fire_and_smoke_protection.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/furnishings.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/grouting.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/manufacturing_inputs.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/masonry.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/material_handling.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/mechanical.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/mechanical_insulation.py +0 -0
- {openepd-4.9.0/src/openepd/model/validation → openepd-4.10.0/src/openepd/model/specs/generated/mixins}/__init__.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/openings.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/other_electrical_equipment.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/other_materials.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/plumbing.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/precast_concrete.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/sheathing.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/thermal_moisture_protection.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/utility_piping.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/wood.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/specs/generated/wood_joists.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/standard.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/validation/common.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/validation/numbers.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/validation/quantity.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/model/versioning.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/patch_pydantic.py +0 -0
- {openepd-4.9.0 → openepd-4.10.0}/src/openepd/py.typed +0 -0
@@ -17,10 +17,17 @@ import abc
|
|
17
17
|
import datetime
|
18
18
|
|
19
19
|
from openepd.compat.pydantic import pyd
|
20
|
-
from openepd.model.base import RootDocument
|
20
|
+
from openepd.model.base import BaseOpenEpdSchema, RootDocument
|
21
21
|
from openepd.model.common import Amount
|
22
|
+
from openepd.model.geography import Geography
|
23
|
+
from openepd.model.org import Org
|
22
24
|
from openepd.model.pcr import Pcr
|
23
25
|
from openepd.model.standard import Standard
|
26
|
+
from openepd.model.validation.common import ReferenceStr
|
27
|
+
|
28
|
+
DEVELOPER_DESCRIPTION = "The organization responsible for the underlying LCA (and subsequent summarization as EPD)."
|
29
|
+
PROGRAM_OPERATOR_DESCRIPTION = "JSON object for program operator Org"
|
30
|
+
THIRD_PARTY_VERIFIER_DESCRIPTION = "JSON object for Org that performed a critical review of the EPD data"
|
24
31
|
|
25
32
|
|
26
33
|
class BaseDeclaration(RootDocument, abc.ABC):
|
@@ -111,3 +118,75 @@ class BaseDeclaration(RootDocument, abc.ABC):
|
|
111
118
|
In the absence of primary data, cleaning assumptions shall be documented.
|
112
119
|
""",
|
113
120
|
)
|
121
|
+
|
122
|
+
|
123
|
+
class AverageDatasetMixin(pyd.BaseModel, title="Average Dataset"):
|
124
|
+
"""Fields common for average dataset (Industry-wide EPDs, Generic Estimates)."""
|
125
|
+
|
126
|
+
description: str | None = pyd.Field(
|
127
|
+
max_length=2000,
|
128
|
+
description="1-paragraph description of the average dataset. Supports plain text or github flavored markdown.",
|
129
|
+
)
|
130
|
+
|
131
|
+
geography: list[Geography] | None = pyd.Field(
|
132
|
+
"Jurisdiction(s) in which the LCA result is applicable. An empty array, or absent properties, implies global applicability."
|
133
|
+
)
|
134
|
+
|
135
|
+
|
136
|
+
class WithProgramOperatorMixin(pyd.BaseModel):
|
137
|
+
"""Object which has a connection to ProgramOperator."""
|
138
|
+
|
139
|
+
program_operator: Org | None = pyd.Field(description=PROGRAM_OPERATOR_DESCRIPTION)
|
140
|
+
program_operator_doc_id: str | None = pyd.Field(
|
141
|
+
max_length=200, description="Document identifier from Program Operator.", example="123-456.789/b"
|
142
|
+
)
|
143
|
+
program_operator_version: str | None = pyd.Field(
|
144
|
+
max_length=200, description="Document version number from Program Operator.", example="4.3.0"
|
145
|
+
)
|
146
|
+
|
147
|
+
|
148
|
+
class WithVerifierMixin(pyd.BaseModel):
|
149
|
+
"""Set of fields related to verifier."""
|
150
|
+
|
151
|
+
third_party_verifier: Org | None = pyd.Field(description=THIRD_PARTY_VERIFIER_DESCRIPTION)
|
152
|
+
third_party_verification_url: pyd.AnyUrl | None = pyd.Field(
|
153
|
+
description="Optional link to a verification statement.",
|
154
|
+
example="https://we-verify-epds.com/en/letters/123-456.789b.pdf",
|
155
|
+
)
|
156
|
+
third_party_verifier_email: pyd.EmailStr | None = pyd.Field(
|
157
|
+
description="Email address of the third party verifier", example="john.doe@example.com", default=None
|
158
|
+
)
|
159
|
+
|
160
|
+
|
161
|
+
class WithEpdDeveloperMixin(pyd.BaseModel):
|
162
|
+
"""Set of fields related to EPD Developer."""
|
163
|
+
|
164
|
+
epd_developer: Org | None = pyd.Field(
|
165
|
+
description=DEVELOPER_DESCRIPTION,
|
166
|
+
default=None,
|
167
|
+
)
|
168
|
+
epd_developer_email: pyd.EmailStr | None = pyd.Field(
|
169
|
+
default=None,
|
170
|
+
example="john.doe@we-do-lca.com",
|
171
|
+
description="Email contact for inquiries about development of this EPD. "
|
172
|
+
"This must be an email which can be publicly shared.",
|
173
|
+
)
|
174
|
+
|
175
|
+
|
176
|
+
class RefBase(BaseOpenEpdSchema, title="Ref Object"):
|
177
|
+
"""Base class for reference-style objects."""
|
178
|
+
|
179
|
+
id: str | None = pyd.Field(
|
180
|
+
description="The unique ID for this object. To ensure global uniqueness, should be registered at "
|
181
|
+
"open-xpd-uuid.cqd.io/register or a coordinating registry.",
|
182
|
+
example="1u7zsed8",
|
183
|
+
default=None,
|
184
|
+
)
|
185
|
+
|
186
|
+
name: str | None = pyd.Field(max_length=200, description="Name of the object", default=None)
|
187
|
+
|
188
|
+
ref: ReferenceStr | None = pyd.Field(
|
189
|
+
default=None,
|
190
|
+
example="https://openepd.buildingtransparency.org/api/generic_estimates/EC300001",
|
191
|
+
description="Reference to this JSON object",
|
192
|
+
)
|
@@ -18,7 +18,15 @@ from typing import Annotated
|
|
18
18
|
from openepd.compat.pydantic import pyd
|
19
19
|
from openepd.model.base import BaseDocumentFactory, OpenEpdDoctypes
|
20
20
|
from openepd.model.common import Amount, Ingredient, WithAltIdsMixin, WithAttachmentsMixin
|
21
|
-
from openepd.model.declaration import
|
21
|
+
from openepd.model.declaration import (
|
22
|
+
DEVELOPER_DESCRIPTION,
|
23
|
+
PROGRAM_OPERATOR_DESCRIPTION,
|
24
|
+
THIRD_PARTY_VERIFIER_DESCRIPTION,
|
25
|
+
BaseDeclaration,
|
26
|
+
WithEpdDeveloperMixin,
|
27
|
+
WithProgramOperatorMixin,
|
28
|
+
WithVerifierMixin,
|
29
|
+
)
|
22
30
|
from openepd.model.lcia import WithLciaMixin
|
23
31
|
from openepd.model.org import Org, Plant
|
24
32
|
from openepd.model.specs import Specs
|
@@ -27,12 +35,17 @@ from openepd.model.versioning import OpenEpdVersions, Version
|
|
27
35
|
MANUFACTURER_DESCRIPTION = (
|
28
36
|
'JSON object for declaring Org. Sometimes called the "Declaration Holder" or "Declaration Owner".'
|
29
37
|
)
|
30
|
-
DEVELOPER_DESCRIPTION = "The organization responsible for the underlying LCA (and subsequent summarization as EPD)."
|
31
|
-
PROGRAM_OPERATOR_DESCRIPTION = "JSON object for program operator Org"
|
32
|
-
THIRD_PARTY_VERIFIER_DESCRIPTION = "JSON object for Org that performed a critical review of the EPD data"
|
33
38
|
|
34
39
|
|
35
|
-
class EpdPreviewV0(
|
40
|
+
class EpdPreviewV0(
|
41
|
+
WithAttachmentsMixin,
|
42
|
+
WithProgramOperatorMixin,
|
43
|
+
WithEpdDeveloperMixin,
|
44
|
+
WithVerifierMixin,
|
45
|
+
WithAltIdsMixin,
|
46
|
+
BaseDeclaration,
|
47
|
+
title="EPD (Preview)",
|
48
|
+
):
|
36
49
|
"""
|
37
50
|
EPD preview, used in API list responses and where there is no need for a full object.
|
38
51
|
|
@@ -67,36 +80,11 @@ class EpdPreviewV0(WithAttachmentsMixin, WithAltIdsMixin, BaseDeclaration, title
|
|
67
80
|
example="https://epd-online.com/EmbeddedEpdList/Download/6029",
|
68
81
|
)
|
69
82
|
manufacturer: Org | None = pyd.Field(description=MANUFACTURER_DESCRIPTION)
|
70
|
-
epd_developer: Org | None = pyd.Field(
|
71
|
-
description=DEVELOPER_DESCRIPTION,
|
72
|
-
default=None,
|
73
|
-
)
|
74
|
-
epd_developer_email: pyd.EmailStr | None = pyd.Field(
|
75
|
-
default=None,
|
76
|
-
example="john.doe@we-do-lca.com",
|
77
|
-
description="Email contact for inquiries about development of this EPD. "
|
78
|
-
"This must be an email which can be publicly shared.",
|
79
|
-
)
|
80
83
|
plants: list[Plant] = pyd.Field(
|
81
84
|
max_items=32,
|
82
85
|
description="List of object(s) for one or more plant(s) that this declaration applies to.",
|
83
86
|
default_factory=list,
|
84
87
|
)
|
85
|
-
program_operator: Org | None = pyd.Field(description=PROGRAM_OPERATOR_DESCRIPTION)
|
86
|
-
program_operator_doc_id: str | None = pyd.Field(
|
87
|
-
max_length=200, description="Document identifier from Program Operator.", example="123-456.789/b"
|
88
|
-
)
|
89
|
-
program_operator_version: str | None = pyd.Field(
|
90
|
-
max_length=200, description="Document version number from Program Operator.", example="4.3.0"
|
91
|
-
)
|
92
|
-
third_party_verifier: Org | None = pyd.Field(description=THIRD_PARTY_VERIFIER_DESCRIPTION)
|
93
|
-
third_party_verification_url: pyd.AnyUrl | None = pyd.Field(
|
94
|
-
description="Optional link to a verification statement.",
|
95
|
-
example="https://we-verify-epds.com/en/letters/123-456.789b.pdf",
|
96
|
-
)
|
97
|
-
third_party_verifier_email: pyd.EmailStr | None = pyd.Field(
|
98
|
-
description="Email address of the third party verifier", example="john.doe@example.com", default=None
|
99
|
-
)
|
100
88
|
kg_C_per_declared_unit: Amount | None = pyd.Field(
|
101
89
|
default=None,
|
102
90
|
description="Mass of elemental carbon, per declared unit, contained in the product itself at the manufacturing "
|
@@ -16,6 +16,7 @@
|
|
16
16
|
from openepd.model.base import BaseDocumentFactory, OpenEpdDoctypes, RootDocument
|
17
17
|
from openepd.model.epd import EpdFactory
|
18
18
|
from openepd.model.generic_estimate import GenericEstimateFactory
|
19
|
+
from openepd.model.industry_epd import IndustryEpdFactory
|
19
20
|
|
20
21
|
|
21
22
|
class DocumentFactory:
|
@@ -24,6 +25,7 @@ class DocumentFactory:
|
|
24
25
|
DOCTYPE_TO_FACTORY: dict[OpenEpdDoctypes, type[BaseDocumentFactory]] = {
|
25
26
|
OpenEpdDoctypes.Epd: EpdFactory,
|
26
27
|
OpenEpdDoctypes.GenericEstimate: GenericEstimateFactory,
|
28
|
+
OpenEpdDoctypes.IndustryEpd: IndustryEpdFactory,
|
27
29
|
}
|
28
30
|
|
29
31
|
@classmethod
|
@@ -16,13 +16,11 @@
|
|
16
16
|
from enum import StrEnum
|
17
17
|
|
18
18
|
from openepd.compat.pydantic import pyd
|
19
|
-
from openepd.model.base import BaseDocumentFactory,
|
19
|
+
from openepd.model.base import BaseDocumentFactory, OpenEpdDoctypes
|
20
20
|
from openepd.model.common import WithAltIdsMixin, WithAttachmentsMixin
|
21
|
-
from openepd.model.declaration import BaseDeclaration
|
22
|
-
from openepd.model.geography import Geography
|
21
|
+
from openepd.model.declaration import AverageDatasetMixin, BaseDeclaration, RefBase
|
23
22
|
from openepd.model.lcia import WithLciaMixin
|
24
23
|
from openepd.model.org import Org
|
25
|
-
from openepd.model.validation.common import ReferenceStr
|
26
24
|
from openepd.model.versioning import OpenEpdVersions, Version
|
27
25
|
|
28
26
|
|
@@ -47,27 +45,12 @@ class LicenseTerms(StrEnum):
|
|
47
45
|
"""
|
48
46
|
|
49
47
|
|
50
|
-
class GenericEstimateRef(
|
48
|
+
class GenericEstimateRef(RefBase, title="Generic Estimate (Ref)"):
|
51
49
|
"""Reference (short) version of Generic Estimate object."""
|
52
50
|
|
53
|
-
id: str | None = pyd.Field(
|
54
|
-
description="The unique ID for this document. To ensure global uniqueness, should be registered at "
|
55
|
-
"open-xpd-uuid.cqd.io/register or a coordinating registry.",
|
56
|
-
example="1u7zsed8",
|
57
|
-
default=None,
|
58
|
-
)
|
59
|
-
|
60
|
-
name: str | None = pyd.Field(max_length=200, description="Name of the generic estimate", default=None)
|
61
|
-
|
62
|
-
ref: ReferenceStr | None = pyd.Field(
|
63
|
-
default=None,
|
64
|
-
example="https://openepd.buildingtransparency.org/api/generic_estimates/EC300001",
|
65
|
-
description="Reference to this GenericEstimate JSON object",
|
66
|
-
)
|
67
|
-
|
68
51
|
|
69
52
|
class GenericEstimatePreviewV0(
|
70
|
-
WithAttachmentsMixin, GenericEstimateRef, BaseDeclaration, title="Generic Estimate (preview)"
|
53
|
+
WithAttachmentsMixin, AverageDatasetMixin, GenericEstimateRef, BaseDeclaration, title="Generic Estimate (preview)"
|
71
54
|
):
|
72
55
|
"""
|
73
56
|
Generic Estimate preview, used in API list responses and where there is no need for a full object.
|
@@ -80,20 +63,13 @@ class GenericEstimatePreviewV0(
|
|
80
63
|
default="openGenericEstimate",
|
81
64
|
)
|
82
65
|
|
83
|
-
description: str | None = pyd.Field(
|
84
|
-
max_length=2000,
|
85
|
-
description="1-paragraph description of the Generic Estimate. Supports plain text or github flavored markdown.",
|
86
|
-
)
|
87
|
-
|
88
66
|
publisher: Org | None = pyd.Field(description="Organization that published the LCA results.")
|
67
|
+
reviewer: Org | None = pyd.Field(description="Org that performed a critical review of the LCA.")
|
89
68
|
reviewer_email: pyd.EmailStr | None = pyd.Field(
|
90
69
|
description="Email address of the third party verifier", example="john.doe@example.com", default=None
|
91
70
|
)
|
92
|
-
|
71
|
+
|
93
72
|
license_terms: LicenseTerms | None = pyd.Field(description="The license terms for use of the data.")
|
94
|
-
geography: list[Geography] | None = pyd.Field(
|
95
|
-
"Jurisdiction(s) in which the LCA result is applicable. An empty array, or absent properties, implies global applicability."
|
96
|
-
)
|
97
73
|
model_repository: pyd.AnyUrl | None = pyd.Field(
|
98
74
|
default=None, description="A link to the shared git repository containing the LCA model used for this estimate."
|
99
75
|
)
|
@@ -104,7 +80,7 @@ GenericEstimatePreview = GenericEstimatePreviewV0
|
|
104
80
|
|
105
81
|
class GenericEstimateV0(GenericEstimatePreviewV0, WithLciaMixin, WithAltIdsMixin, title="Generic Estimate (Full)"):
|
106
82
|
"""
|
107
|
-
|
83
|
+
Full Generic Estimate object.
|
108
84
|
|
109
85
|
This is considered the most complete valid openEPD object for GenericEstimate. In addition to it, several related
|
110
86
|
models are defined, either with fewer fields (to be used in APIs for list requests) or with more relaxed structure
|