cognite-toolkit 0.7.39__py3-none-any.whl → 0.7.51__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 (261) 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/apps/_migrate_app.py +6 -6
  4. cognite_toolkit/_cdf_tk/builders/_function.py +81 -9
  5. cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
  6. cognite_toolkit/_cdf_tk/client/_resource_base.py +187 -0
  7. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +37 -5
  8. cognite_toolkit/_cdf_tk/client/api/agents.py +107 -0
  9. cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
  10. cognite_toolkit/_cdf_tk/client/api/assets.py +130 -0
  11. cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
  12. cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
  13. cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
  14. cognite_toolkit/_cdf_tk/client/api/events.py +129 -0
  15. cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
  16. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +176 -0
  17. cognite_toolkit/_cdf_tk/client/api/function_schedules.py +115 -0
  18. cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
  19. cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
  20. cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
  21. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
  22. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
  23. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
  24. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
  25. cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
  26. cognite_toolkit/_cdf_tk/client/api/infield.py +8 -8
  27. cognite_toolkit/_cdf_tk/client/api/instances.py +139 -0
  28. cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
  29. cognite_toolkit/_cdf_tk/client/api/legacy/canvas.py +3 -3
  30. cognite_toolkit/_cdf_tk/client/api/legacy/charts.py +1 -1
  31. cognite_toolkit/_cdf_tk/client/api/legacy/extended_data_modeling.py +1 -1
  32. cognite_toolkit/_cdf_tk/client/api/legacy/extended_files.py +2 -2
  33. cognite_toolkit/_cdf_tk/client/api/legacy/extended_functions.py +1 -1
  34. cognite_toolkit/_cdf_tk/client/api/legacy/extended_raw.py +1 -1
  35. cognite_toolkit/_cdf_tk/client/api/legacy/extended_timeseries.py +2 -2
  36. cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +1 -1
  37. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/capabilities.py +1 -1
  38. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/data_postprocessing.py +1 -1
  39. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/frames.py +1 -1
  40. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/locations.py +1 -1
  41. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/maps.py +1 -1
  42. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/robots.py +1 -1
  43. cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +1 -1
  44. cognite_toolkit/_cdf_tk/client/api/location_filters.py +177 -0
  45. cognite_toolkit/_cdf_tk/client/api/migration.py +1 -1
  46. cognite_toolkit/_cdf_tk/client/api/project.py +2 -2
  47. cognite_toolkit/_cdf_tk/client/api/raw.py +204 -0
  48. cognite_toolkit/_cdf_tk/client/api/relationships.py +133 -0
  49. cognite_toolkit/_cdf_tk/client/api/robotics.py +19 -0
  50. cognite_toolkit/_cdf_tk/client/api/robotics_capabilities.py +127 -0
  51. cognite_toolkit/_cdf_tk/client/api/robotics_data_postprocessing.py +138 -0
  52. cognite_toolkit/_cdf_tk/client/api/robotics_frames.py +122 -0
  53. cognite_toolkit/_cdf_tk/client/api/robotics_locations.py +127 -0
  54. cognite_toolkit/_cdf_tk/client/api/robotics_maps.py +122 -0
  55. cognite_toolkit/_cdf_tk/client/api/robotics_robots.py +122 -0
  56. cognite_toolkit/_cdf_tk/client/api/search_config.py +101 -0
  57. cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
  58. cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
  59. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +154 -0
  60. cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
  61. cognite_toolkit/_cdf_tk/client/api/spaces.py +117 -0
  62. cognite_toolkit/_cdf_tk/client/api/streams.py +65 -57
  63. cognite_toolkit/_cdf_tk/client/api/three_d.py +300 -283
  64. cognite_toolkit/_cdf_tk/client/api/timeseries.py +137 -0
  65. cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
  66. cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
  67. cognite_toolkit/_cdf_tk/client/api/views.py +139 -0
  68. cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
  69. cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
  70. cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
  71. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +10 -0
  72. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +358 -0
  73. cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +38 -0
  74. cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +9 -7
  75. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +23 -14
  76. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +12 -2
  77. cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +151 -0
  78. cognite_toolkit/_cdf_tk/client/http_client/_exception.py +13 -0
  79. cognite_toolkit/_cdf_tk/client/http_client/_item_classes.py +118 -0
  80. cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
  81. cognite_toolkit/_cdf_tk/client/request_classes/filters.py +113 -0
  82. cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
  83. cognite_toolkit/_cdf_tk/client/resource_classes/agent.py +130 -0
  84. cognite_toolkit/_cdf_tk/client/resource_classes/annotation.py +79 -0
  85. cognite_toolkit/_cdf_tk/client/resource_classes/apm_config.py +128 -0
  86. cognite_toolkit/_cdf_tk/client/resource_classes/asset.py +47 -0
  87. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +1 -1
  88. cognite_toolkit/_cdf_tk/client/resource_classes/cognite_file.py +53 -0
  89. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/__init__.py +168 -0
  90. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_constraints.py +37 -0
  91. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_container.py +50 -0
  92. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_model.py +73 -0
  93. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_types.py +116 -0
  94. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_indexes.py +26 -0
  95. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_instance.py +154 -0
  96. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_references.py +86 -0
  97. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_space.py +26 -0
  98. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view.py +143 -0
  99. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view_property.py +152 -0
  100. cognite_toolkit/_cdf_tk/client/resource_classes/dataset.py +35 -0
  101. cognite_toolkit/_cdf_tk/client/resource_classes/event.py +40 -0
  102. cognite_toolkit/_cdf_tk/client/resource_classes/extraction_pipeline.py +59 -0
  103. cognite_toolkit/_cdf_tk/client/resource_classes/filemetadata.py +52 -0
  104. cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
  105. cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +65 -0
  106. cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
  107. cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
  108. cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
  109. cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
  110. cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
  111. cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +63 -0
  112. cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
  113. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_destination.py +34 -0
  114. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_job.py +134 -0
  115. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_mapping.py +72 -0
  116. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/__init__.py +63 -0
  117. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_auth.py +63 -0
  118. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_base.py +26 -0
  119. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_certificate.py +20 -0
  120. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_eventhub.py +31 -0
  121. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_kafka.py +53 -0
  122. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_mqtt.py +36 -0
  123. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_rest.py +49 -0
  124. cognite_toolkit/_cdf_tk/client/resource_classes/identifiers.py +59 -0
  125. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +1 -1
  126. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +35 -1
  127. cognite_toolkit/_cdf_tk/client/resource_classes/label.py +27 -0
  128. cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
  129. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/canvas.py +48 -15
  130. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/charts.py +1 -1
  131. cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +84 -0
  132. cognite_toolkit/_cdf_tk/client/resource_classes/raw.py +44 -0
  133. cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +49 -0
  134. cognite_toolkit/_cdf_tk/client/resource_classes/resource_view_mapping.py +38 -0
  135. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
  136. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
  137. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
  138. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
  139. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
  140. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
  141. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +65 -0
  142. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +58 -0
  143. cognite_toolkit/_cdf_tk/client/resource_classes/search_config.py +54 -0
  144. cognite_toolkit/_cdf_tk/client/resource_classes/securitycategory.py +24 -0
  145. cognite_toolkit/_cdf_tk/client/resource_classes/sequence.py +45 -0
  146. cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
  147. cognite_toolkit/_cdf_tk/client/resource_classes/simulator_model.py +50 -0
  148. cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
  149. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +9 -26
  150. cognite_toolkit/_cdf_tk/client/resource_classes/three_d.py +135 -0
  151. cognite_toolkit/_cdf_tk/client/resource_classes/timeseries.py +52 -0
  152. cognite_toolkit/_cdf_tk/client/resource_classes/transformation.py +140 -0
  153. cognite_toolkit/_cdf_tk/client/resource_classes/workflow.py +27 -0
  154. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_trigger.py +63 -0
  155. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_version.py +155 -0
  156. cognite_toolkit/_cdf_tk/client/testing.py +31 -2
  157. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +103 -108
  158. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +22 -15
  159. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
  160. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +11 -10
  161. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +148 -57
  162. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
  163. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +22 -39
  164. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +29 -27
  165. cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
  166. cognite_toolkit/_cdf_tk/commands/_purge.py +8 -8
  167. cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
  168. cognite_toolkit/_cdf_tk/commands/build_cmd.py +12 -2
  169. cognite_toolkit/_cdf_tk/commands/build_v2/_module_parser.py +138 -0
  170. cognite_toolkit/_cdf_tk/commands/build_v2/_modules_parser.py +163 -0
  171. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +83 -96
  172. cognite_toolkit/_cdf_tk/commands/build_v2/{build_input.py → build_parameters.py} +8 -22
  173. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_modules.py +27 -0
  174. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_resource.py +22 -0
  175. cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
  176. cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
  177. cognite_toolkit/_cdf_tk/commands/run.py +1 -1
  178. cognite_toolkit/_cdf_tk/cruds/__init__.py +16 -6
  179. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +9 -5
  180. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  181. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +6 -2
  182. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +70 -89
  183. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
  184. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
  185. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
  186. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +14 -7
  187. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +50 -59
  188. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +1 -1
  189. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
  190. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +4 -3
  191. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
  192. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
  193. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +5 -4
  194. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
  195. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
  196. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +15 -31
  197. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +42 -47
  198. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +1 -1
  199. cognite_toolkit/_cdf_tk/data_classes/__init__.py +3 -0
  200. cognite_toolkit/_cdf_tk/data_classes/_issues.py +36 -0
  201. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +2 -1
  202. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +4 -0
  203. cognite_toolkit/_cdf_tk/feature_flags.py +8 -0
  204. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +2 -0
  205. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
  206. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  207. cognite_toolkit/_cdf_tk/resource_classes/simulator_model.py +17 -0
  208. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +13 -4
  209. cognite_toolkit/_cdf_tk/storageio/_applications.py +53 -15
  210. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +117 -107
  211. cognite_toolkit/_cdf_tk/storageio/_base.py +3 -1
  212. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
  213. cognite_toolkit/_cdf_tk/storageio/_file_content.py +64 -54
  214. cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
  215. cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
  216. cognite_toolkit/_cdf_tk/storageio/logger.py +162 -0
  217. cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
  218. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +20 -0
  219. cognite_toolkit/_cdf_tk/utils/__init__.py +11 -1
  220. cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
  221. cognite_toolkit/_cdf_tk/utils/interactive_select.py +8 -6
  222. cognite_toolkit/_cdf_tk/utils/modules.py +7 -0
  223. cognite_toolkit/_cdf_tk/utils/pip_validator.py +96 -0
  224. cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
  225. cognite_toolkit/_cdf_tk/utils/useful_types2.py +14 -0
  226. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  227. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  228. cognite_toolkit/_resources/cdf.toml +1 -1
  229. cognite_toolkit/_version.py +1 -1
  230. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/METADATA +13 -3
  231. cognite_toolkit-0.7.51.dist-info/RECORD +445 -0
  232. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/WHEEL +2 -2
  233. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -30
  234. cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -67
  235. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -112
  236. cognite_toolkit/_cdf_tk/commands/build_v2/build_issues.py +0 -27
  237. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -247
  238. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -4
  239. cognite_toolkit-0.7.39.dist-info/RECORD +0 -322
  240. /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +0 -0
  241. /cognite_toolkit/_cdf_tk/client/{data_classes → request_classes}/__init__.py +0 -0
  242. /cognite_toolkit/_cdf_tk/client/{data_classes/legacy → resource_classes}/__init__.py +0 -0
  243. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
  244. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/apm_config_v1.py +0 -0
  245. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extendable_cognite_file.py +0 -0
  246. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetadata.py +0 -0
  247. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetdata.py +0 -0
  248. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_timeseries.py +0 -0
  249. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/functions.py +0 -0
  250. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/graphql_data_models.py +0 -0
  251. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/instances.py +0 -0
  252. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/location_filters.py +0 -0
  253. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/migration.py +0 -0
  254. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/pending_instances_ids.py +0 -0
  255. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/project.py +0 -0
  256. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/raw.py +0 -0
  257. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/robotics.py +0 -0
  258. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/search_config.py +0 -0
  259. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/sequences.py +0 -0
  260. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/streamlit_.py +0 -0
  261. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,155 @@
