cognite-toolkit 0.7.10__py3-none-any.whl → 0.7.12__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.
- cognite_toolkit/_cdf.py +8 -0
- cognite_toolkit/_cdf_tk/commands/__init__.py +2 -2
- cognite_toolkit/_cdf_tk/commands/_purge.py +27 -28
- cognite_toolkit/_cdf_tk/commands/_upload.py +5 -1
- cognite_toolkit/_cdf_tk/commands/about.py +221 -0
- cognite_toolkit/_cdf_tk/commands/clean.py +11 -13
- cognite_toolkit/_cdf_tk/commands/deploy.py +9 -17
- cognite_toolkit/_cdf_tk/commands/dump_resource.py +6 -4
- cognite_toolkit/_cdf_tk/commands/pull.py +6 -19
- cognite_toolkit/_cdf_tk/cruds/_base_cruds.py +7 -25
- cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +3 -6
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +4 -6
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +4 -12
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +19 -36
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +4 -10
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/data_organization.py +4 -12
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +16 -41
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +5 -15
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +8 -21
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +6 -22
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +5 -15
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/hosted_extractors.py +12 -26
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +3 -6
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +3 -14
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +4 -8
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +4 -8
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +3 -6
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +15 -34
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +2 -5
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py +3 -6
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +5 -13
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +4 -19
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py +20 -37
- cognite_toolkit/_cdf_tk/cruds/_worker.py +13 -30
- cognite_toolkit/_cdf_tk/feature_flags.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/_base.py +23 -0
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +4 -0
- cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +42 -1
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
- cognite_toolkit/_resources/cdf.toml +1 -1
- cognite_toolkit/_version.py +1 -1
- {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/METADATA +1 -1
- {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/RECORD +47 -47
- cognite_toolkit/_cdf_tk/commands/featureflag.py +0 -27
- {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/WHEEL +0 -0
- {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/entry_points.txt +0 -0
- {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/licenses/LICENSE +0 -0
|
@@ -34,32 +34,26 @@ from cognite.client.data_classes.capabilities import (
|
|
|
34
34
|
from cognite.client.data_classes.data_modeling import (
|
|
35
35
|
Container,
|
|
36
36
|
ContainerApply,
|
|
37
|
-
ContainerApplyList,
|
|
38
37
|
ContainerList,
|
|
39
38
|
DataModel,
|
|
40
39
|
DataModelApply,
|
|
41
|
-
DataModelApplyList,
|
|
42
40
|
DataModelList,
|
|
43
41
|
DirectRelation,
|
|
44
42
|
Edge,
|
|
45
43
|
EdgeApply,
|
|
46
|
-
EdgeApplyList,
|
|
47
44
|
EdgeApplyResultList,
|
|
48
45
|
EdgeList,
|
|
49
46
|
MappedProperty,
|
|
50
47
|
Node,
|
|
51
48
|
NodeApply,
|
|
52
|
-
NodeApplyList,
|
|
53
49
|
NodeApplyResultList,
|
|
54
50
|
NodeList,
|
|
55
51
|
RequiresConstraint,
|
|
56
52
|
Space,
|
|
57
53
|
SpaceApply,
|
|
58
|
-
SpaceApplyList,
|
|
59
54
|
SpaceList,
|
|
60
55
|
View,
|
|
61
56
|
ViewApply,
|
|
62
|
-
ViewApplyList,
|
|
63
57
|
ViewList,
|
|
64
58
|
)
|
|
65
59
|
from cognite.client.data_classes.data_modeling.graphql import DMLApplyResult
|
|
@@ -83,7 +77,6 @@ from cognite_toolkit._cdf_tk.client.data_classes.graphql_data_models import (
|
|
|
83
77
|
GraphQLDataModel,
|
|
84
78
|
GraphQLDataModelList,
|
|
85
79
|
GraphQLDataModelWrite,
|
|
86
|
-
GraphQLDataModelWriteList,
|
|
87
80
|
)
|
|
88
81
|
from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING, HAS_DATA_FILTER_LIMIT
|
|
89
82
|
from cognite_toolkit._cdf_tk.cruds._base_cruds import (
|
|
@@ -118,13 +111,11 @@ from .auth import GroupAllScopedCRUD
|
|
|
118
111
|
|
|
119
112
|
|
|
120
113
|
@final
|
|
121
|
-
class SpaceCRUD(ResourceContainerCRUD[str, SpaceApply, Space
|
|
114
|
+
class SpaceCRUD(ResourceContainerCRUD[str, SpaceApply, Space]):
|
|
122
115
|
item_name = "nodes and edges"
|
|
123
116
|
folder_name = "data_modeling"
|
|
124
117
|
resource_cls = Space
|
|
125
118
|
resource_write_cls = SpaceApply
|
|
126
|
-
list_write_cls = SpaceApplyList
|
|
127
|
-
list_cls = SpaceList
|
|
128
119
|
kind = "Space"
|
|
129
120
|
yaml_cls = SpaceYAML
|
|
130
121
|
dependencies = frozenset({GroupAllScopedCRUD})
|
|
@@ -249,13 +240,11 @@ class SpaceCRUD(ResourceContainerCRUD[str, SpaceApply, Space, SpaceApplyList, Sp
|
|
|
249
240
|
yield instances.as_ids()
|
|
250
241
|
|
|
251
242
|
|
|
252
|
-
class ContainerCRUD(ResourceContainerCRUD[ContainerId, ContainerApply, Container
|
|
243
|
+
class ContainerCRUD(ResourceContainerCRUD[ContainerId, ContainerApply, Container]):
|
|
253
244
|
item_name = "nodes and edges"
|
|
254
245
|
folder_name = "data_modeling"
|
|
255
246
|
resource_cls = Container
|
|
256
247
|
resource_write_cls = ContainerApply
|
|
257
|
-
list_cls = ContainerList
|
|
258
|
-
list_write_cls = ContainerApplyList
|
|
259
248
|
kind = "Container"
|
|
260
249
|
dependencies = frozenset({SpaceCRUD})
|
|
261
250
|
yaml_cls = ContainerYAML
|
|
@@ -514,12 +503,10 @@ class ContainerCRUD(ResourceContainerCRUD[ContainerId, ContainerApply, Container
|
|
|
514
503
|
return sanitize_filename(f"{id.space}_{id.external_id}")
|
|
515
504
|
|
|
516
505
|
|
|
517
|
-
class ViewCRUD(ResourceCRUD[ViewId, ViewApply, View
|
|
506
|
+
class ViewCRUD(ResourceCRUD[ViewId, ViewApply, View]):
|
|
518
507
|
folder_name = "data_modeling"
|
|
519
508
|
resource_cls = View
|
|
520
509
|
resource_write_cls = ViewApply
|
|
521
|
-
list_cls = ViewList
|
|
522
|
-
list_write_cls = ViewApplyList
|
|
523
510
|
kind = "View"
|
|
524
511
|
dependencies = frozenset({SpaceCRUD, ContainerCRUD})
|
|
525
512
|
yaml_cls = ViewYAML
|
|
@@ -855,12 +842,10 @@ class ViewCRUD(ResourceCRUD[ViewId, ViewApply, View, ViewApplyList, ViewList]):
|
|
|
855
842
|
|
|
856
843
|
|
|
857
844
|
@final
|
|
858
|
-
class DataModelCRUD(ResourceCRUD[DataModelId, DataModelApply, DataModel
|
|
845
|
+
class DataModelCRUD(ResourceCRUD[DataModelId, DataModelApply, DataModel]):
|
|
859
846
|
folder_name = "data_modeling"
|
|
860
847
|
resource_cls = DataModel
|
|
861
848
|
resource_write_cls = DataModelApply
|
|
862
|
-
list_cls = DataModelList
|
|
863
|
-
list_write_cls = DataModelApplyList
|
|
864
849
|
kind = "DataModel"
|
|
865
850
|
dependencies = frozenset({SpaceCRUD, ViewCRUD})
|
|
866
851
|
yaml_cls = DataModelYAML
|
|
@@ -937,13 +922,13 @@ class DataModelCRUD(ResourceCRUD[DataModelId, DataModelApply, DataModel, DataMod
|
|
|
937
922
|
return diff_list_identifiable(local, cdf, get_identifier=dm_identifier)
|
|
938
923
|
return super().diff_list(local, cdf, json_path)
|
|
939
924
|
|
|
940
|
-
def create(self, items:
|
|
925
|
+
def create(self, items: Sequence[DataModelApply]) -> DataModelList:
|
|
941
926
|
return self.client.data_modeling.data_models.apply(items)
|
|
942
927
|
|
|
943
928
|
def retrieve(self, ids: SequenceNotStr[DataModelId]) -> DataModelList:
|
|
944
929
|
return self.client.data_modeling.data_models.retrieve(cast(Sequence, ids))
|
|
945
930
|
|
|
946
|
-
def update(self, items:
|
|
931
|
+
def update(self, items: Sequence[DataModelApply]) -> DataModelList:
|
|
947
932
|
updated = self.create(items)
|
|
948
933
|
# There is a bug in the API not raising an exception if view is removed from a data model.
|
|
949
934
|
# So we check here that the update was fixed.
|
|
@@ -987,13 +972,11 @@ class DataModelCRUD(ResourceCRUD[DataModelId, DataModelApply, DataModel, DataMod
|
|
|
987
972
|
|
|
988
973
|
|
|
989
974
|
@final
|
|
990
|
-
class NodeCRUD(ResourceContainerCRUD[NodeId, NodeApply, Node
|
|
975
|
+
class NodeCRUD(ResourceContainerCRUD[NodeId, NodeApply, Node]):
|
|
991
976
|
item_name = "nodes"
|
|
992
977
|
folder_name = "data_modeling"
|
|
993
978
|
resource_cls = Node
|
|
994
979
|
resource_write_cls = NodeApply
|
|
995
|
-
list_cls = NodeList
|
|
996
|
-
list_write_cls = NodeApplyList
|
|
997
980
|
kind = "Node"
|
|
998
981
|
yaml_cls = NodeYAML
|
|
999
982
|
dependencies = frozenset({SpaceCRUD, ViewCRUD, ContainerCRUD})
|
|
@@ -1094,7 +1077,7 @@ class NodeCRUD(ResourceContainerCRUD[NodeId, NodeApply, Node, NodeApplyList, Nod
|
|
|
1094
1077
|
|
|
1095
1078
|
return dumped
|
|
1096
1079
|
|
|
1097
|
-
def create(self, items:
|
|
1080
|
+
def create(self, items: Sequence[NodeApply]) -> NodeApplyResultList:
|
|
1098
1081
|
result = self.client.data_modeling.instances.apply(
|
|
1099
1082
|
# Note replace should never be relevant as Toolkit always checks whether the node exists before applying.
|
|
1100
1083
|
nodes=items,
|
|
@@ -1106,7 +1089,7 @@ class NodeCRUD(ResourceContainerCRUD[NodeId, NodeApply, Node, NodeApplyList, Nod
|
|
|
1106
1089
|
def retrieve(self, ids: SequenceNotStr[NodeId]) -> NodeList:
|
|
1107
1090
|
return self.client.data_modeling.instances.retrieve(nodes=cast(Sequence, ids), sources=self.view_id).nodes
|
|
1108
1091
|
|
|
1109
|
-
def update(self, items:
|
|
1092
|
+
def update(self, items: Sequence[NodeApply]) -> NodeApplyResultList:
|
|
1110
1093
|
result = self.client.data_modeling.instances.apply(
|
|
1111
1094
|
nodes=items, auto_create_direct_relations=True, replace=False
|
|
1112
1095
|
)
|
|
@@ -1143,16 +1126,10 @@ class NodeCRUD(ResourceContainerCRUD[NodeId, NodeApply, Node, NodeApplyList, Nod
|
|
|
1143
1126
|
return sanitize_filename(f"{id.space}_{id.external_id}")
|
|
1144
1127
|
|
|
1145
1128
|
|
|
1146
|
-
class GraphQLCRUD(
|
|
1147
|
-
ResourceContainerCRUD[
|
|
1148
|
-
DataModelId, GraphQLDataModelWrite, GraphQLDataModel, GraphQLDataModelWriteList, GraphQLDataModelList
|
|
1149
|
-
]
|
|
1150
|
-
):
|
|
1129
|
+
class GraphQLCRUD(ResourceContainerCRUD[DataModelId, GraphQLDataModelWrite, GraphQLDataModel]):
|
|
1151
1130
|
folder_name = "data_modeling"
|
|
1152
1131
|
resource_cls = GraphQLDataModel
|
|
1153
1132
|
resource_write_cls = GraphQLDataModelWrite
|
|
1154
|
-
list_cls = GraphQLDataModelList
|
|
1155
|
-
list_write_cls = GraphQLDataModelWriteList
|
|
1156
1133
|
kind = "GraphQLSchema"
|
|
1157
1134
|
dependencies = frozenset({SpaceCRUD, ContainerCRUD})
|
|
1158
1135
|
item_name = "views"
|
|
@@ -1266,7 +1243,7 @@ class GraphQLCRUD(
|
|
|
1266
1243
|
dumped["graphqlFile"] = match.group(3)
|
|
1267
1244
|
return dumped
|
|
1268
1245
|
|
|
1269
|
-
def create(self, items:
|
|
1246
|
+
def create(self, items: Sequence[GraphQLDataModelWrite]) -> list[DMLApplyResult]:
|
|
1270
1247
|
creation_order = self._topological_sort(items)
|
|
1271
1248
|
|
|
1272
1249
|
created_list: list[DMLApplyResult] = []
|
|
@@ -1297,7 +1274,7 @@ class GraphQLCRUD(
|
|
|
1297
1274
|
result = self.client.data_modeling.data_models.retrieve(list(ids), inline_views=False)
|
|
1298
1275
|
return GraphQLDataModelList([GraphQLDataModel._load(d.dump()) for d in result])
|
|
1299
1276
|
|
|
1300
|
-
def update(self, items:
|
|
1277
|
+
def update(self, items: Sequence[GraphQLDataModelWrite]) -> list[DMLApplyResult]:
|
|
1301
1278
|
return self.create(items)
|
|
1302
1279
|
|
|
1303
1280
|
def delete(self, ids: SequenceNotStr[DataModelId]) -> int:
|
|
@@ -1322,7 +1299,7 @@ class GraphQLCRUD(
|
|
|
1322
1299
|
def drop_data(self, ids: SequenceNotStr[DataModelId]) -> int:
|
|
1323
1300
|
return self.delete(ids)
|
|
1324
1301
|
|
|
1325
|
-
def _topological_sort(self, items:
|
|
1302
|
+
def _topological_sort(self, items: Sequence[GraphQLDataModelWrite]) -> list[GraphQLDataModelWrite]:
|
|
1326
1303
|
to_sort = {item.as_id(): item for item in items}
|
|
1327
1304
|
dependencies: dict[DataModelId, set[DataModelId]] = {}
|
|
1328
1305
|
for item in items:
|
|
@@ -1345,13 +1322,11 @@ class GraphQLCRUD(
|
|
|
1345
1322
|
|
|
1346
1323
|
|
|
1347
1324
|
@final
|
|
1348
|
-
class EdgeCRUD(ResourceContainerCRUD[EdgeId, EdgeApply, Edge
|
|
1325
|
+
class EdgeCRUD(ResourceContainerCRUD[EdgeId, EdgeApply, Edge]):
|
|
1349
1326
|
item_name = "edges"
|
|
1350
1327
|
folder_name = "data_modeling"
|
|
1351
1328
|
resource_cls = Edge
|
|
1352
1329
|
resource_write_cls = EdgeApply
|
|
1353
|
-
list_cls = EdgeList
|
|
1354
|
-
list_write_cls = EdgeApplyList
|
|
1355
1330
|
kind = "Edge"
|
|
1356
1331
|
yaml_cls = EdgeYAML
|
|
1357
1332
|
dependencies = frozenset({SpaceCRUD, ViewCRUD, ContainerCRUD, NodeCRUD})
|
|
@@ -1442,7 +1417,7 @@ class EdgeCRUD(ResourceContainerCRUD[EdgeId, EdgeApply, Edge, EdgeApplyList, Edg
|
|
|
1442
1417
|
|
|
1443
1418
|
return dumped
|
|
1444
1419
|
|
|
1445
|
-
def create(self, items:
|
|
1420
|
+
def create(self, items: Sequence[EdgeApply]) -> EdgeApplyResultList:
|
|
1446
1421
|
result = self.client.data_modeling.instances.apply(
|
|
1447
1422
|
edges=items, auto_create_direct_relations=True, replace=False
|
|
1448
1423
|
)
|
|
@@ -1451,7 +1426,7 @@ class EdgeCRUD(ResourceContainerCRUD[EdgeId, EdgeApply, Edge, EdgeApplyList, Edg
|
|
|
1451
1426
|
def retrieve(self, ids: SequenceNotStr[EdgeId]) -> EdgeList:
|
|
1452
1427
|
return self.client.data_modeling.instances.retrieve(nodes=cast(Sequence, ids)).edges
|
|
1453
1428
|
|
|
1454
|
-
def update(self, items:
|
|
1429
|
+
def update(self, items: Sequence[EdgeApply]) -> EdgeApplyResultList:
|
|
1455
1430
|
result = self.client.data_modeling.instances.apply(
|
|
1456
1431
|
edges=items, auto_create_direct_relations=False, replace=True
|
|
1457
1432
|
)
|
|
@@ -30,9 +30,7 @@ from cognite.client.data_classes.capabilities import (
|
|
|
30
30
|
from cognite.client.data_classes.extractionpipelines import (
|
|
31
31
|
ExtractionPipelineConfigList,
|
|
32
32
|
ExtractionPipelineConfigWrite,
|
|
33
|
-
ExtractionPipelineConfigWriteList,
|
|
34
33
|
ExtractionPipelineWrite,
|
|
35
|
-
ExtractionPipelineWriteList,
|
|
36
34
|
)
|
|
37
35
|
from cognite.client.exceptions import CogniteAPIError, CogniteDuplicatedError, CogniteNotFoundError
|
|
38
36
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
@@ -61,14 +59,10 @@ from .raw import RawDatabaseCRUD, RawTableCRUD
|
|
|
61
59
|
|
|
62
60
|
|
|
63
61
|
@final
|
|
64
|
-
class ExtractionPipelineCRUD(
|
|
65
|
-
ResourceCRUD[str, ExtractionPipelineWrite, ExtractionPipeline, ExtractionPipelineWriteList, ExtractionPipelineList]
|
|
66
|
-
):
|
|
62
|
+
class ExtractionPipelineCRUD(ResourceCRUD[str, ExtractionPipelineWrite, ExtractionPipeline]):
|
|
67
63
|
folder_name = "extraction_pipelines"
|
|
68
64
|
resource_cls = ExtractionPipeline
|
|
69
65
|
resource_write_cls = ExtractionPipelineWrite
|
|
70
|
-
list_cls = ExtractionPipelineList
|
|
71
|
-
list_write_cls = ExtractionPipelineWriteList
|
|
72
66
|
kind = "ExtractionPipeline"
|
|
73
67
|
dependencies = frozenset({DataSetsCRUD, RawDatabaseCRUD, RawTableCRUD, GroupAllScopedCRUD})
|
|
74
68
|
yaml_cls = ExtractionPipelineYAML
|
|
@@ -176,7 +170,7 @@ class ExtractionPipelineCRUD(
|
|
|
176
170
|
def retrieve(self, ids: SequenceNotStr[str]) -> ExtractionPipelineList:
|
|
177
171
|
return self.client.extraction_pipelines.retrieve_multiple(external_ids=ids, ignore_unknown_ids=True)
|
|
178
172
|
|
|
179
|
-
def update(self, items:
|
|
173
|
+
def update(self, items: Sequence[ExtractionPipelineWrite]) -> ExtractionPipelineList:
|
|
180
174
|
# Bug in SDK overload so need the ignore.
|
|
181
175
|
return self.client.extraction_pipelines.update(items, mode="replace") # type: ignore[call-overload]
|
|
182
176
|
|
|
@@ -217,15 +211,11 @@ class ExtractionPipelineConfigCRUD(
|
|
|
217
211
|
str,
|
|
218
212
|
ExtractionPipelineConfigWrite,
|
|
219
213
|
ExtractionPipelineConfig,
|
|
220
|
-
ExtractionPipelineConfigWriteList,
|
|
221
|
-
ExtractionPipelineConfigList,
|
|
222
214
|
]
|
|
223
215
|
):
|
|
224
216
|
folder_name = "extraction_pipelines"
|
|
225
217
|
resource_cls = ExtractionPipelineConfig
|
|
226
218
|
resource_write_cls = ExtractionPipelineConfigWrite
|
|
227
|
-
list_cls = ExtractionPipelineConfigList
|
|
228
|
-
list_write_cls = ExtractionPipelineConfigWriteList
|
|
229
219
|
kind = "Config"
|
|
230
220
|
dependencies = frozenset({ExtractionPipelineCRUD})
|
|
231
221
|
_doc_url = "Extraction-Pipelines-Config/operation/createExtPipeConfig"
|
|
@@ -345,18 +335,18 @@ class ExtractionPipelineConfigCRUD(
|
|
|
345
335
|
return diff_list_force_hashable(local, cdf)
|
|
346
336
|
return super().diff_list(local, cdf, json_path)
|
|
347
337
|
|
|
348
|
-
def _upsert(self, items:
|
|
338
|
+
def _upsert(self, items: Sequence[ExtractionPipelineConfigWrite]) -> ExtractionPipelineConfigList:
|
|
349
339
|
upserted = ExtractionPipelineConfigList([])
|
|
350
340
|
for item in items:
|
|
351
341
|
created = self.client.extraction_pipelines.config.create(item)
|
|
352
342
|
upserted.append(created)
|
|
353
343
|
return upserted
|
|
354
344
|
|
|
355
|
-
def create(self, items:
|
|
345
|
+
def create(self, items: Sequence[ExtractionPipelineConfigWrite]) -> ExtractionPipelineConfigList:
|
|
356
346
|
return self._upsert(items)
|
|
357
347
|
|
|
358
348
|
# configs cannot be updated, instead new revision is created
|
|
359
|
-
def update(self, items:
|
|
349
|
+
def update(self, items: Sequence[ExtractionPipelineConfigWrite]) -> ExtractionPipelineConfigList:
|
|
360
350
|
return self._upsert(items)
|
|
361
351
|
|
|
362
352
|
def retrieve(self, ids: SequenceNotStr[str]) -> ExtractionPipelineConfigList:
|
|
@@ -12,7 +12,6 @@ from cognite_toolkit._cdf_tk.client.data_classes.apm_config_v1 import (
|
|
|
12
12
|
APMConfig,
|
|
13
13
|
APMConfigList,
|
|
14
14
|
APMConfigWrite,
|
|
15
|
-
APMConfigWriteList,
|
|
16
15
|
)
|
|
17
16
|
from cognite_toolkit._cdf_tk.client.data_classes.infield import InfieldLocationConfig, InfieldLocationConfigList
|
|
18
17
|
from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceResult, NodeIdentifier
|
|
@@ -31,13 +30,11 @@ from .group_scoped import GroupResourceScopedCRUD
|
|
|
31
30
|
|
|
32
31
|
|
|
33
32
|
@final
|
|
34
|
-
class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig
|
|
33
|
+
class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig]):
|
|
35
34
|
folder_name = "cdf_applications"
|
|
36
35
|
filetypes = frozenset({"yaml", "yml"})
|
|
37
36
|
resource_cls = APMConfig
|
|
38
37
|
resource_write_cls = APMConfigWrite
|
|
39
|
-
list_cls = APMConfigList
|
|
40
|
-
list_write_cls = APMConfigWriteList
|
|
41
38
|
kind = "InfieldV1"
|
|
42
39
|
yaml_cls = InfieldV1YAML
|
|
43
40
|
dependencies = frozenset({DataSetsCRUD, AssetCRUD, SpaceCRUD, GroupAllScopedCRUD, GroupResourceScopedCRUD})
|
|
@@ -85,9 +82,9 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig, APMConfigWriteL
|
|
|
85
82
|
f"Install the infield options with cdf modules init/add to deploy it."
|
|
86
83
|
)
|
|
87
84
|
|
|
88
|
-
def create(self, items:
|
|
85
|
+
def create(self, items: Sequence[APMConfigWrite]) -> NodeApplyResultList:
|
|
89
86
|
result = self.client.data_modeling.instances.apply(
|
|
90
|
-
nodes=
|
|
87
|
+
nodes=[item.as_node() for item in items], auto_create_direct_relations=True, replace=False
|
|
91
88
|
)
|
|
92
89
|
return result.nodes
|
|
93
90
|
|
|
@@ -97,9 +94,9 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig, APMConfigWriteL
|
|
|
97
94
|
).nodes
|
|
98
95
|
return APMConfigList.from_nodes(result)
|
|
99
96
|
|
|
100
|
-
def update(self, items:
|
|
97
|
+
def update(self, items: Sequence[APMConfigWrite]) -> NodeApplyResultList:
|
|
101
98
|
result = self.client.data_modeling.instances.apply(
|
|
102
|
-
nodes=
|
|
99
|
+
nodes=[item.as_node() for item in items], auto_create_direct_relations=True, replace=True
|
|
103
100
|
)
|
|
104
101
|
return result.nodes
|
|
105
102
|
|
|
@@ -242,21 +239,11 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig, APMConfigWriteL
|
|
|
242
239
|
|
|
243
240
|
|
|
244
241
|
@final
|
|
245
|
-
class InFieldLocationConfigCRUD(
|
|
246
|
-
ResourceCRUD[
|
|
247
|
-
NodeIdentifier,
|
|
248
|
-
InfieldLocationConfig,
|
|
249
|
-
InfieldLocationConfig,
|
|
250
|
-
InfieldLocationConfigList,
|
|
251
|
-
InfieldLocationConfigList,
|
|
252
|
-
]
|
|
253
|
-
):
|
|
242
|
+
class InFieldLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InfieldLocationConfig, InfieldLocationConfig]):
|
|
254
243
|
folder_name = "cdf_applications"
|
|
255
244
|
filetypes = frozenset({"yaml", "yml"})
|
|
256
245
|
resource_cls = InfieldLocationConfig
|
|
257
246
|
resource_write_cls = InfieldLocationConfig
|
|
258
|
-
list_cls = InfieldLocationConfigList
|
|
259
|
-
list_write_cls = InfieldLocationConfigList
|
|
260
247
|
kind = "InFieldLocationConfig"
|
|
261
248
|
yaml_cls = InfieldLocationConfigYAML
|
|
262
249
|
dependencies = frozenset({SpaceCRUD, GroupAllScopedCRUD, GroupResourceScopedCRUD})
|
|
@@ -304,7 +291,7 @@ class InFieldLocationConfigCRUD(
|
|
|
304
291
|
|
|
305
292
|
return dumped
|
|
306
293
|
|
|
307
|
-
def create(self, items:
|
|
294
|
+
def create(self, items: Sequence[InfieldLocationConfig]) -> list[InstanceResult]:
|
|
308
295
|
created = self.client.infield.config.apply(items)
|
|
309
296
|
config_ids = {config.as_id() for config in items}
|
|
310
297
|
# We filter out all the data exploration configs that were created along with the infield location configs
|
|
@@ -314,7 +301,7 @@ class InFieldLocationConfigCRUD(
|
|
|
314
301
|
def retrieve(self, ids: SequenceNotStr[NodeIdentifier]) -> InfieldLocationConfigList:
|
|
315
302
|
return InfieldLocationConfigList(self.client.infield.config.retrieve(list(ids)))
|
|
316
303
|
|
|
317
|
-
def update(self, items:
|
|
304
|
+
def update(self, items: Sequence[InfieldLocationConfig]) -> Sized:
|
|
318
305
|
return self.create(items)
|
|
319
306
|
|
|
320
307
|
def delete(self, ids: SequenceNotStr[NodeIdentifier]) -> int:
|
|
@@ -21,7 +21,6 @@ from cognite.client.data_classes import (
|
|
|
21
21
|
FileMetadata,
|
|
22
22
|
FileMetadataList,
|
|
23
23
|
FileMetadataWrite,
|
|
24
|
-
FileMetadataWriteList,
|
|
25
24
|
)
|
|
26
25
|
from cognite.client.data_classes.capabilities import (
|
|
27
26
|
Capability,
|
|
@@ -37,7 +36,6 @@ from rich import print
|
|
|
37
36
|
from cognite_toolkit._cdf_tk.client.data_classes.extendable_cognite_file import (
|
|
38
37
|
ExtendableCogniteFile,
|
|
39
38
|
ExtendableCogniteFileApply,
|
|
40
|
-
ExtendableCogniteFileApplyList,
|
|
41
39
|
ExtendableCogniteFileList,
|
|
42
40
|
)
|
|
43
41
|
from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceContainerCRUD, ResourceCRUD
|
|
@@ -57,15 +55,11 @@ from .datamodel import SpaceCRUD, ViewCRUD
|
|
|
57
55
|
|
|
58
56
|
|
|
59
57
|
@final
|
|
60
|
-
class FileMetadataCRUD(
|
|
61
|
-
ResourceContainerCRUD[str, FileMetadataWrite, FileMetadata, FileMetadataWriteList, FileMetadataList]
|
|
62
|
-
):
|
|
58
|
+
class FileMetadataCRUD(ResourceContainerCRUD[str, FileMetadataWrite, FileMetadata]):
|
|
63
59
|
item_name = "file contents"
|
|
64
60
|
folder_name = "files"
|
|
65
61
|
resource_cls = FileMetadata
|
|
66
62
|
resource_write_cls = FileMetadataWrite
|
|
67
|
-
list_cls = FileMetadataList
|
|
68
|
-
list_write_cls = FileMetadataWriteList
|
|
69
63
|
yaml_cls = FileMetadataYAML
|
|
70
64
|
kind = "FileMetadata"
|
|
71
65
|
dependencies = frozenset({DataSetsCRUD, GroupAllScopedCRUD, LabelCRUD, AssetCRUD})
|
|
@@ -147,7 +141,7 @@ class FileMetadataCRUD(
|
|
|
147
141
|
dumped["assetExternalIds"] = self.client.lookup.assets.external_id(asset_ids)
|
|
148
142
|
return dumped
|
|
149
143
|
|
|
150
|
-
def create(self, items:
|
|
144
|
+
def create(self, items: Sequence[FileMetadataWrite]) -> FileMetadataList:
|
|
151
145
|
created = FileMetadataList([])
|
|
152
146
|
for meta in items:
|
|
153
147
|
try:
|
|
@@ -160,7 +154,7 @@ class FileMetadataCRUD(
|
|
|
160
154
|
def retrieve(self, ids: SequenceNotStr[str]) -> FileMetadataList:
|
|
161
155
|
return self.client.files.retrieve_multiple(external_ids=ids, ignore_unknown_ids=True)
|
|
162
156
|
|
|
163
|
-
def update(self, items:
|
|
157
|
+
def update(self, items: Sequence[FileMetadataWrite]) -> FileMetadataList:
|
|
164
158
|
return self.client.files.update(items, mode="replace")
|
|
165
159
|
|
|
166
160
|
def delete(self, ids: str | int | SequenceNotStr[str | int] | None) -> int:
|
|
@@ -193,23 +187,13 @@ class FileMetadataCRUD(
|
|
|
193
187
|
|
|
194
188
|
|
|
195
189
|
@final
|
|
196
|
-
class CogniteFileCRUD(
|
|
197
|
-
ResourceContainerCRUD[
|
|
198
|
-
NodeId,
|
|
199
|
-
ExtendableCogniteFileApply,
|
|
200
|
-
ExtendableCogniteFile,
|
|
201
|
-
ExtendableCogniteFileApplyList,
|
|
202
|
-
ExtendableCogniteFileList,
|
|
203
|
-
]
|
|
204
|
-
):
|
|
190
|
+
class CogniteFileCRUD(ResourceContainerCRUD[NodeId, ExtendableCogniteFileApply, ExtendableCogniteFile]):
|
|
205
191
|
template_pattern = "$FILENAME"
|
|
206
192
|
item_name = "file contents"
|
|
207
193
|
folder_name = "files"
|
|
208
194
|
kind = "CogniteFile"
|
|
209
195
|
resource_cls = ExtendableCogniteFile
|
|
210
196
|
resource_write_cls = ExtendableCogniteFileApply
|
|
211
|
-
list_cls = ExtendableCogniteFileList
|
|
212
|
-
list_write_cls = ExtendableCogniteFileApplyList
|
|
213
197
|
yaml_cls = CogniteFileYAML
|
|
214
198
|
dependencies = frozenset({GroupAllScopedCRUD, SpaceCRUD, ViewCRUD})
|
|
215
199
|
|
|
@@ -289,7 +273,7 @@ class CogniteFileCRUD(
|
|
|
289
273
|
return diff_list_identifiable(local, cdf, get_identifier=dm_identifier)
|
|
290
274
|
return super().diff_list(local, cdf, json_path)
|
|
291
275
|
|
|
292
|
-
def create(self, items:
|
|
276
|
+
def create(self, items: Sequence[ExtendableCogniteFileApply]) -> NodeApplyResultList:
|
|
293
277
|
created = self.client.data_modeling.instances.apply(
|
|
294
278
|
nodes=items, replace=False, skip_on_version_conflict=True, auto_create_direct_relations=True
|
|
295
279
|
)
|
|
@@ -305,7 +289,7 @@ class CogniteFileCRUD(
|
|
|
305
289
|
)
|
|
306
290
|
return ExtendableCogniteFileList(items)
|
|
307
291
|
|
|
308
|
-
def update(self, items:
|
|
292
|
+
def update(self, items: Sequence[ExtendableCogniteFileApply]) -> NodeApplyResultList:
|
|
309
293
|
updated = self.client.data_modeling.instances.apply(nodes=items, replace=True)
|
|
310
294
|
return updated.nodes
|
|
311
295
|
|
|
@@ -12,9 +12,7 @@ from cognite.client.data_classes import (
|
|
|
12
12
|
FunctionSchedule,
|
|
13
13
|
FunctionSchedulesList,
|
|
14
14
|
FunctionScheduleWrite,
|
|
15
|
-
FunctionScheduleWriteList,
|
|
16
15
|
FunctionWrite,
|
|
17
|
-
FunctionWriteList,
|
|
18
16
|
)
|
|
19
17
|
from cognite.client.data_classes.capabilities import (
|
|
20
18
|
AllScope,
|
|
@@ -56,13 +54,11 @@ from .group_scoped import GroupResourceScopedCRUD
|
|
|
56
54
|
|
|
57
55
|
|
|
58
56
|
@final
|
|
59
|
-
class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function
|
|
57
|
+
class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function]):
|
|
60
58
|
support_drop = True
|
|
61
59
|
folder_name = "functions"
|
|
62
60
|
resource_cls = Function
|
|
63
61
|
resource_write_cls = FunctionWrite
|
|
64
|
-
list_cls = FunctionList
|
|
65
|
-
list_write_cls = FunctionWriteList
|
|
66
62
|
kind = "Function"
|
|
67
63
|
yaml_cls = FunctionsYAML
|
|
68
64
|
dependencies = frozenset({DataSetsCRUD, GroupAllScopedCRUD})
|
|
@@ -298,7 +294,7 @@ class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function, FunctionWriteList,
|
|
|
298
294
|
self.client.functions.activate()
|
|
299
295
|
return False
|
|
300
296
|
|
|
301
|
-
def create(self, items:
|
|
297
|
+
def create(self, items: Sequence[FunctionWrite]) -> FunctionList:
|
|
302
298
|
created = FunctionList([], cognite_client=self.client)
|
|
303
299
|
if not self._is_activated("create"):
|
|
304
300
|
return created
|
|
@@ -423,16 +419,10 @@ class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function, FunctionWriteList,
|
|
|
423
419
|
|
|
424
420
|
|
|
425
421
|
@final
|
|
426
|
-
class FunctionScheduleCRUD(
|
|
427
|
-
ResourceCRUD[
|
|
428
|
-
FunctionScheduleID, FunctionScheduleWrite, FunctionSchedule, FunctionScheduleWriteList, FunctionSchedulesList
|
|
429
|
-
]
|
|
430
|
-
):
|
|
422
|
+
class FunctionScheduleCRUD(ResourceCRUD[FunctionScheduleID, FunctionScheduleWrite, FunctionSchedule]):
|
|
431
423
|
folder_name = "functions"
|
|
432
424
|
resource_cls = FunctionSchedule
|
|
433
425
|
resource_write_cls = FunctionScheduleWrite
|
|
434
|
-
list_cls = FunctionSchedulesList
|
|
435
|
-
list_write_cls = FunctionScheduleWriteList
|
|
436
426
|
kind = "Schedule"
|
|
437
427
|
yaml_cls = FunctionScheduleYAML
|
|
438
428
|
dependencies = frozenset({FunctionCRUD, GroupResourceScopedCRUD, GroupAllScopedCRUD})
|
|
@@ -553,7 +543,7 @@ class FunctionScheduleCRUD(
|
|
|
553
543
|
)
|
|
554
544
|
return schedules
|
|
555
545
|
|
|
556
|
-
def create(self, items:
|
|
546
|
+
def create(self, items: Sequence[FunctionScheduleWrite]) -> FunctionSchedulesList:
|
|
557
547
|
created_list = FunctionSchedulesList([], cognite_client=self.client)
|
|
558
548
|
function_id_by_external_id = self._get_function_ids_by_external_id(items)
|
|
559
549
|
|
|
@@ -582,7 +572,7 @@ class FunctionScheduleCRUD(
|
|
|
582
572
|
created_list.append(created)
|
|
583
573
|
return created_list
|
|
584
574
|
|
|
585
|
-
def _get_function_ids_by_external_id(self, items:
|
|
575
|
+
def _get_function_ids_by_external_id(self, items: Sequence[FunctionScheduleWrite]) -> dict[str, int]:
|
|
586
576
|
functions_to_lookup = list({item.function_external_id for item in items if item.function_external_id})
|
|
587
577
|
if not functions_to_lookup:
|
|
588
578
|
return {}
|