cognite-toolkit 0.7.44__py3-none-any.whl → 0.7.46__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 (192) hide show
  1. cognite_toolkit/_cdf_tk/apps/_download_app.py +1 -1
  2. cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
  3. cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
  4. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +19 -3
  5. cognite_toolkit/_cdf_tk/client/api/assets.py +31 -19
  6. cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
  7. cognite_toolkit/_cdf_tk/client/api/events.py +32 -18
  8. cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
  9. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +48 -17
  10. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
  11. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
  12. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
  13. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
  14. cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
  15. cognite_toolkit/_cdf_tk/client/api/infield.py +7 -7
  16. cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
  17. cognite_toolkit/_cdf_tk/client/api/legacy/canvas.py +2 -2
  18. cognite_toolkit/_cdf_tk/client/api/legacy/charts.py +1 -1
  19. cognite_toolkit/_cdf_tk/client/api/legacy/extended_data_modeling.py +1 -1
  20. cognite_toolkit/_cdf_tk/client/api/legacy/extended_files.py +2 -2
  21. cognite_toolkit/_cdf_tk/client/api/legacy/extended_raw.py +1 -1
  22. cognite_toolkit/_cdf_tk/client/api/legacy/extended_timeseries.py +2 -2
  23. cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +1 -1
  24. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/capabilities.py +1 -1
  25. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/data_postprocessing.py +1 -1
  26. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/frames.py +1 -1
  27. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/locations.py +1 -1
  28. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/maps.py +1 -1
  29. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/robots.py +1 -1
  30. cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +1 -1
  31. cognite_toolkit/_cdf_tk/client/api/migration.py +1 -1
  32. cognite_toolkit/_cdf_tk/client/api/project.py +1 -1
  33. cognite_toolkit/_cdf_tk/client/api/raw.py +39 -9
  34. cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
  35. cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
  36. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +45 -9
  37. cognite_toolkit/_cdf_tk/client/api/streams.py +1 -1
  38. cognite_toolkit/_cdf_tk/client/api/three_d.py +11 -11
  39. cognite_toolkit/_cdf_tk/client/api/timeseries.py +32 -18
  40. cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
  41. cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
  42. cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
  43. cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
  44. cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
  45. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +105 -35
  46. cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +5 -7
  47. cognite_toolkit/_cdf_tk/client/http_client/_exception.py +10 -1
  48. cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
  49. cognite_toolkit/_cdf_tk/client/request_classes/filters.py +38 -0
  50. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/agent.py +1 -1
  51. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/annotation.py +1 -1
  52. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/asset.py +1 -1
  53. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_constraints.py +1 -1
  54. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_container.py +1 -1
  55. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_data_model.py +1 -1
  56. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_data_types.py +1 -1
  57. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_indexes.py +1 -1
  58. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_instance.py +1 -1
  59. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_references.py +1 -1
  60. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_space.py +1 -1
  61. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_view.py +1 -1
  62. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_view_property.py +1 -1
  63. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/dataset.py +1 -1
  64. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/event.py +1 -1
  65. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/extraction_pipeline.py +1 -1
  66. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/filemetadata.py +1 -1
  67. cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
  68. cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +61 -0
  69. cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
  70. cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
  71. cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
  72. cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
  73. cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
  74. cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +59 -0
  75. cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
  76. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_destination.py +1 -1
  77. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_job.py +1 -1
  78. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_mapping.py +1 -1
  79. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_auth.py +1 -1
  80. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_base.py +2 -2
  81. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_certificate.py +1 -1
  82. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_eventhub.py +1 -1
  83. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_kafka.py +1 -1
  84. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_mqtt.py +1 -1
  85. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_rest.py +1 -1
  86. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/identifiers.py +1 -1
  87. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/label.py +1 -1
  88. cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
  89. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/canvas.py +1 -1
  90. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/charts.py +1 -1
  91. cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +77 -0
  92. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/raw.py +1 -1
  93. cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +43 -0
  94. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
  95. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
  96. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
  97. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
  98. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
  99. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
  100. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +60 -0
  101. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +53 -0
  102. cognite_toolkit/_cdf_tk/client/resource_classes/search_config_resource.py +54 -0
  103. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/securitycategory.py +1 -1
  104. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/sequence.py +1 -1
  105. cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
  106. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/simulator_model.py +1 -1
  107. cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
  108. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +6 -5
  109. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/timeseries.py +1 -1
  110. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/transformation.py +1 -1
  111. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow.py +1 -1
  112. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow_trigger.py +1 -1
  113. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow_version.py +1 -1
  114. cognite_toolkit/_cdf_tk/client/testing.py +20 -2
  115. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +5 -5
  116. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
  117. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +6 -6
  118. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +6 -6
  119. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
  120. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +1 -1
  121. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +8 -8
  122. cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
  123. cognite_toolkit/_cdf_tk/commands/_purge.py +1 -1
  124. cognite_toolkit/_cdf_tk/commands/build_cmd.py +1 -1
  125. cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
  126. cognite_toolkit/_cdf_tk/commands/run.py +1 -1
  127. cognite_toolkit/_cdf_tk/cruds/__init__.py +5 -1
  128. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +3 -3
  129. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  130. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +2 -2
  131. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +11 -27
  132. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
  133. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
  134. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
  135. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +4 -4
  136. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +7 -14
  137. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +1 -1
  138. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
  139. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +2 -2
  140. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
  141. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
  142. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +1 -1
  143. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
  144. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
  145. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +2 -2
  146. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +6 -13
  147. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +1 -1
  148. cognite_toolkit/_cdf_tk/feature_flags.py +4 -0
  149. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
  150. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  151. cognite_toolkit/_cdf_tk/storageio/_applications.py +3 -3
  152. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +21 -27
  153. cognite_toolkit/_cdf_tk/storageio/_file_content.py +2 -2
  154. cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
  155. cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
  156. cognite_toolkit/_cdf_tk/utils/interactive_select.py +5 -5
  157. cognite_toolkit/_cdf_tk/utils/useful_types2.py +3 -3
  158. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  159. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  160. cognite_toolkit/_resources/cdf.toml +1 -1
  161. cognite_toolkit/_version.py +1 -1
  162. {cognite_toolkit-0.7.44.dist-info → cognite_toolkit-0.7.46.dist-info}/METADATA +3 -3
  163. {cognite_toolkit-0.7.44.dist-info → cognite_toolkit-0.7.46.dist-info}/RECORD +192 -152
  164. {cognite_toolkit-0.7.44.dist-info → cognite_toolkit-0.7.46.dist-info}/WHEEL +2 -2
  165. /cognite_toolkit/_cdf_tk/client/{data_classes → request_classes}/__init__.py +0 -0
  166. /cognite_toolkit/_cdf_tk/client/{data_classes/legacy → resource_classes}/__init__.py +0 -0
  167. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/base.py +0 -0
  168. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
  169. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +0 -0
  170. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/__init__.py +0 -0
  171. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/__init__.py +0 -0
  172. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +0 -0
  173. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +0 -0
  174. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/apm_config_v1.py +0 -0
  175. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extendable_cognite_file.py +0 -0
  176. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetadata.py +0 -0
  177. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetdata.py +0 -0
  178. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_timeseries.py +0 -0
  179. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/functions.py +0 -0
  180. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/graphql_data_models.py +0 -0
  181. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/instances.py +0 -0
  182. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/location_filters.py +0 -0
  183. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/migration.py +0 -0
  184. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/pending_instances_ids.py +0 -0
  185. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/project.py +0 -0
  186. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/raw.py +0 -0
  187. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/robotics.py +0 -0
  188. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/search_config.py +0 -0
  189. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/sequences.py +0 -0
  190. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/streamlit_.py +0 -0
  191. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/three_d.py +0 -0
  192. {cognite_toolkit-0.7.44.dist-info → cognite_toolkit-0.7.46.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,14 @@
1
- from collections.abc import Sequence
1
+ from collections.abc import Iterable, Sequence
2
2
  from typing import Any, Literal
3
3
 
4
4
  from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
5
5
  from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
- from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
7
- from cognite_toolkit._cdf_tk.client.data_classes.simulator_model import SimulatorModelRequest, SimulatorModelResponse
8
- from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, SuccessResponse2
6
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.simulator_model import (
9
+ SimulatorModelRequest,
10
+ SimulatorModelResponse,
11
+ )
9
12
 
10
13
 
11
14
  class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequest, SimulatorModelResponse]):
