digitalhub 0.13.0b3__py3-none-any.whl → 0.14.9__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.
- digitalhub/__init__.py +3 -8
- digitalhub/context/api.py +43 -6
- digitalhub/context/builder.py +1 -5
- digitalhub/context/context.py +28 -13
- digitalhub/entities/_base/_base/entity.py +0 -15
- digitalhub/entities/_base/context/entity.py +1 -4
- digitalhub/entities/_base/entity/builder.py +5 -5
- digitalhub/entities/_base/entity/entity.py +0 -8
- digitalhub/entities/_base/executable/entity.py +195 -87
- digitalhub/entities/_base/material/entity.py +11 -23
- digitalhub/entities/_base/material/utils.py +28 -4
- digitalhub/entities/_base/runtime_entity/builder.py +53 -18
- digitalhub/entities/_base/unversioned/entity.py +1 -1
- digitalhub/entities/_base/versioned/entity.py +1 -1
- digitalhub/entities/_commons/enums.py +1 -31
- digitalhub/entities/_commons/metrics.py +64 -30
- digitalhub/entities/_commons/utils.py +119 -30
- digitalhub/entities/_constructors/_resources.py +151 -0
- digitalhub/entities/{_base/entity/_constructors → _constructors}/name.py +18 -0
- digitalhub/entities/_processors/base/crud.py +381 -0
- digitalhub/entities/_processors/base/import_export.py +118 -0
- digitalhub/entities/_processors/base/processor.py +299 -0
- digitalhub/entities/_processors/base/special_ops.py +104 -0
- digitalhub/entities/_processors/context/crud.py +652 -0
- digitalhub/entities/_processors/context/import_export.py +242 -0
- digitalhub/entities/_processors/context/material.py +123 -0
- digitalhub/entities/_processors/context/processor.py +400 -0
- digitalhub/entities/_processors/context/special_ops.py +476 -0
- digitalhub/entities/_processors/processors.py +12 -0
- digitalhub/entities/_processors/utils.py +38 -102
- digitalhub/entities/artifact/crud.py +58 -22
- digitalhub/entities/artifact/utils.py +28 -13
- digitalhub/entities/builders.py +2 -0
- digitalhub/entities/dataitem/crud.py +63 -20
- digitalhub/entities/dataitem/table/entity.py +27 -22
- digitalhub/entities/dataitem/utils.py +82 -32
- digitalhub/entities/function/_base/entity.py +3 -6
- digitalhub/entities/function/crud.py +55 -24
- digitalhub/entities/model/_base/entity.py +62 -20
- digitalhub/entities/model/crud.py +59 -23
- digitalhub/entities/model/mlflow/utils.py +29 -20
- digitalhub/entities/model/utils.py +28 -13
- digitalhub/entities/project/_base/builder.py +0 -6
- digitalhub/entities/project/_base/entity.py +337 -164
- digitalhub/entities/project/_base/spec.py +4 -4
- digitalhub/entities/project/crud.py +28 -71
- digitalhub/entities/project/utils.py +7 -3
- digitalhub/entities/run/_base/builder.py +0 -4
- digitalhub/entities/run/_base/entity.py +70 -63
- digitalhub/entities/run/crud.py +79 -26
- digitalhub/entities/secret/_base/entity.py +1 -5
- digitalhub/entities/secret/crud.py +31 -28
- digitalhub/entities/task/_base/builder.py +0 -4
- digitalhub/entities/task/_base/entity.py +5 -5
- digitalhub/entities/task/_base/models.py +13 -16
- digitalhub/entities/task/crud.py +61 -29
- digitalhub/entities/trigger/_base/entity.py +1 -5
- digitalhub/entities/trigger/crud.py +89 -30
- digitalhub/entities/workflow/_base/entity.py +3 -8
- digitalhub/entities/workflow/crud.py +55 -24
- digitalhub/factory/entity.py +283 -0
- digitalhub/factory/enums.py +18 -0
- digitalhub/factory/registry.py +197 -0
- digitalhub/factory/runtime.py +44 -0
- digitalhub/factory/utils.py +3 -54
- digitalhub/runtimes/_base.py +2 -2
- digitalhub/stores/client/{dhcore/api_builder.py → api_builder.py} +3 -3
- digitalhub/stores/client/builder.py +19 -31
- digitalhub/stores/client/client.py +322 -0
- digitalhub/stores/client/configurator.py +408 -0
- digitalhub/stores/client/enums.py +50 -0
- digitalhub/stores/client/{dhcore/error_parser.py → error_parser.py} +0 -4
- digitalhub/stores/client/header_manager.py +61 -0
- digitalhub/stores/client/http_handler.py +152 -0
- digitalhub/stores/client/{_base/key_builder.py → key_builder.py} +14 -14
- digitalhub/stores/client/params_builder.py +330 -0
- digitalhub/stores/client/response_processor.py +102 -0
- digitalhub/stores/client/utils.py +35 -0
- digitalhub/stores/{credentials → configurator}/api.py +5 -9
- digitalhub/stores/configurator/configurator.py +123 -0
- digitalhub/stores/{credentials → configurator}/enums.py +27 -10
- digitalhub/stores/configurator/handler.py +213 -0
- digitalhub/stores/{credentials → configurator}/ini_module.py +31 -22
- digitalhub/stores/data/_base/store.py +0 -20
- digitalhub/stores/data/api.py +5 -7
- digitalhub/stores/data/builder.py +53 -27
- digitalhub/stores/data/local/store.py +0 -103
- digitalhub/stores/data/remote/store.py +0 -4
- digitalhub/stores/data/s3/configurator.py +39 -77
- digitalhub/stores/data/s3/store.py +57 -37
- digitalhub/stores/data/sql/configurator.py +66 -46
- digitalhub/stores/data/sql/store.py +171 -104
- digitalhub/stores/readers/data/factory.py +0 -8
- digitalhub/stores/readers/data/pandas/reader.py +9 -19
- digitalhub/utils/file_utils.py +0 -17
- digitalhub/utils/generic_utils.py +1 -14
- digitalhub/utils/git_utils.py +0 -8
- digitalhub/utils/io_utils.py +0 -12
- digitalhub/utils/store_utils.py +44 -0
- {digitalhub-0.13.0b3.dist-info → digitalhub-0.14.9.dist-info}/METADATA +5 -4
- {digitalhub-0.13.0b3.dist-info → digitalhub-0.14.9.dist-info}/RECORD +112 -113
- {digitalhub-0.13.0b3.dist-info → digitalhub-0.14.9.dist-info}/WHEEL +1 -1
- digitalhub/entities/_commons/types.py +0 -9
- digitalhub/entities/_processors/base.py +0 -531
- digitalhub/entities/_processors/context.py +0 -1299
- digitalhub/entities/task/_base/utils.py +0 -22
- digitalhub/factory/factory.py +0 -381
- digitalhub/stores/client/_base/api_builder.py +0 -34
- digitalhub/stores/client/_base/client.py +0 -243
- digitalhub/stores/client/_base/params_builder.py +0 -34
- digitalhub/stores/client/api.py +0 -36
- digitalhub/stores/client/dhcore/client.py +0 -613
- digitalhub/stores/client/dhcore/configurator.py +0 -675
- digitalhub/stores/client/dhcore/enums.py +0 -34
- digitalhub/stores/client/dhcore/key_builder.py +0 -62
- digitalhub/stores/client/dhcore/models.py +0 -40
- digitalhub/stores/client/dhcore/params_builder.py +0 -278
- digitalhub/stores/client/dhcore/utils.py +0 -94
- digitalhub/stores/client/local/api_builder.py +0 -116
- digitalhub/stores/client/local/client.py +0 -573
- digitalhub/stores/client/local/enums.py +0 -15
- digitalhub/stores/client/local/key_builder.py +0 -62
- digitalhub/stores/client/local/params_builder.py +0 -120
- digitalhub/stores/credentials/__init__.py +0 -3
- digitalhub/stores/credentials/configurator.py +0 -210
- digitalhub/stores/credentials/handler.py +0 -176
- digitalhub/stores/credentials/store.py +0 -81
- digitalhub/stores/data/enums.py +0 -15
- digitalhub/stores/data/s3/utils.py +0 -78
- /digitalhub/entities/{_base/entity/_constructors → _constructors}/__init__.py +0 -0
- /digitalhub/entities/{_base/entity/_constructors → _constructors}/metadata.py +0 -0
- /digitalhub/entities/{_base/entity/_constructors → _constructors}/spec.py +0 -0
- /digitalhub/entities/{_base/entity/_constructors → _constructors}/status.py +0 -0
- /digitalhub/entities/{_base/entity/_constructors → _constructors}/uuid.py +0 -0
- /digitalhub/{stores/client/_base → entities/_processors/base}/__init__.py +0 -0
- /digitalhub/{stores/client/dhcore → entities/_processors/context}/__init__.py +0 -0
- /digitalhub/stores/{client/local → configurator}/__init__.py +0 -0
- {digitalhub-0.13.0b3.dist-info → digitalhub-0.14.9.dist-info}/licenses/AUTHORS +0 -0
- {digitalhub-0.13.0b3.dist-info → digitalhub-0.14.9.dist-info}/licenses/LICENSE +0 -0
|
@@ -7,8 +7,8 @@ from __future__ import annotations
|
|
|
7
7
|
import typing
|
|
8
8
|
|
|
9
9
|
from digitalhub.entities._commons.enums import EntityTypes
|
|
10
|
-
from digitalhub.entities._processors.
|
|
11
|
-
from digitalhub.entities.
|
|
10
|
+
from digitalhub.entities._processors.processors import context_processor
|
|
11
|
+
from digitalhub.entities.model.utils import eval_source, process_kwargs
|
|
12
12
|
from digitalhub.utils.types import SourcesOrListOfSources
|
|
13
13
|
|
|
14
14
|
if typing.TYPE_CHECKING:
|
|
@@ -131,7 +131,6 @@ def get_model(
|
|
|
131
131
|
identifier: str,
|
|
132
132
|
project: str | None = None,
|
|
133
133
|
entity_id: str | None = None,
|
|
134
|
-
**kwargs,
|
|
135
134
|
) -> Model:
|
|
136
135
|
"""
|
|
137
136
|
Get object from backend.
|
|
@@ -144,8 +143,6 @@ def get_model(
|
|
|
144
143
|
Project name.
|
|
145
144
|
entity_id : str
|
|
146
145
|
Entity ID.
|
|
147
|
-
**kwargs : dict
|
|
148
|
-
Parameters to pass to the API call.
|
|
149
146
|
|
|
150
147
|
Returns
|
|
151
148
|
-------
|
|
@@ -167,14 +164,12 @@ def get_model(
|
|
|
167
164
|
entity_type=ENTITY_TYPE,
|
|
168
165
|
project=project,
|
|
169
166
|
entity_id=entity_id,
|
|
170
|
-
**kwargs,
|
|
171
167
|
)
|
|
172
168
|
|
|
173
169
|
|
|
174
170
|
def get_model_versions(
|
|
175
171
|
identifier: str,
|
|
176
172
|
project: str | None = None,
|
|
177
|
-
**kwargs,
|
|
178
173
|
) -> list[Model]:
|
|
179
174
|
"""
|
|
180
175
|
Get object versions from backend.
|
|
@@ -185,8 +180,6 @@ def get_model_versions(
|
|
|
185
180
|
Entity key (store://...) or entity name.
|
|
186
181
|
project : str
|
|
187
182
|
Project name.
|
|
188
|
-
**kwargs : dict
|
|
189
|
-
Parameters to pass to the API call.
|
|
190
183
|
|
|
191
184
|
Returns
|
|
192
185
|
-------
|
|
@@ -206,11 +199,20 @@ def get_model_versions(
|
|
|
206
199
|
identifier=identifier,
|
|
207
200
|
entity_type=ENTITY_TYPE,
|
|
208
201
|
project=project,
|
|
209
|
-
**kwargs,
|
|
210
202
|
)
|
|
211
203
|
|
|
212
204
|
|
|
213
|
-
def list_models(
|
|
205
|
+
def list_models(
|
|
206
|
+
project: str,
|
|
207
|
+
q: str | None = None,
|
|
208
|
+
name: str | None = None,
|
|
209
|
+
kind: str | None = None,
|
|
210
|
+
user: str | None = None,
|
|
211
|
+
state: str | None = None,
|
|
212
|
+
created: str | None = None,
|
|
213
|
+
updated: str | None = None,
|
|
214
|
+
versions: str | None = None,
|
|
215
|
+
) -> list[Model]:
|
|
214
216
|
"""
|
|
215
217
|
List all latest version objects from backend.
|
|
216
218
|
|
|
@@ -218,8 +220,22 @@ def list_models(project: str, **kwargs) -> list[Model]:
|
|
|
218
220
|
----------
|
|
219
221
|
project : str
|
|
220
222
|
Project name.
|
|
221
|
-
|
|
222
|
-
|
|
223
|
+
q : str
|
|
224
|
+
Query string to filter objects.
|
|
225
|
+
name : str
|
|
226
|
+
Object name.
|
|
227
|
+
kind : str
|
|
228
|
+
Kind of the object.
|
|
229
|
+
user : str
|
|
230
|
+
User that created the object.
|
|
231
|
+
state : str
|
|
232
|
+
Object state.
|
|
233
|
+
created : str
|
|
234
|
+
Creation date filter.
|
|
235
|
+
updated : str
|
|
236
|
+
Update date filter.
|
|
237
|
+
versions : str
|
|
238
|
+
Object version, default is latest.
|
|
223
239
|
|
|
224
240
|
Returns
|
|
225
241
|
-------
|
|
@@ -233,18 +249,36 @@ def list_models(project: str, **kwargs) -> list[Model]:
|
|
|
233
249
|
return context_processor.list_context_entities(
|
|
234
250
|
project=project,
|
|
235
251
|
entity_type=ENTITY_TYPE,
|
|
236
|
-
|
|
252
|
+
q=q,
|
|
253
|
+
name=name,
|
|
254
|
+
kind=kind,
|
|
255
|
+
user=user,
|
|
256
|
+
state=state,
|
|
257
|
+
created=created,
|
|
258
|
+
updated=updated,
|
|
259
|
+
versions=versions,
|
|
237
260
|
)
|
|
238
261
|
|
|
239
262
|
|
|
240
|
-
def import_model(
|
|
263
|
+
def import_model(
|
|
264
|
+
file: str | None = None,
|
|
265
|
+
key: str | None = None,
|
|
266
|
+
reset_id: bool = False,
|
|
267
|
+
context: str | None = None,
|
|
268
|
+
) -> Model:
|
|
241
269
|
"""
|
|
242
|
-
Import object from a YAML file
|
|
270
|
+
Import an object from a YAML file or from a storage key.
|
|
243
271
|
|
|
244
272
|
Parameters
|
|
245
273
|
----------
|
|
246
274
|
file : str
|
|
247
|
-
Path to YAML file.
|
|
275
|
+
Path to the YAML file.
|
|
276
|
+
key : str
|
|
277
|
+
Entity key (store://...).
|
|
278
|
+
reset_id : bool
|
|
279
|
+
Flag to determine if the ID of executable entities should be reset.
|
|
280
|
+
context : str
|
|
281
|
+
Project name to use for context resolution.
|
|
248
282
|
|
|
249
283
|
Returns
|
|
250
284
|
-------
|
|
@@ -255,7 +289,12 @@ def import_model(file: str) -> Model:
|
|
|
255
289
|
--------
|
|
256
290
|
>>> obj = import_model("my-model.yaml")
|
|
257
291
|
"""
|
|
258
|
-
return context_processor.import_context_entity(
|
|
292
|
+
return context_processor.import_context_entity(
|
|
293
|
+
file,
|
|
294
|
+
key,
|
|
295
|
+
reset_id,
|
|
296
|
+
context,
|
|
297
|
+
)
|
|
259
298
|
|
|
260
299
|
|
|
261
300
|
def load_model(file: str) -> Model:
|
|
@@ -311,7 +350,6 @@ def delete_model(
|
|
|
311
350
|
entity_id: str | None = None,
|
|
312
351
|
delete_all_versions: bool = False,
|
|
313
352
|
cascade: bool = True,
|
|
314
|
-
**kwargs,
|
|
315
353
|
) -> dict:
|
|
316
354
|
"""
|
|
317
355
|
Delete object from backend.
|
|
@@ -325,11 +363,10 @@ def delete_model(
|
|
|
325
363
|
entity_id : str
|
|
326
364
|
Entity ID.
|
|
327
365
|
delete_all_versions : bool
|
|
328
|
-
Delete all versions of the named entity.
|
|
366
|
+
Delete all versions of the named entity.
|
|
367
|
+
If True, use entity name instead of entity key as identifier.
|
|
329
368
|
cascade : bool
|
|
330
369
|
Cascade delete.
|
|
331
|
-
**kwargs : dict
|
|
332
|
-
Parameters to pass to the API call.
|
|
333
370
|
|
|
334
371
|
Returns
|
|
335
372
|
-------
|
|
@@ -353,5 +390,4 @@ def delete_model(
|
|
|
353
390
|
entity_id=entity_id,
|
|
354
391
|
delete_all_versions=delete_all_versions,
|
|
355
392
|
cascade=cascade,
|
|
356
|
-
**kwargs,
|
|
357
393
|
)
|
|
@@ -53,10 +53,13 @@ def from_mlflow_run(run_id: str) -> dict:
|
|
|
53
53
|
# Extract spec
|
|
54
54
|
data = run.data
|
|
55
55
|
parameters = data.params
|
|
56
|
-
source_path = urlparse(run.info.artifact_uri).path
|
|
56
|
+
source_path = urlparse(run.info.artifact_uri).path + "/model"
|
|
57
57
|
model_uri = f"runs:/{run_id}/model"
|
|
58
58
|
model = mlflow.pyfunc.load_model(model_uri=model_uri)
|
|
59
|
-
|
|
59
|
+
try:
|
|
60
|
+
model_config = model.model_config
|
|
61
|
+
except Exception:
|
|
62
|
+
model_config = {}
|
|
60
63
|
flavor = None
|
|
61
64
|
for f in model.metadata.flavors:
|
|
62
65
|
if f != "python_function":
|
|
@@ -64,27 +67,33 @@ def from_mlflow_run(run_id: str) -> dict:
|
|
|
64
67
|
break
|
|
65
68
|
|
|
66
69
|
# Extract signature
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
try:
|
|
71
|
+
mlflow_signature = model.metadata.signature
|
|
72
|
+
signature = Signature(
|
|
73
|
+
inputs=mlflow_signature.inputs.to_json() if mlflow_signature.inputs else None,
|
|
74
|
+
outputs=mlflow_signature.outputs.to_json() if mlflow_signature.outputs else None,
|
|
75
|
+
params=mlflow_signature.params.to_json() if mlflow_signature.params else None,
|
|
76
|
+
).to_dict()
|
|
77
|
+
except Exception:
|
|
78
|
+
signature = None
|
|
73
79
|
|
|
74
80
|
# Extract datasets
|
|
75
81
|
datasets = []
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
try:
|
|
83
|
+
if run.inputs and run.inputs.dataset_inputs:
|
|
84
|
+
datasets = [
|
|
85
|
+
Dataset(
|
|
86
|
+
name=d.dataset.name,
|
|
87
|
+
digest=d.dataset.digest,
|
|
88
|
+
profile=d.dataset.profile,
|
|
89
|
+
dataset_schema=d.dataset.schema,
|
|
90
|
+
source=d.dataset.source,
|
|
91
|
+
source_type=d.dataset.source_type,
|
|
92
|
+
).to_dict()
|
|
93
|
+
for d in run.inputs.dataset_inputs
|
|
94
|
+
]
|
|
95
|
+
except Exception:
|
|
96
|
+
datasets = []
|
|
88
97
|
|
|
89
98
|
# Create model params
|
|
90
99
|
model_params = {}
|
|
@@ -6,25 +6,32 @@ from __future__ import annotations
|
|
|
6
6
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
|
-
from digitalhub.entities._base.entity._constructors.uuid import build_uuid
|
|
10
9
|
from digitalhub.entities._base.material.utils import build_log_path_from_source, eval_local_source
|
|
11
10
|
from digitalhub.entities._commons.enums import EntityTypes
|
|
11
|
+
from digitalhub.entities._constructors.uuid import build_uuid
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def eval_source(
|
|
15
15
|
source: str | list[str] | None = None,
|
|
16
16
|
) -> Any:
|
|
17
17
|
"""
|
|
18
|
-
Evaluate
|
|
18
|
+
Evaluate whether the source is local or remote.
|
|
19
|
+
|
|
20
|
+
Determines if the provided source(s) reference local files or
|
|
21
|
+
remote resources. This evaluation affects how the model
|
|
22
|
+
will be processed and stored.
|
|
19
23
|
|
|
20
24
|
Parameters
|
|
21
25
|
----------
|
|
22
|
-
source : str
|
|
23
|
-
|
|
26
|
+
source : str, list[str], or None
|
|
27
|
+
The source specification(s) to evaluate. Can be a single
|
|
28
|
+
source string, a list of source strings, or None.
|
|
24
29
|
|
|
25
30
|
Returns
|
|
26
31
|
-------
|
|
27
|
-
|
|
32
|
+
Any
|
|
33
|
+
The result of the local source evaluation, indicating
|
|
34
|
+
whether the source is local or remote.
|
|
28
35
|
"""
|
|
29
36
|
return eval_local_source(source)
|
|
30
37
|
|
|
@@ -37,25 +44,33 @@ def process_kwargs(
|
|
|
37
44
|
**kwargs,
|
|
38
45
|
) -> dict:
|
|
39
46
|
"""
|
|
40
|
-
Process
|
|
47
|
+
Process and enhance specification parameters for model creation.
|
|
48
|
+
|
|
49
|
+
Processes the keyword arguments for model specification, handling
|
|
50
|
+
path generation and UUID assignment. If no path is provided, generates
|
|
51
|
+
a unique path based on project, entity type, name, and source.
|
|
41
52
|
|
|
42
53
|
Parameters
|
|
43
54
|
----------
|
|
44
55
|
project : str
|
|
45
|
-
|
|
56
|
+
The name of the project containing the model.
|
|
46
57
|
name : str
|
|
47
|
-
|
|
48
|
-
source : str
|
|
49
|
-
|
|
58
|
+
The name of the model entity.
|
|
59
|
+
source : str or list[str]
|
|
60
|
+
The source specification(s) for the model content.
|
|
61
|
+
Can be a single source or multiple sources.
|
|
50
62
|
path : str
|
|
51
|
-
|
|
63
|
+
The destination path for the model entity.
|
|
64
|
+
If None, a path will be automatically generated.
|
|
52
65
|
**kwargs : dict
|
|
53
|
-
|
|
66
|
+
Additional specification parameters to be processed
|
|
67
|
+
and passed to the model creation.
|
|
54
68
|
|
|
55
69
|
Returns
|
|
56
70
|
-------
|
|
57
71
|
dict
|
|
58
|
-
|
|
72
|
+
The updated kwargs dictionary with processed path
|
|
73
|
+
and UUID information included.
|
|
59
74
|
"""
|
|
60
75
|
if path is None:
|
|
61
76
|
uuid = build_uuid()
|
|
@@ -29,7 +29,6 @@ class ProjectProjectBuilder(EntityBuilder):
|
|
|
29
29
|
kind: str,
|
|
30
30
|
description: str | None = None,
|
|
31
31
|
labels: list[str] | None = None,
|
|
32
|
-
local: bool = False,
|
|
33
32
|
config: dict | None = None,
|
|
34
33
|
context: str | None = None,
|
|
35
34
|
**kwargs,
|
|
@@ -47,8 +46,6 @@ class ProjectProjectBuilder(EntityBuilder):
|
|
|
47
46
|
Description of the object (human readable).
|
|
48
47
|
labels : list[str]
|
|
49
48
|
List of labels.
|
|
50
|
-
local : bool
|
|
51
|
-
If True, use local backend, if False use DHCore backend. Default to False.
|
|
52
49
|
config : dict
|
|
53
50
|
DHCore environment configuration.
|
|
54
51
|
context : str
|
|
@@ -80,7 +77,6 @@ class ProjectProjectBuilder(EntityBuilder):
|
|
|
80
77
|
metadata=metadata,
|
|
81
78
|
spec=spec,
|
|
82
79
|
status=status,
|
|
83
|
-
local=local,
|
|
84
80
|
)
|
|
85
81
|
|
|
86
82
|
def from_dict(self, obj: dict, validate: bool = True) -> Project:
|
|
@@ -120,7 +116,6 @@ class ProjectProjectBuilder(EntityBuilder):
|
|
|
120
116
|
"""
|
|
121
117
|
name = self.build_name(obj.get("name"))
|
|
122
118
|
kind = obj.get("kind")
|
|
123
|
-
local = obj.get("local", False)
|
|
124
119
|
metadata = self.build_metadata(**obj.get("metadata", {}))
|
|
125
120
|
spec = self.build_spec(validate=validate, **obj.get("spec", {}))
|
|
126
121
|
status = self.build_status(**obj.get("status", {}))
|
|
@@ -132,5 +127,4 @@ class ProjectProjectBuilder(EntityBuilder):
|
|
|
132
127
|
"spec": spec,
|
|
133
128
|
"status": status,
|
|
134
129
|
"user": user,
|
|
135
|
-
"local": local,
|
|
136
130
|
}
|