1
+ from typing import Annotated, Any, Literal
2
+
3
+ from pydantic import Field, JsonValue, field_validator
4
+ from pydantic_core.core_schema import ValidationInfo
5
+
6
+ from cognite_toolkit._cdf_tk.client._resource_base import (
7
+ BaseModelObject,
8
+ RequestResource,
9
+ ResponseResource,
10
+ )
11
+
12
+ from .identifiers import Identifier, WorkflowVersionId
13
+
14
+
15
+ class TaskId(Identifier):
16
+ external_id: str
17
+
18
+ def __str__(self) -> str:
19
+ return f"externalId='{self.external_id}'"
20
+
21
+
22
+ class TaskParameterDefinition(BaseModelObject):
23
+ type: str
24
+
25
+
26
+ class CogniteFunctionRef(BaseModelObject):
27
+ external_id: str
28
+ data: JsonValue | str | None = None
29
+
30
+
31
+ class FunctionTaskParameters(TaskParameterDefinition):
32
+ type: Literal["function"] = Field("function", exclude=True)
33
+ function: CogniteFunctionRef
34
+ is_async_complete: bool | None = None
35
+
36
+
37
+ class TransformationRef(BaseModelObject):
38
+ external_id: str
39
+ concurrency_policy: Literal["fail", "waitForCurrent", "restartAfterCurrent"] | None = None
40
+ use_transformation_credentials: bool | None = None
41
+
42
+
43
+ class TransformationTaskParameters(TaskParameterDefinition):
44
+ type: Literal["transformation"] = Field("transformation", exclude=True)
45
+ transformation: TransformationRef
46
+
47
+
48
+ class CDFRequest(BaseModelObject):
49
+ resource_path: str
50
+ method: str
51
+ query_parameters: JsonValue | str | None = None
52
+ body: JsonValue | str | None = None
53
+ request_timeout_in_millis: float | str | None = None
54
+ cdf_version_header: str | None = None
55
+
56
+
57
+ class CDFTaskParameters(TaskParameterDefinition):
58
+ type: Literal["cdf"] = Field("cdf", exclude=True)
59
+ cdf_request: CDFRequest
60
+
61
+
62
+ class DynamicRef(BaseModelObject):
63
+ tasks: str
64
+
65
+
66
+ class DynamicTaskParameters(TaskParameterDefinition):
67
+ type: Literal["dynamic"] = Field("dynamic", exclude=True)
68
+ dynamic: DynamicRef
69
+
70
+
71
+ class SubworkflowRef(BaseModelObject):
72
+ tasks: "list[Task]"
73
+
74
+
75
+ class SubworkflowTaskParameters(TaskParameterDefinition):
76
+ type: Literal["subworkflow"] = Field("subworkflow", exclude=True)
77
+ subworkflow: WorkflowVersionId | SubworkflowRef
78
+
79
+
80
+ class SimulatorInputUnit(BaseModelObject):
81
+ name: str
82
+
83
+
84
+ class SimulatorInput(BaseModelObject):
85
+ reference_id: str
86
+ value: str | int | float | list[str] | list[int] | list[float]
87
+ unit: SimulatorInputUnit | None = None
88
+
89
+
90
+ class SimulationRef(BaseModelObject):
91
+ routine_external_id: str
92
+ run_time: int | None = None
93
+ inputs: list[SimulatorInput] | None = None
94
+
95
+
96
+ class SimulationTaskParameters(TaskParameterDefinition):
97
+ type: Literal["simulation"] = Field("simulation", exclude=True)
98
+ simulation: SimulationRef
99
+
100
+
101
+ Parameter = Annotated[
102
+ FunctionTaskParameters
103
+ | TransformationTaskParameters
104
+ | CDFTaskParameters
105
+ | DynamicTaskParameters
106
+ | SubworkflowTaskParameters
107
+ | SimulationTaskParameters,
108
+ Field(discriminator="type"),
109
+ ]
110
+
111
+
112
+ class Task(BaseModelObject):
113
+ external_id: str
114
+ type: str
115
+ name: str | None = None
116
+ description: str | None = None
117
+ retries: int | None = None
118
+ timeout: int | None = None
119
+ on_failure: Literal["abortWorkflow", "skipTask"] = "abortWorkflow"
120
+ depends_on: list[TaskId] | None = None
121
+ parameters: Parameter | None = None
122
+
123
+ @field_validator("parameters", mode="before")
124
+ @classmethod
125
+ def move_type_to_field(cls, value: Any, info: ValidationInfo) -> Any:
126
+ if not isinstance(value, dict) or "type" not in info.data:
127
+ return value
128
+ value = dict(value)
129
+ value["type"] = info.data["type"]
130
+ return value
131
+
132
+
133
+ class WorkflowDefinition(BaseModelObject):
134
+ description: str | None = None
135
+ tasks: list[Task]
136
+
137
+
138
+ class WorkflowVersion(BaseModelObject):
139
+ workflow_external_id: str
140
+ version: str
141
+ workflow_definition: WorkflowDefinition
142
+
143
+ def as_id(self) -> WorkflowVersionId:
144
+ return WorkflowVersionId(workflow_external_id=self.workflow_external_id, version=self.version)
145
+
146
+
147
+ class WorkflowVersionRequest(WorkflowVersion, RequestResource): ...
148
+
149
+
150
+ class WorkflowVersionResponse(WorkflowVersion, ResponseResource[WorkflowVersionRequest]):
151
+ created_time: int
152
+ last_updated_time: int
153
+
154
+ def as_request_resource(self) -> WorkflowVersionRequest:
155
+ return WorkflowVersionRequest.model_validate(self.dump(), extra="ignore")
@@ -7,6 +7,7 @@ from cognite.client._api.datapoints import DatapointsAPI
7
7
  from cognite.client._api.datapoints_subscriptions import DatapointsSubscriptionAPI
