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.
Files changed (48) hide show
  1. cognite_toolkit/_cdf.py +8 -0
  2. cognite_toolkit/_cdf_tk/commands/__init__.py +2 -2
  3. cognite_toolkit/_cdf_tk/commands/_purge.py +27 -28
  4. cognite_toolkit/_cdf_tk/commands/_upload.py +5 -1
  5. cognite_toolkit/_cdf_tk/commands/about.py +221 -0
  6. cognite_toolkit/_cdf_tk/commands/clean.py +11 -13
  7. cognite_toolkit/_cdf_tk/commands/deploy.py +9 -17
  8. cognite_toolkit/_cdf_tk/commands/dump_resource.py +6 -4
  9. cognite_toolkit/_cdf_tk/commands/pull.py +6 -19
  10. cognite_toolkit/_cdf_tk/cruds/_base_cruds.py +7 -25
  11. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +3 -6
  12. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +4 -6
  13. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +4 -12
  14. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +19 -36
  15. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +4 -10
  16. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/data_organization.py +4 -12
  17. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +16 -41
  18. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +5 -15
  19. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +8 -21
  20. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +6 -22
  21. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +5 -15
  22. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/hosted_extractors.py +12 -26
  23. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +3 -6
  24. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +3 -14
  25. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +4 -8
  26. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +4 -8
  27. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +3 -6
  28. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +15 -34
  29. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +2 -5
  30. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py +3 -6
  31. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +5 -13
  32. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +4 -19
  33. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py +20 -37
  34. cognite_toolkit/_cdf_tk/cruds/_worker.py +13 -30
  35. cognite_toolkit/_cdf_tk/feature_flags.py +1 -1
  36. cognite_toolkit/_cdf_tk/storageio/_base.py +23 -0
  37. cognite_toolkit/_cdf_tk/storageio/_file_content.py +4 -0
  38. cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +42 -1
  39. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  40. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  41. cognite_toolkit/_resources/cdf.toml +1 -1
  42. cognite_toolkit/_version.py +1 -1
  43. {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/METADATA +1 -1
  44. {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/RECORD +47 -47
  45. cognite_toolkit/_cdf_tk/commands/featureflag.py +0 -27
  46. {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/WHEEL +0 -0
  47. {cognite_toolkit-0.7.10.dist-info → cognite_toolkit-0.7.12.dist-info}/entry_points.txt +0 -0
  48. {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, SpaceApplyList, SpaceList]):
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, ContainerApplyList, ContainerList]):
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, ViewApplyList, ViewList]):
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, DataModelApplyList, DataModelList]):
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: DataModelApplyList) -> DataModelList:
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: DataModelApplyList) -> DataModelList:
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, NodeApplyList, NodeList]):
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: NodeApplyList) -> NodeApplyResultList:
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: NodeApplyList) -> NodeApplyResultList:
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: GraphQLDataModelWriteList) -> list[DMLApplyResult]:
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: GraphQLDataModelWriteList) -> list[DMLApplyResult]:
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: GraphQLDataModelWriteList) -> list[GraphQLDataModelWrite]:
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, EdgeApplyList, EdgeList]):
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: EdgeApplyList) -> EdgeApplyResultList:
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: EdgeApplyList) -> EdgeApplyResultList:
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: ExtractionPipelineWriteList) -> ExtractionPipelineList:
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: ExtractionPipelineConfigWriteList) -> ExtractionPipelineConfigList:
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: ExtractionPipelineConfigWriteList) -> ExtractionPipelineConfigList:
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: ExtractionPipelineConfigWriteList) -> ExtractionPipelineConfigList:
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, APMConfigWriteList, APMConfigList]):
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: APMConfigWriteList) -> NodeApplyResultList:
85
+ def create(self, items: Sequence[APMConfigWrite]) -> NodeApplyResultList:
89
86
  result = self.client.data_modeling.instances.apply(
90
- nodes=items.as_nodes(), auto_create_direct_relations=True, replace=False
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: APMConfigWriteList) -> NodeApplyResultList:
97
+ def update(self, items: Sequence[APMConfigWrite]) -> NodeApplyResultList:
101
98
  result = self.client.data_modeling.instances.apply(
102
- nodes=items.as_nodes(), auto_create_direct_relations=True, replace=True
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: InfieldLocationConfigList) -> list[InstanceResult]:
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: InfieldLocationConfigList) -> Sized:
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: FileMetadataWriteList) -> FileMetadataList:
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: FileMetadataWriteList) -> FileMetadataList:
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: ExtendableCogniteFileApplyList) -> NodeApplyResultList:
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: ExtendableCogniteFileApplyList) -> NodeApplyResultList:
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, FunctionWriteList, FunctionList]):
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: FunctionWriteList) -> FunctionList:
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: FunctionScheduleWriteList) -> FunctionSchedulesList:
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: FunctionScheduleWriteList) -> dict[str, int]:
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 {}