@@ -27,7 +30,9 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
27
30
  },
28
31
  )
29
32
 
30
- def _page_response(self, response: SuccessResponse2) -> PagedResponse[SimulatorModelResponse]:
33
+ def _validate_page_response(
34
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
35
+ ) -> PagedResponse[SimulatorModelResponse]:
31
36
  return PagedResponse[SimulatorModelResponse].model_validate_json(response.body)
32
37
 
33
38
  def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
@@ -44,16 +49,24 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
44
49
  """
45
50
  return self._request_item_response(items, "create")
46
51
 
47
- def retrieve(self, items: Sequence[InternalOrExternalId]) -> list[SimulatorModelResponse]:
52
+ def retrieve(
53
+ self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False
54
+ ) -> list[SimulatorModelResponse]:
48
55
  """Retrieve simulator models from CDF.
49
56
 
50
57
  Args:
51
58
  items: List of InternalOrExternalId objects to retrieve.
59
+ ignore_unknown_ids: Whether to ignore unknown IDs.
52
60
 
53
61
  Returns:
54
62
  List of retrieved SimulatorModelResponse objects.
55
63
  """
56
- return self._request_item_response(items, method="retrieve")
64
+ if ignore_unknown_ids:
65
+ # The CDF API does not support ignore_unknown_ids for simulator models,
66
+ # so we implement it with retries here.
67
+ return self._request_item_split_retries(items, method="retrieve")
68
+ else:
69
+ return self._request_item_response(items, method="retrieve")
57
70
 
58
71
  def update(
59
72
  self, items: Sequence[SimulatorModelRequest], mode: Literal["patch", "replace"] = "replace"
@@ -77,7 +90,7 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
77
90
  """