8
8
  from cognite.client._api.functions import FunctionCallsAPI, FunctionSchedulesAPI
9
9
  from cognite.client._api.raw import RawDatabasesAPI, RawRowsAPI, RawTablesAPI
10
+ from cognite.client._api.simulators import SimulatorModelsAPI, SimulatorsAPI
10
11
  from cognite.client._api.synthetic_time_series import SyntheticDatapointsAPI
11
12
  from cognite.client.testing import CogniteClientMock
12
13
  from rich.console import Console
@@ -32,7 +33,13 @@ from cognite_toolkit._cdf_tk.client.api.legacy.robotics import LocationsAPI as R
32
33
  from cognite_toolkit._cdf_tk.client.api.legacy.search_config import SearchConfigurationsAPI
33
34
 
34
35
  from ._toolkit_client import ToolAPI
36
+ from .api.assets import AssetsAPI
37
+ from .api.datasets import DataSetsAPI
38
+ from .api.events import EventsAPI
39
+ from .api.extraction_pipelines import ExtractionPipelinesAPI
40
+ from .api.filemetadata import FileMetadataAPI
35
41
  from .api.infield import InfieldAPI, InFieldCDMConfigAPI, InfieldConfigAPI
42
+ from .api.labels import LabelsAPI
36
43
  from .api.lookup import (
37
44
  AssetLookUpAPI,
38
45
  DataSetLookUpAPI,
@@ -55,10 +62,17 @@ from .api.migration import (
55
62
  )
56
63
  from .api.project import ProjectAPI
57
64
  from .api.search import SearchAPI
65
+ from .api.security_categories import SecurityCategoriesAPI
66
+ from .api.sequences import SequencesAPI
58
67
  from .api.streams import StreamsAPI
59
- from .api.three_d import ThreeDAPI, ThreeDModelAPI
68
+ from .api.three_d import ThreeDAPI, ThreeDClassicModelsAPI
69
+ from .api.timeseries import TimeSeriesAPI
60
70
  from .api.token import TokenAPI
71
+ from .api.transformations import TransformationsAPI
61
72
  from .api.verify import VerifyAPI
73
+ from .api.workflow_triggers import WorkflowTriggersAPI
74
+ from .api.workflow_versions import WorkflowVersionsAPI
75
+ from .api.workflows import WorkflowsAPI
62
76
 
63
77
 
64
78
  class ToolkitClientMock(CogniteClientMock):
@@ -137,7 +151,22 @@ class ToolkitClientMock(CogniteClientMock):
137
151
 
138
152
  self.tool = MagicMock(spec=ToolAPI)
139
153
  self.tool.three_d = MagicMock(spec=ThreeDAPI)
140
- self.tool.three_d.models = MagicMock(spec_set=ThreeDModelAPI)
154
+ self.tool.three_d.models_classic = MagicMock(spec_set=ThreeDClassicModelsAPI)
155
+ self.tool.assets = MagicMock(spec_set=AssetsAPI)
156
+ self.tool.timeseries = MagicMock(spec_set=TimeSeriesAPI)
157
+ self.tool.filemetadata = MagicMock(spec_set=FileMetadataAPI)
158
+ self.tool.events = MagicMock(spec_set=EventsAPI)
159
+ self.tool.simulators = MagicMock(spec=SimulatorsAPI)
160
+ self.tool.simulators.models = MagicMock(spec_set=SimulatorModelsAPI)
161
+ self.tool.datasets = MagicMock(spec_set=DataSetsAPI)
162
+ self.tool.extraction_pipelines = MagicMock(spec_set=ExtractionPipelinesAPI)
163
+ self.tool.labels = MagicMock(spec_set=LabelsAPI)
164
+ self.tool.security_categories = MagicMock(spec_set=SecurityCategoriesAPI)
165
+ self.tool.sequences = MagicMock(spec_set=SequencesAPI)
166
+ self.tool.transformations = MagicMock(spec_set=TransformationsAPI)
167
+ self.tool.workflows = MagicMock(spec=WorkflowsAPI)
168
+ self.tool.workflows.triggers = MagicMock(spec_set=WorkflowTriggersAPI)
169
+ self.tool.workflows.versions = MagicMock(spec_set=WorkflowVersionsAPI)
141
170
 
142
171
  self.streams = MagicMock(spec=StreamsAPI)
143
172
 
@@ -1,12 +1,19 @@
1
- from collections.abc import Callable, Iterable, Sequence
2
- from enum import Enum
1
+ from collections.abc import Callable, Sequence
2
+ from dataclasses import dataclass
3
3
  from pathlib import Path
4
+ from typing import get_args
4
5
 
5
6
  from rich import print
6
7
  from rich.console import Console
7
8
  from rich.table import Table
8
9
 
9
10
  from cognite_toolkit._cdf_tk.client import ToolkitClient
11
+ from cognite_toolkit._cdf_tk.client.http_client import (
12
+ FailedRequestItems,
13
+ FailedResponseItems,
14
+ HTTPClient,
15
+ SuccessResponseItems,
16
+ )
10
17
  from cognite_toolkit._cdf_tk.commands._base import ToolkitCommand
11
18
  from cognite_toolkit._cdf_tk.commands._migrate.creators import MigrationCreator
12
19
  from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import DataMapper
@@ -21,26 +28,30 @@ from cognite_toolkit._cdf_tk.exceptions import (
21
28
  )
22
29
  from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
23
30
  from cognite_toolkit._cdf_tk.storageio import T_Selector, UploadableStorageIO, UploadItem
31
+ from cognite_toolkit._cdf_tk.storageio.logger import FileDataLogger, OperationStatus
24
32
  from cognite_toolkit._cdf_tk.utils import humanize_collection, safe_write, sanitize_filename
25
33
  from cognite_toolkit._cdf_tk.utils.file import yaml_safe_dump
26
- from cognite_toolkit._cdf_tk.utils.fileio import Chunk, CSVWriter, NDJsonWriter, SchemaColumn, Uncompressed
27
- from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, HTTPMessage, ItemMessage, SuccessResponseItems
34
+ from cognite_toolkit._cdf_tk.utils.fileio import NDJsonWriter, Uncompressed
28
35
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
29
- from cognite_toolkit._cdf_tk.utils.progress_tracker import AVAILABLE_STATUS, ProgressTracker, Status
30
36
 
31
37
  from .data_model import INSTANCE_SOURCE_VIEW_ID, MODEL_ID, RESOURCE_VIEW_MAPPING_VIEW_ID
38
+ from .issues import WriteIssue
32
39
 
33
40
 
34
- class MigrationCommand(ToolkitCommand):
35
- class Steps(str, Enum):
36
- DOWNLOAD = "download"
37
- CONVERT = "convert"
38
- UPLOAD = "upload"
41
+ @dataclass
42
+ class OperationIssue:
43
+ message: str
44
+ count: int
45
+
39
46
 
40
- @classmethod
41
- def list(cls) -> list[str]:
42
- return [step.value for step in cls.__members__.values()]
47
+ @dataclass
48
+ class MigrationStatusResult:
49
+ status: OperationStatus
50
+ issues: list[OperationIssue]
51
+ count: int
43
52
 
53
+
54
+ class MigrationCommand(ToolkitCommand):
44
55
  def migrate(
45
56
  self,
46
57
  selected: T_Selector,
@@ -49,7 +60,7 @@ class MigrationCommand(ToolkitCommand):
49
60
  log_dir: Path,
50
61
  dry_run: bool = False,
51
62
  verbose: bool = False,
52
- ) -> ProgressTracker[str]:
63
+ ) -> list[MigrationStatusResult]:
53
64
  if log_dir.exists() and any(log_dir.iterdir()):