78
91
  self._request_no_response(items, "delete")
79
92
 
80
- def iterate(
93
+ def paginate(
81
94
  self,
82
95
  simulator_external_ids: list[str] | None = None,
83
96
  limit: int = 100,
@@ -97,12 +110,35 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
97
110
  if simulator_external_ids:
98
111
  filter_["simulatorExternalIds"] = simulator_external_ids
99
112
 
100
- return self._iterate(
113
+ return self._paginate(
101
114
  cursor=cursor,
102
115
  limit=limit,
103
116
  body={"filter": filter_ or None},
104
117
  )
105
118
 
119
+ def iterate(
120
+ self,
121
+ simulator_external_ids: list[str] | None = None,
122
+ limit: int = 100,
123
+ ) -> Iterable[list[SimulatorModelResponse]]:
124
+ """Iterate over simulator models in CDF.
125
+
126
+ Args:
127
+ simulator_external_ids: Filter by simulator external IDs.
128
+ limit: Maximum number of items to return per page.
129
+
130
+ Returns:
131
+ Iterable of lists of SimulatorModelResponse objects.
132
+ """
133
+ filter_: dict[str, Any] = {}
134
+ if simulator_external_ids:
135
+ filter_["simulatorExternalIds"] = simulator_external_ids
136
+
137
+ return self._iterate(
138
+ limit=limit,
139
+ body={"filter": filter_ or None},
140
+ )
141
+
106
142
  def list(
107
143
  self,
108
144
  limit: int | None = 100,
@@ -4,12 +4,12 @@ from pydantic import TypeAdapter
4
4
  from rich.console import Console
5
5
 
6
6
  from cognite_toolkit._cdf_tk.client.cdf_client.responses import PagedResponse
7
- from cognite_toolkit._cdf_tk.client.data_classes.streams import StreamRequest, StreamResponse
8
7
  from cognite_toolkit._cdf_tk.client.http_client import (
9
8
  HTTPClient,
10
9
  ItemsRequest2,
11
10
  RequestMessage2,
12
11
  )
12
+ from cognite_toolkit._cdf_tk.client.resource_classes.streams import StreamRequest, StreamResponse
13
13
 
14
14
 
15
15
  class StreamsAPI:
@@ -6,19 +6,19 @@ from pydantic import TypeAdapter
6
6
  from rich.console import Console
7
7
 
8
8
  from cognite_toolkit._cdf_tk.client.cdf_client.responses import PagedResponse
9
- from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalId
10
- from cognite_toolkit._cdf_tk.client.data_classes.three_d import (
9
+ from cognite_toolkit._cdf_tk.client.http_client import (
10
+ HTTPClient,
11
+ ItemsRequest2,
12
+ RequestMessage2,
13
+ )
14
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalId
15
+ from cognite_toolkit._cdf_tk.client.resource_classes.three_d import (
11
16
  AssetMappingClassicRequest,
12
17
  AssetMappingDMRequest,
13
18
  AssetMappingResponse,
14
19
  ThreeDModelClassicRequest,
15
20
  ThreeDModelResponse,
16
21
  )
17
- from cognite_toolkit._cdf_tk.client.http_client import (
18
- HTTPClient,
19
- ItemsRequest2,
20
- RequestMessage2,
21
- )
22
22
  from cognite_toolkit._cdf_tk.utils.collection import chunker_sequence
23
23
  from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
24
24
 
@@ -76,7 +76,7 @@ class ThreeDModelAPI:
76
76
  )
77
77
  responses.raise_for_status()
78
78
 
79
- def iterate(
79
+ def paginate(
80
80
  self,
81
81
  published: bool | None = None,
82
82
  include_revision_info: bool = False,
@@ -122,7 +122,7 @@ class ThreeDModelAPI:
122
122
  )
123
123
  if request_limit <= 0:
124
124
  break
125
- page = self.iterate(
125
+ page = self.paginate(
126
126
  published=published,
127
127
  include_revision_info=include_revision_info,
128
128
  limit=request_limit,
@@ -287,7 +287,7 @@ class ThreeDAssetMappingAPI:
287
287
  responses.raise_for_status()
288
288
  return None
289
289
 
290
- def iterate(
290
+ def paginate(
291
291
  self,
292
292
  model_id: int,
293
293
  revision_id: int,
@@ -361,7 +361,7 @@ class ThreeDAssetMappingAPI:
361
361
  )
362
362
  if request_limit <= 0:
363
363
  break
364
- page = self.iterate(
364
+ page = self.paginate(
365
365
  model_id=model_id,
366
366
  revision_id=revision_id,
367
367
  asset_ids=asset_ids,
@@ -1,11 +1,12 @@
1
- from collections.abc import Sequence
2
- from typing import Any, Literal
1
+ from collections.abc import Iterable, Sequence
2
+ from typing import Literal
3
3
 
4
4
  from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
5
5
  from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
- from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
7
- from cognite_toolkit._cdf_tk.client.data_classes.timeseries import TimeSeriesRequest, TimeSeriesResponse
8
- from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, SuccessResponse2
6
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
7
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
9
+ from cognite_toolkit._cdf_tk.client.resource_classes.timeseries import TimeSeriesRequest, TimeSeriesResponse
9
10
 
10
11
 
11
12
  class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, TimeSeriesResponse]):
@@ -27,7 +28,9 @@ class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, Time
27
28
  },
28
29
  )
29
30
 
30
- def _page_response(self, response: SuccessResponse2) -> PagedResponse[TimeSeriesResponse]:
31
+ def _validate_page_response(
32
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
33
+ ) -> PagedResponse[TimeSeriesResponse]:
31
34
  return PagedResponse[TimeSeriesResponse].model_validate_json(response.body)
32
35
 
33
36
  def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
@@ -81,34 +84,45 @@ class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, Time
81
84
  """
82
85
  self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
83
86
 
84
- def iterate(
87
+ def paginate(
85
88
  self,
86
- data_set_external_ids: list[str] | None = None,
87
- asset_subtree_external_ids: list[str] | None = None,
89
+ filter: ClassicFilter | None = None,
88
90
  limit: int = 100,
89
91
  cursor: str | None = None,
90
92
  ) -> PagedResponse[TimeSeriesResponse]:
91
93
  """Iterate over all time series in CDF.
92
94
 
93
95
  Args:
94
- data_set_external_ids: Filter by data set external IDs.
95
- asset_subtree_external_ids: Filter by asset subtree external IDs.
96
+ filter: Filter by data set IDs and/or asset subtree IDs.
96
97
  limit: Maximum number of items to return.
97
98
  cursor: Cursor for pagination.
98
99
 
99
100
  Returns:
100
101
  PagedResponse of TimeSeriesResponse objects.
101
102
  """
102
- filter_: dict[str, Any] = {}
103
- if asset_subtree_external_ids:
104
- filter_["assetSubtreeIds"] = [{"externalId": ext_id} for ext_id in asset_subtree_external_ids]
105
- if data_set_external_ids:
106
- filter_["dataSetIds"] = [{"externalId": ds_id} for ds_id in data_set_external_ids]
103
+ return self._paginate(
104
+ cursor=cursor,
105
+ limit=limit,
106
+ body={"filter": filter.dump() if filter else None},
107
+ )
107
108
 
109
+ def iterate(
110
+ self,
111
+ filter: ClassicFilter | None = None,
112
+ limit: int | None = 100,
113
+ ) -> Iterable[list[TimeSeriesResponse]]:
114
+ """Iterate over all time series in CDF.
115
+
116
+ Args:
117
+ filter: Filter by data set IDs and/or asset subtree IDs.
118
+ limit: Maximum number of items to return per page.
119
+
120
+ Returns:
121
+ Iterable of lists of TimeSeriesResponse objects.
122
+ """
108
123
  return self._iterate(
109
- cursor=cursor,
110
124
  limit=limit,
111
- body={"filter": filter_ or None},
125
+ body={"filter": filter.dump() if filter else None},
112
126
  )
113
127
 
114
128
  def list(
@@ -4,7 +4,7 @@ from cognite.client import CogniteClient
4
4
  from cognite.client.data_classes.capabilities import _CAPABILITY_CLASS_BY_NAME, AllScope, Capability
5
5
  from cognite.client.data_classes.iam import TokenInspection
6
6
 
7
- from cognite_toolkit._cdf_tk.client.data_classes.capabilities import scope_intersection, scope_union
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.capabilities import scope_intersection, scope_union
8
8
  from cognite_toolkit._cdf_tk.utils import humanize_collection
9
9
 
10
10
  _ACL_CLASS_BY_CLASS_NAME = {cap.__name__: cap for cap in _CAPABILITY_CLASS_BY_NAME.values()}
@@ -0,0 +1,146 @@
1
+ from collections.abc import Iterable, Sequence
2
+ from typing import Any, Literal
3
+
4
+ from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
5
+ from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
7
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
9
+ from cognite_toolkit._cdf_tk.client.resource_classes.transformation import TransformationRequest, TransformationResponse
10
+
11
+
12
+ class TransformationsAPI(CDFResourceAPI[InternalOrExternalId, TransformationRequest, TransformationResponse]):
13
+ def __init__(self, http_client: HTTPClient) -> None:
14
+ super().__init__(
15
+ http_client=http_client,
16
+ method_endpoint_map={
17
+ "create": Endpoint(method="POST", path="/transformations", item_limit=1000),
18
+ "retrieve": Endpoint(method="POST", path="/transformations/byids", item_limit=1000),
19
+ "update": Endpoint(method="POST", path="/transformations/update", item_limit=1000),
20
+ "delete": Endpoint(method="POST", path="/transformations/delete", item_limit=1000),
21
+ "list": Endpoint(method="POST", path="/transformations/filter", item_limit=1000),
22
+ },
23
+ )
24
+
25
+ def _validate_page_response(
26
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
27
+ ) -> PagedResponse[TransformationResponse]:
28
+ return PagedResponse[TransformationResponse].model_validate_json(response.body)
29
+
30
+ def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
31
+ return ResponseItems[InternalOrExternalId].model_validate_json(response.body)
32
+
33
+ def create(self, items: Sequence[TransformationRequest]) -> list[TransformationResponse]:
34
+ """Create transformations in CDF.
35
+
36
+ Args:
37
+ items: List of TransformationRequest objects to create.
38
+ Returns:
39
+ List of created TransformationResponse objects.
40
+ """
41
+ return self._request_item_response(items, "create")
42
+
43
+ def retrieve(
44
+ self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False, with_job_details: bool = False
45
+ ) -> list[TransformationResponse]:
46
+ """Retrieve transformations from CDF.
47
+
48
+ Args:
49
+ items: List of InternalOrExternalId objects to retrieve.
50
+ ignore_unknown_ids: Whether to ignore unknown IDs.
51
+ with_job_details: Whether the transformations will be returned with running job and last created job details.
52
+ Returns:
53
+ List of retrieved TransformationResponse objects.
54
+ """
55
+ return self._request_item_response(
56
+ items,
57
+ method="retrieve",
58
+ extra_body={"ignoreUnknownIds": ignore_unknown_ids, "withJobDetails": with_job_details},
59
+ )
60
+
61
+ def update(
62
+ self, items: Sequence[TransformationRequest], mode: Literal["patch", "replace"] = "replace"
63
+ ) -> list[TransformationResponse]:
64
+ """Update transformations in CDF.
65
+
66
+ Args:
67
+ items: List of TransformationRequest objects to update.
68
+ mode: Update mode, either "patch" or "replace".
69
+
70
+ Returns:
71
+ List of updated TransformationResponse objects.
72
+ """
73
+ return self._update(items, mode=mode)
74
+
75
+ def delete(self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False) -> None:
76
+ """Delete transformations from CDF.
77
+
78
+ Args:
79
+ items: List of InternalOrExternalId objects to delete.
80
+ ignore_unknown_ids: Whether to ignore unknown IDs.
81
+ """
82
+ self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
83
+
84
+ def paginate(
85
+ self,
86
+ filter: ClassicFilter | None = None,
87
+ is_public: bool | None = None,
88
+ limit: int = 100,
89
+ cursor: str | None = None,
90
+ ) -> PagedResponse[TransformationResponse]:
91
+ """Iterate over all transformations in CDF.
92
+
93
+ Args:
94
+ filter: Filter by data set IDs.
95
+ is_public: Filter by public status.
96
+ limit: Maximum number of items to return.
97
+ cursor: Cursor for pagination.
98
+
99
+ Returns:
100
+ PagedResponse of TransformationResponse objects.
101
+ """
102
+ filter_: dict[str, Any] = filter.dump() if filter else {}
103
+ if is_public is not None:
104
+ filter_["isPublic"] = is_public
105
+
106
+ return self._paginate(
107
+ cursor=cursor,
108
+ limit=limit,
109
+ body={"filter": filter_ or None},
110
+ )
111
+
112
+ def iterate(
113
+ self,
114
+ filter: ClassicFilter | None = None,
115
+ is_public: bool | None = None,
116
+ limit: int = 100,
117
+ ) -> Iterable[list[TransformationResponse]]:
118
+ """Iterate over all transformations in CDF.
119
+
120
+ Args:
121
+ filter: Filter by data set IDs.
122
+ is_public: Filter by public status.
123
+ limit: Maximum number of items to return per page.
124
+
125
+ Returns:
126
+ Iterable of lists of TransformationResponse objects.
127
+ """
128
+ filter_: dict[str, Any] = filter.dump() if filter else {}
129
+ if is_public is not None:
130
+ filter_["isPublic"] = is_public
131
+
132
+ return self._iterate(
133
+ limit=limit,
134
+ body={"filter": filter_ or None},
135
+ )
136
+
137
+ def list(
138
+ self,
139
+ limit: int | None = 100,
140
+ ) -> list[TransformationResponse]:
141
+ """List all transformations in CDF.
142
+
143
+ Returns:
144
+ List of TransformationResponse objects.
145
+ """
146
+ return self._list(limit=limit)
@@ -0,0 +1,128 @@
1
+ from collections.abc import Iterable, Sequence
2
+ from typing import Any
3
+
4
+ from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
5
+ from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.workflow_trigger import (
9
+ WorkflowTriggerRequest,
10
+ WorkflowTriggerResponse,
11
+ )
12
+
13
+
14
+ class WorkflowTriggersAPI(CDFResourceAPI[ExternalId, WorkflowTriggerRequest, WorkflowTriggerResponse]):
15
+ def __init__(self, http_client: HTTPClient) -> None:
16
+ super().__init__(
17
+ http_client=http_client,
18
+ method_endpoint_map={
19
+ "upsert": Endpoint(method="POST", path="/workflows/triggers", item_limit=1),
20
+ "delete": Endpoint(method="POST", path="/workflows/triggers/delete", item_limit=1),
21
+ "list": Endpoint(method="GET", path="/workflows/triggers", item_limit=1000),
22
+ },
23
+ )
24
+
25
+ def _validate_page_response(
26
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
27
+ ) -> PagedResponse[WorkflowTriggerResponse]:
28
+ return PagedResponse[WorkflowTriggerResponse].model_validate_json(response.body)
29
+
30
+ def _reference_response(self, response: SuccessResponse2) -> ResponseItems[ExternalId]:
31
+ return ResponseItems[ExternalId].model_validate_json(response.body)
32
+
33
+ def create(self, items: Sequence[WorkflowTriggerRequest]) -> list[WorkflowTriggerResponse]:
34
+ """Create or update workflow triggers in CDF.
35
+
36
+ Args:
37
+ items: List of WorkflowTriggerRequest objects to create or update.
38
+ Returns:
39
+ List of created/updated WorkflowTriggerResponse objects.
40
+ """
41
+ return self._request_item_response(items, "upsert")
42
+
43
+ # This is a duplicate of the create method, included to standardize the API interface.
44
+ def update(self, items: Sequence[WorkflowTriggerRequest]) -> list[WorkflowTriggerResponse]:
45
+ """Create or update workflow triggers in CDF.
46
+
47
+ Args:
48
+ items: List of WorkflowTriggerRequest objects to create or update.
49
+ Returns:
50
+ List of created/updated WorkflowTriggerResponse objects.
51
+ """
52
+ return self.create(items)
53
+
54
+ def delete(self, items: Sequence[ExternalId]) -> None:
55
+ """Delete workflow triggers from CDF.
56
+
57
+ Args:
58
+ items: List of ExternalId objects to delete.
59
+ """
60
+ self._request_no_response(items, "delete")
61
+
62
+ def paginate(
63
+ self,
64
+ workflow_external_id: str | None = None,
65
+ workflow_version: str | None = None,
66
+ limit: int = 100,
67
+ cursor: str | None = None,
68
+ ) -> PagedResponse[WorkflowTriggerResponse]:
69
+ """Iterate over all workflow triggers in CDF.
70
+
71
+ Args:
72
+ workflow_external_id: Filter by workflow external ID.
73
+ workflow_version: Filter by workflow version.
74
+ limit: Maximum number of items to return.
75
+ cursor: Cursor for pagination.
76
+
77
+ Returns:
78
+ PagedResponse of WorkflowTriggerResponse objects.
79
+ """
80
+ params: dict[str, Any] = {}
81
+ if workflow_external_id:
82
+ params["workflowExternalId"] = workflow_external_id
83
+ if workflow_version:
84
+ params["workflowVersion"] = workflow_version
85
+
86
+ return self._paginate(
87
+ cursor=cursor,
88
+ limit=limit,
89
+ params=params,
90
+ )
91
+
92
+ def iterate(
93
+ self,
94
+ workflow_external_id: str | None = None,
95
+ workflow_version: str | None = None,
96
+ limit: int = 100,
97
+ ) -> Iterable[list[WorkflowTriggerResponse]]:
98
+ """Iterate over all workflow triggers in CDF.
99
+
100
+ Args:
101
+ workflow_external_id: Filter by workflow external ID.
102
+ workflow_version: Filter by workflow version.
103
+ limit: Maximum number of items to return per page.
104
+
105
+ Returns:
106
+ Iterable of lists of WorkflowTriggerResponse objects.
107
+ """
108
+ params: dict[str, Any] = {}
109
+ if workflow_external_id:
110
+ params["workflowExternalId"] = workflow_external_id
111
+ if workflow_version:
112
+ params["workflowVersion"] = workflow_version
113
+
114
+ return self._iterate(
115
+ limit=limit,
116
+ params=params,
117
+ )
118
+
119
+ def list(
120
+ self,
121
+ limit: int | None = 100,
122
+ ) -> list[WorkflowTriggerResponse]:
123
+ """List all workflow triggers in CDF.
124
+
125
+ Returns:
126
+ List of WorkflowTriggerResponse objects.
127
+ """
128
+ return self._list(limit=limit)