54
65
  raise ToolkitFileExistsError(
55
66
  f"Log directory {log_dir} already exists. Please remove it or choose another directory."
@@ -65,15 +76,18 @@ class MigrationCommand(ToolkitCommand):
65
76
  self.validate_available_capacity(data.client, total_items)
66
77
 
67
78
  console = Console()
68
- tracker = ProgressTracker[str](self.Steps.list())
69
79
  with (
70
80
  NDJsonWriter(log_dir, kind=f"{selected.kind}MigrationIssues", compression=Uncompressed) as log_file,
71
81
  HTTPClient(config=data.client.config) as write_client,
72
82
  ):
83
+ logger = FileDataLogger(log_file)
84
+ data.logger = logger
85
+ mapper.logger = logger
86
+
73
87
  executor = ProducerWorkerExecutor[Sequence[T_ResourceResponse], Sequence[UploadItem[T_ResourceRequest]]](
74
- download_iterable=self._download_iterable(selected, data, tracker),
75
- process=self._convert(mapper, data, tracker, log_file),
76
- write=self._upload(selected, write_client, data, tracker, log_file, dry_run),
88
+ download_iterable=(page.items for page in data.stream_data(selected)),
89
+ process=self._convert(mapper, data),
90
+ write=self._upload(selected, write_client, data, dry_run),
77
91
  iteration_count=iteration_count,
78
92
  max_queue_size=10,
79
93
  download_description=f"Downloading {selected.display_name}",
@@ -86,91 +100,71 @@ class MigrationCommand(ToolkitCommand):
86
100
  executor.run()
87
101
  total = executor.total_items
88
102
 
89
- self._print_table(tracker.aggregate(), console)
90
- self._print_csv(tracker, log_dir, f"{selected.kind}Items", console)
103
+ results = self._create_status_summary(logger)
104
+
105
+ self._print_rich_tables(results, console)
106
+ self._print_txt(results, log_dir, f"{selected.kind}Items", console)
91
107
  executor.raise_on_error()
92
108
  action = "Would migrate" if dry_run else "Migrating"
93
109
  console.print(f"{action} {total:,} {selected.display_name} to instances.")
94
- return tracker
95
110
 
96
- def _print_table(self, results: dict[tuple[str, Status], int], console: Console) -> None:
97
- for step in self.Steps:
98
- # We treat pending as failed for summary purposes
99
- results[(step.value, "failed")] = results.get((step.value, "failed"), 0) + results.get(
100
- (step.value, "pending"), 0
111
+ return results
112
+
113
+ # Todo: Move to the logger module
114
+ @classmethod
115
+ def _create_status_summary(cls, logger: FileDataLogger) -> list[MigrationStatusResult]:
116
+ results: list[MigrationStatusResult] = []
117
+ status_counts = logger.tracker.get_status_counts()
118
+ for status in get_args(OperationStatus):
119
+ issue_counts = logger.tracker.get_issue_counts(status)
120
+ issues = [OperationIssue(message=issue, count=count) for issue, count in issue_counts.items()]
121
+ result = MigrationStatusResult(
122
+ status=status,
123
+ issues=issues,
124
+ count=status_counts.get(status, 0),
101
125
  )
126
+ results.append(result)
127
+ return results
102
128
 
129
+ def _print_rich_tables(self, results: list[MigrationStatusResult], console: Console) -> None:
103
130
  table = Table(title="Migration Summary", show_lines=True)
104
- table.add_column("Status", style="cyan", no_wrap=True)
105
- for step in self.Steps:
106
- table.add_column(step.value.capitalize(), style="magenta")
107
- for status in AVAILABLE_STATUS:
108
- if status == "pending":
109
- # Skip pending as we treat it as failed
110
- continue
111
- row = [status]
112
- for step in self.Steps:
113
- row.append(str(results.get((step.value, status), 0)))
114
- table.add_row(*row)
115
-
131
+ table.add_column("Status", style="bold")
132
+ table.add_column("Count", justify="right", style="bold")
133
+ table.add_column("Issues", style="bold")
134
+ for result in results:
135
+ issues_str = "\n".join(f"{issue.message}: {issue.count}" for issue in result.issues) or ""
136
+ table.add_row(result.status, str(result.count), issues_str)
116
137
  console.print(table)
117
138
 
118
- def _print_csv(self, tracker: ProgressTracker[str], log_dir: Path, kind: str, console: Console) -> None:
119
- with CSVWriter(log_dir, kind=kind, compression=Uncompressed, columns=self._csv_columns()) as csv_file:
120
- batch: list[Chunk] = []
121
- steps = self.Steps.list()
122
- for item_id, progress in tracker.result().items():
123
- batch.append({"ID": str(item_id), **{step: progress[step] for step in steps}})
124
- if len(batch) >= 1000:
125
- csv_file.write_chunks(batch)
126
- batch = []
127
- if batch:
128
- csv_file.write_chunks(batch)
129
- console.print(f"Migration items written to {log_dir}")
130
-
131
- @classmethod
132
- def _csv_columns(cls) -> list[SchemaColumn]:
133
- return [
134
- SchemaColumn(name="ID", type="string"),
135
- *(SchemaColumn(name=step, type="string") for step in cls.Steps.list()),
136
- ]
137
-
138
- def _download_iterable(
139
- self,
140
- selected: T_Selector,
141
- data: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
142
- tracker: ProgressTracker[str],
143
- ) -> Iterable[Sequence[T_ResourceResponse]]:
144
- for page in data.stream_data(selected):
145
- for item in page.items:
146
- tracker.set_progress(data.as_id(item), self.Steps.DOWNLOAD, "success")
147
- yield page.items
139
+ def _print_txt(self, results: list[MigrationStatusResult], log_dir: Path, kind: str, console: Console) -> None:
140
+ summary_file = log_dir / f"{kind}_migration_summary.txt"
141
+ with summary_file.open("w", encoding="utf-8") as f:
142
+ f.write("Migration Summary\n")
143
+ f.write("=================\n\n")
144
+ for result in results:
145
+ f.write(f"Status: {result.status}\n")
146
+ f.write(f"Count: {result.count}\n")
147
+ f.write("Issues:\n")
148
+ if result.issues:
149
+ for issue in result.issues:
150
+ f.write(f" - {issue.message}: {issue.count}\n")
151
+ else:
152
+ f.write(" None\n")
153
+ f.write("\n")
154
+ console.print(f"Summary written to {log_dir}")
148
155
 
156
+ @staticmethod
149
157
  def _convert(
150
- self,
151
158
  mapper: DataMapper[T_Selector, T_ResourceResponse, T_ResourceRequest],
152
159
  data: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
153
- tracker: ProgressTracker[str],
154
- log_file: NDJsonWriter,
155
160
  ) -> Callable[[Sequence[T_ResourceResponse]], Sequence[UploadItem[T_ResourceRequest]]]:
156
161
  def track_mapping(source: Sequence[T_ResourceResponse]) -> list[UploadItem[T_ResourceRequest]]:
157
162
  mapped = mapper.map(source)
158
- issues: list[Chunk] = []
159
- targets: list[UploadItem[T_ResourceRequest]] = []
160
-
161
- for (target, issue), item in zip(mapped, source):
162
- id_ = data.as_id(item)
163
- result: Status = "failed" if target is None else "success"
164
- tracker.set_progress(id_, step=self.Steps.CONVERT, status=result)
165
-
166
- if issue.has_issues:
167
- # MyPy fails to understand that dict[str, JsonVal] is a Chunk
168
- issues.append(issue.dump()) # type: ignore[arg-type]
169
- if target is not None:
170
- targets.append(UploadItem(source_id=id_, item=target))
171
- if issues:
172
- log_file.write_chunks(issues)
173
- return targets
163
+ return [
164
+ UploadItem(source_id=data.as_id(item), item=target)
165
+ for target, item in zip(mapped, source)
166
+ if target is not None
167
+ ]
174
168
 
175
169
  return track_mapping
176
170
 
@@ -179,36 +173,37 @@ class MigrationCommand(ToolkitCommand):
179
173
  selected: T_Selector,
180
174
  write_client: HTTPClient,
181
175
  target: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
182
- tracker: ProgressTracker[str],
183
- log_file: NDJsonWriter,
184
176
  dry_run: bool,
185
177
  ) -> Callable[[Sequence[UploadItem[T_ResourceRequest]]], None]:
186
178
  def upload_items(data_item: Sequence[UploadItem[T_ResourceRequest]]) -> None:
187
179
  if not data_item:
188
180
  return None
189
- responses: Sequence[HTTPMessage]
190
181
  if dry_run:
191
- responses = [
192
- SuccessResponseItems(
193
- status_code=200, body="", content=b"", ids=[item.source_id for item in data_item]
194
- )
195
- ]
196
- else:
197
- responses = target.upload_items(data_chunk=data_item, http_client=write_client, selector=selected)
198
-
199
- issues: list[Chunk] = []
182
+ target.logger.tracker.finalize_item([item.source_id for item in data_item], "pending")
183
+ return None
184
+
185
+ responses = target.upload_items(data_chunk=data_item, http_client=write_client, selector=selected)
186
+
187
+ # Todo: Move logging into the UploadableStorageIO class
188
+ issues: list[WriteIssue] = []
200
189
  for item in responses:
201
190
  if isinstance(item, SuccessResponseItems):
202
- for success_id in item.ids:
203
- tracker.set_progress(success_id, step=self.Steps.UPLOAD, status="success")
204
- elif isinstance(item, ItemMessage):
205
- for failed_id in item.ids:
206
- tracker.set_progress(failed_id, step=self.Steps.UPLOAD, status="failed")
207
-
208
- if not isinstance(item, SuccessResponseItems):
209
- issues.append(item.dump()) # type: ignore[arg-type]
191
+ target.logger.tracker.finalize_item(item.ids, "success")
192
+ continue
193
+ if isinstance(item, FailedResponseItems):
194
+ error = item.error
195
+ for id_ in item.ids:
196
+ issue = WriteIssue(id=str(id_), status_code=error.code, message=error.message)
197
+ issues.append(issue)
198
+ elif isinstance(item, FailedRequestItems):
199
+ for id_ in item.ids:
200
+ issue = WriteIssue(id=str(id_), status_code=0, message=item.error)
201
+ issues.append(issue)
202
+
203
+ if isinstance(item, FailedResponseItems | FailedRequestItems):
204
+ target.logger.tracker.finalize_item(item.ids, "failure")
210
205
  if issues:
211
- log_file.write_chunks(issues)
206
+ target.logger.log(issues)
212
207
  return None
213
208
 
214
209
  return upload_items
@@ -1,7 +1,7 @@
1
1
  from collections.abc import Iterable, Mapping, Set
2
2
  from typing import Any, ClassVar, cast
3
3
 
4
- from cognite.client.data_classes import Annotation, Asset, Event, FileMetadata, TimeSeries
4
+ from cognite.client.data_classes import Annotation
5
5
  from cognite.client.data_classes.data_modeling import (
6
6
  DirectRelation,
7
7
  DirectRelationReference,
@@ -16,19 +16,22 @@ from cognite.client.data_classes.data_modeling.views import ViewProperty
16
16
  from cognite.client.utils._identifier import InstanceId
17
17
 
18
18
  from cognite_toolkit._cdf_tk.client import ToolkitClient
19
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import (
19
+ from cognite_toolkit._cdf_tk.client.resource_classes.asset import AssetResponse
20
+ from cognite_toolkit._cdf_tk.client.resource_classes.data_modeling import NodeReference
21
+ from cognite_toolkit._cdf_tk.client.resource_classes.event import EventResponse
22
+ from cognite_toolkit._cdf_tk.client.resource_classes.filemetadata import FileMetadataResponse
23
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import (
20
24
  AssetCentricId,
21
25
  ResourceViewMappingApply,
22
26
  )
27
+ from cognite_toolkit._cdf_tk.client.resource_classes.timeseries import TimeSeriesResponse
23
28
  from cognite_toolkit._cdf_tk.utils.collection import flatten_dict_json_path
24
29
  from cognite_toolkit._cdf_tk.utils.dtype_conversion import (
25
30
  asset_centric_convert_to_primary_property,
26
31
  convert_to_primary_property,
27
32
  )
28
- from cognite_toolkit._cdf_tk.utils.useful_types import (
29
- AssetCentricResourceExtended,
30
- AssetCentricTypeExtended,
31
- )
33
+ from cognite_toolkit._cdf_tk.utils.useful_types import AssetCentricTypeExtended
34
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import AssetCentricResourceExtended
32
35
 
33
36
  from .data_model import COGNITE_MIGRATION_SPACE_ID, INSTANCE_SOURCE_VIEW_ID
34
37
  from .issues import ConversionIssue, FailedConversion, InvalidPropertyDataType
@@ -111,22 +114,22 @@ class DirectRelationCache:
111
114
  file_ids.add(file_id)
112
115
  if isinstance(file_external_id := file_ref.get("externalId"), str):
113
116
  file_external_ids.add(file_external_id)
114
- elif isinstance(resource, Asset):
117
+ elif isinstance(resource, AssetResponse):
115
118
  if resource.source:
116
119
  source_ids.add(resource.source)
117
120
  if resource.parent_id is not None:
118
121
  asset_ids.add(resource.parent_id)
119
- elif isinstance(resource, FileMetadata):
122
+ elif isinstance(resource, FileMetadataResponse):
120
123
  if resource.source:
121
124
  source_ids.add(resource.source)
122
125
  if resource.asset_ids:
123
126
  asset_ids.update(resource.asset_ids)
124
- elif isinstance(resource, Event):
127
+ elif isinstance(resource, EventResponse):
125
128
  if resource.source:
126
129
  source_ids.add(resource.source)
127
130
  if resource.asset_ids:
128
131
  asset_ids.update(resource.asset_ids)
129
- elif isinstance(resource, TimeSeries):
132
+ elif isinstance(resource, TimeSeriesResponse):
130
133
  if resource.asset_id is not None:
131
134
  asset_ids.add(resource.asset_id)
132
135
  if asset_ids:
@@ -196,7 +199,11 @@ def asset_centric_to_dm(
196
199
  data_set_id = dumped.pop("dataSetId", None)
197
200
  external_id = dumped.pop("externalId", None)
198
201
 
199
- issue = ConversionIssue(asset_centric_id=AssetCentricId(resource_type, id_=id_), instance_id=instance_id)
202
+ issue = ConversionIssue(
203
+ id=str(AssetCentricId(resource_type, id_=id_)),
204
+ asset_centric_id=AssetCentricId(resource_type, id_=id_),
205
+ instance_id=NodeReference(space=instance_id.space, external_id=instance_id.external_id),
206
+ )
200
207
 
201
208
  properties = create_properties(
202
209
  dumped,
@@ -245,13 +252,13 @@ def asset_centric_to_dm(
245
252
 
246
253
 
247
254
  def _lookup_resource_type(resource_type: AssetCentricResourceExtended) -> AssetCentricTypeExtended:
248
- if isinstance(resource_type, Asset):
255
+ if isinstance(resource_type, AssetResponse):
249
256
  return "asset"
250
- elif isinstance(resource_type, FileMetadata):
257
+ elif isinstance(resource_type, FileMetadataResponse):
251
258
  return "file"
252
- elif isinstance(resource_type, Event):
259
+ elif isinstance(resource_type, EventResponse):
253
260
  return "event"
254
- elif isinstance(resource_type, TimeSeries):
261
+ elif isinstance(resource_type, TimeSeriesResponse):
255
262
  return "timeseries"
256
263
  elif isinstance(resource_type, Annotation):
257
264
  if resource_type.annotated_resource_type == "file" and resource_type.annotation_type in (
@@ -20,7 +20,7 @@ from cognite.client.data_classes.documents import SourceFileProperty
20
20
  from cognite.client.data_classes.events import EventProperty
21
21
 
22
22
  from cognite_toolkit._cdf_tk.client import ToolkitClient
23
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.apm_config_v1 import APMConfig, APMConfigList
23
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.apm_config_v1 import APMConfig, APMConfigList
24
24
  from cognite_toolkit._cdf_tk.cruds import NodeCRUD, ResourceCRUD, SpaceCRUD
25
25
  from cognite_toolkit._cdf_tk.exceptions import ToolkitMissingResourceError, ToolkitRequiredValueError
26
26
  from cognite_toolkit._cdf_tk.utils import humanize_collection
@@ -11,11 +11,12 @@ from cognite.client.utils._identifier import InstanceId
11
11
  from cognite.client.utils._text import to_camel_case
12
12
  from pydantic import BaseModel, BeforeValidator, Field, field_validator, model_validator
13
13
 
14
- from cognite_toolkit._cdf_tk.client.data_classes.base import BaseModelObject, RequestResource
15
- from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceIdentifier
16
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.instances import InstanceApplyList
17
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import AssetCentricId
18
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.pending_instances_ids import PendingInstanceId
14
+ from cognite_toolkit._cdf_tk.client._resource_base import BaseModelObject, RequestResource
15
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalId
16
+ from cognite_toolkit._cdf_tk.client.resource_classes.instance_api import InstanceIdentifier
17
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.instances import InstanceApplyList
18
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import AssetCentricId
19
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.pending_instances_ids import PendingInstanceId
19
20
  from cognite_toolkit._cdf_tk.commands._migrate.default_mappings import (
20
21
  ASSET_ANNOTATIONS_ID,
21
22
  FILE_ANNOTATIONS_ID,
@@ -26,8 +27,8 @@ from cognite_toolkit._cdf_tk.storageio._data_classes import ModelList
26
27
  from cognite_toolkit._cdf_tk.utils.useful_types import (
27
28
  AssetCentricKindExtended,
28
29
  JsonVal,
29
- T_AssetCentricResourceExtended,
30
30
  )
31
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import T_AssetCentricResourceExtended
31
32
 
32
33
 
33
34
  class MigrationMapping(BaseModel, alias_generator=to_camel_case, extra="ignore", populate_by_name=True):
@@ -279,8 +280,8 @@ class ThreeDRevisionMigrationRequest(RequestResource):
279
280
  revision_id: int
280
281
  model: Model
281
282
 
282
- def as_id(self) -> int:
283
- return self.revision_id
283
+ def as_id(self) -> InternalId:
284
+ return InternalId(id=self.revision_id)
284
285
 
285
286
 
286
287
  class ThreeDMigrationRequest(RequestResource):
@@ -290,5 +291,5 @@ class ThreeDMigrationRequest(RequestResource):
290
291
  thumbnail: Thumbnail | None = None
291
292
  revision: ThreeDRevisionMigrationRequest = Field(exclude=True)
292
293
 
293
- def as_id(self) -> int:
294
- return self.model_id
294
+ def as_id(self) -> InternalId:
295
+ return InternalId(id=self.model_id)