cognite-toolkit 0.7.30__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 (281) hide show
  1. cognite_toolkit/_cdf.py +5 -6
  2. cognite_toolkit/_cdf_tk/apps/__init__.py +2 -0
  3. cognite_toolkit/_cdf_tk/apps/_core_app.py +7 -1
  4. cognite_toolkit/_cdf_tk/apps/_download_app.py +2 -2
  5. cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
  6. cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
  7. cognite_toolkit/_cdf_tk/apps/_migrate_app.py +183 -8
  8. cognite_toolkit/_cdf_tk/builders/_function.py +81 -9
  9. cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
  10. cognite_toolkit/_cdf_tk/client/_resource_base.py +187 -0
  11. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +44 -12
  12. cognite_toolkit/_cdf_tk/client/api/agents.py +107 -0
  13. cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
  14. cognite_toolkit/_cdf_tk/client/api/assets.py +130 -0
  15. cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
  16. cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
  17. cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
  18. cognite_toolkit/_cdf_tk/client/api/events.py +129 -0
  19. cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
  20. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +176 -0
  21. cognite_toolkit/_cdf_tk/client/api/function_schedules.py +115 -0
  22. cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
  23. cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
  24. cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
  25. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
  26. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
  27. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
  28. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
  29. cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
  30. cognite_toolkit/_cdf_tk/client/api/infield.py +40 -35
  31. cognite_toolkit/_cdf_tk/client/api/instances.py +139 -0
  32. cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
  33. cognite_toolkit/_cdf_tk/client/api/{canvas.py → legacy/canvas.py} +16 -8
  34. cognite_toolkit/_cdf_tk/client/api/{charts.py → legacy/charts.py} +1 -1
  35. cognite_toolkit/_cdf_tk/client/api/{extended_data_modeling.py → legacy/extended_data_modeling.py} +1 -1
  36. cognite_toolkit/_cdf_tk/client/api/{extended_files.py → legacy/extended_files.py} +2 -2
  37. cognite_toolkit/_cdf_tk/client/api/{extended_functions.py → legacy/extended_functions.py} +9 -9
  38. cognite_toolkit/_cdf_tk/client/api/{extended_raw.py → legacy/extended_raw.py} +1 -1
  39. cognite_toolkit/_cdf_tk/client/api/{extended_timeseries.py → legacy/extended_timeseries.py} +5 -2
  40. cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +112 -0
  41. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/__init__.py +8 -0
  42. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/capabilities.py +1 -1
  43. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/data_postprocessing.py +1 -1
  44. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/frames.py +1 -1
  45. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/locations.py +1 -1
  46. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/maps.py +1 -1
  47. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/robots.py +2 -2
  48. cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +53 -0
  49. cognite_toolkit/_cdf_tk/client/api/location_filters.py +140 -75
  50. cognite_toolkit/_cdf_tk/client/api/migration.py +2 -3
  51. cognite_toolkit/_cdf_tk/client/api/project.py +9 -8
  52. cognite_toolkit/_cdf_tk/client/api/raw.py +204 -0
  53. cognite_toolkit/_cdf_tk/client/api/relationships.py +133 -0
  54. cognite_toolkit/_cdf_tk/client/api/robotics.py +19 -0
  55. cognite_toolkit/_cdf_tk/client/api/robotics_capabilities.py +127 -0
  56. cognite_toolkit/_cdf_tk/client/api/robotics_data_postprocessing.py +138 -0
  57. cognite_toolkit/_cdf_tk/client/api/robotics_frames.py +122 -0
  58. cognite_toolkit/_cdf_tk/client/api/robotics_locations.py +127 -0
  59. cognite_toolkit/_cdf_tk/client/api/robotics_maps.py +122 -0
  60. cognite_toolkit/_cdf_tk/client/api/robotics_robots.py +122 -0
  61. cognite_toolkit/_cdf_tk/client/api/search.py +2 -2
  62. cognite_toolkit/_cdf_tk/client/api/search_config.py +83 -31
  63. cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
  64. cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
  65. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +154 -0
  66. cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
  67. cognite_toolkit/_cdf_tk/client/api/spaces.py +117 -0
  68. cognite_toolkit/_cdf_tk/client/api/streams.py +68 -56
  69. cognite_toolkit/_cdf_tk/client/api/three_d.py +385 -34
  70. cognite_toolkit/_cdf_tk/client/api/timeseries.py +137 -0
  71. cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
  72. cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
  73. cognite_toolkit/_cdf_tk/client/api/views.py +139 -0
  74. cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
  75. cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
  76. cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
  77. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +10 -0
  78. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +358 -0
  79. cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +38 -0
  80. cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +30 -0
  81. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +26 -16
  82. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +18 -2
  83. cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +151 -0
  84. cognite_toolkit/_cdf_tk/client/http_client/_exception.py +13 -0
  85. cognite_toolkit/_cdf_tk/client/http_client/_item_classes.py +118 -0
  86. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +5 -2
  87. cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
  88. cognite_toolkit/_cdf_tk/client/request_classes/filters.py +113 -0
  89. cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
  90. cognite_toolkit/_cdf_tk/client/resource_classes/__init__.py +0 -0
  91. cognite_toolkit/_cdf_tk/client/resource_classes/agent.py +130 -0
  92. cognite_toolkit/_cdf_tk/client/resource_classes/annotation.py +79 -0
  93. cognite_toolkit/_cdf_tk/client/resource_classes/apm_config.py +128 -0
  94. cognite_toolkit/_cdf_tk/client/resource_classes/asset.py +47 -0
  95. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +1 -1
  96. cognite_toolkit/_cdf_tk/client/resource_classes/cognite_file.py +53 -0
  97. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/__init__.py +168 -0
  98. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_constraints.py +37 -0
  99. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_container.py +50 -0
  100. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_model.py +73 -0
  101. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_types.py +116 -0
  102. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_indexes.py +26 -0
  103. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_instance.py +154 -0
  104. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_references.py +86 -0
  105. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_space.py +26 -0
  106. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view.py +143 -0
  107. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view_property.py +152 -0
  108. cognite_toolkit/_cdf_tk/client/resource_classes/dataset.py +35 -0
  109. cognite_toolkit/_cdf_tk/client/resource_classes/event.py +40 -0
  110. cognite_toolkit/_cdf_tk/client/resource_classes/extraction_pipeline.py +59 -0
  111. cognite_toolkit/_cdf_tk/client/resource_classes/filemetadata.py +52 -0
  112. cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
  113. cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +65 -0
  114. cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
  115. cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
  116. cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
  117. cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
  118. cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
  119. cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +63 -0
  120. cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
  121. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_destination.py +34 -0
  122. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_job.py +134 -0
  123. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_mapping.py +72 -0
  124. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/__init__.py +63 -0
  125. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_auth.py +63 -0
  126. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_base.py +26 -0
  127. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_certificate.py +20 -0
  128. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_eventhub.py +31 -0
  129. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_kafka.py +53 -0
  130. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_mqtt.py +36 -0
  131. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_rest.py +49 -0
  132. cognite_toolkit/_cdf_tk/client/resource_classes/identifiers.py +59 -0
  133. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +1 -1
  134. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +53 -14
  135. cognite_toolkit/_cdf_tk/client/resource_classes/label.py +27 -0
  136. cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
  137. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/canvas.py +48 -15
  138. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/charts.py +1 -1
  139. cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +84 -0
  140. cognite_toolkit/_cdf_tk/client/resource_classes/raw.py +44 -0
  141. cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +49 -0
  142. cognite_toolkit/_cdf_tk/client/resource_classes/resource_view_mapping.py +38 -0
  143. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
  144. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
  145. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
  146. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
  147. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
  148. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
  149. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +65 -0
  150. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +58 -0
  151. cognite_toolkit/_cdf_tk/client/resource_classes/search_config.py +54 -0
  152. cognite_toolkit/_cdf_tk/client/resource_classes/securitycategory.py +24 -0
  153. cognite_toolkit/_cdf_tk/client/resource_classes/sequence.py +45 -0
  154. cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
  155. cognite_toolkit/_cdf_tk/client/resource_classes/simulator_model.py +50 -0
  156. cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
  157. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +9 -26
  158. cognite_toolkit/_cdf_tk/client/resource_classes/three_d.py +135 -0
  159. cognite_toolkit/_cdf_tk/client/resource_classes/timeseries.py +52 -0
  160. cognite_toolkit/_cdf_tk/client/resource_classes/transformation.py +140 -0
  161. cognite_toolkit/_cdf_tk/client/resource_classes/workflow.py +27 -0
  162. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_trigger.py +63 -0
  163. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_version.py +155 -0
  164. cognite_toolkit/_cdf_tk/client/testing.py +54 -17
  165. cognite_toolkit/_cdf_tk/commands/__init__.py +1 -0
  166. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +103 -108
  167. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +29 -16
  168. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
  169. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +38 -6
  170. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +262 -36
  171. cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +1 -0
  172. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
  173. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +39 -38
  174. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +227 -8
  175. cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
  176. cognite_toolkit/_cdf_tk/commands/_purge.py +14 -16
  177. cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
  178. cognite_toolkit/_cdf_tk/commands/build_cmd.py +12 -2
  179. cognite_toolkit/_cdf_tk/commands/build_v2/__init__.py +0 -0
  180. cognite_toolkit/_cdf_tk/commands/build_v2/_module_parser.py +138 -0
  181. cognite_toolkit/_cdf_tk/commands/build_v2/_modules_parser.py +163 -0
  182. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +228 -0
  183. cognite_toolkit/_cdf_tk/commands/build_v2/build_parameters.py +71 -0
  184. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_modules.py +27 -0
  185. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_resource.py +22 -0
  186. cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
  187. cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
  188. cognite_toolkit/_cdf_tk/commands/run.py +1 -1
  189. cognite_toolkit/_cdf_tk/cruds/__init__.py +16 -6
  190. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +9 -5
  191. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  192. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +6 -2
  193. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +70 -89
  194. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
  195. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
  196. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
  197. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +34 -25
  198. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +50 -59
  199. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +14 -2
  200. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
  201. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +4 -3
  202. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
  203. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
  204. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +5 -4
  205. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
  206. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
  207. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +15 -31
  208. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +42 -47
  209. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +49 -14
  210. cognite_toolkit/_cdf_tk/data_classes/__init__.py +3 -0
  211. cognite_toolkit/_cdf_tk/data_classes/_issues.py +36 -0
  212. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +2 -1
  213. cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +1 -0
  214. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +4 -0
  215. cognite_toolkit/_cdf_tk/feature_flags.py +8 -0
  216. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +2 -0
  217. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
  218. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  219. cognite_toolkit/_cdf_tk/resource_classes/simulator_model.py +17 -0
  220. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +173 -5
  221. cognite_toolkit/_cdf_tk/storageio/_applications.py +53 -15
  222. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +117 -107
  223. cognite_toolkit/_cdf_tk/storageio/_base.py +3 -1
  224. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
  225. cognite_toolkit/_cdf_tk/storageio/_file_content.py +65 -56
  226. cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
  227. cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
  228. cognite_toolkit/_cdf_tk/storageio/logger.py +162 -0
  229. cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +10 -1
  230. cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
  231. cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
  232. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +20 -0
  233. cognite_toolkit/_cdf_tk/utils/__init__.py +11 -1
  234. cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
  235. cognite_toolkit/_cdf_tk/utils/interactive_select.py +53 -4
  236. cognite_toolkit/_cdf_tk/utils/modules.py +7 -0
  237. cognite_toolkit/_cdf_tk/utils/pip_validator.py +96 -0
  238. cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
  239. cognite_toolkit/_cdf_tk/utils/useful_types2.py +14 -0
  240. cognite_toolkit/_cdf_tk/validation.py +4 -0
  241. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  242. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  243. cognite_toolkit/_resources/cdf.toml +1 -1
  244. cognite_toolkit/_version.py +1 -1
  245. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/METADATA +13 -3
  246. cognite_toolkit-0.7.51.dist-info/RECORD +445 -0
  247. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/WHEEL +2 -2
  248. cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -3
  249. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -17
  250. cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -87
  251. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -47
  252. cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
  253. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -187
  254. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -4
  255. cognite_toolkit-0.7.30.dist-info/RECORD +0 -316
  256. /cognite_toolkit/_cdf_tk/client/{data_classes → api/legacy}/__init__.py +0 -0
  257. /cognite_toolkit/_cdf_tk/client/api/{dml.py → legacy/dml.py} +0 -0
  258. /cognite_toolkit/_cdf_tk/client/api/{fixed_transformations.py → legacy/fixed_transformations.py} +0 -0
  259. /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/api.py +0 -0
  260. /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/utlis.py +0 -0
  261. /cognite_toolkit/_cdf_tk/{prototypes/commands → client/request_classes}/__init__.py +0 -0
  262. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
  263. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/apm_config_v1.py +0 -0
  264. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extendable_cognite_file.py +0 -0
  265. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetadata.py +0 -0
  266. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetdata.py +0 -0
  267. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_timeseries.py +0 -0
  268. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/functions.py +0 -0
  269. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/graphql_data_models.py +0 -0
  270. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/instances.py +0 -0
  271. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/location_filters.py +0 -0
  272. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/migration.py +0 -0
  273. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/pending_instances_ids.py +0 -0
  274. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/project.py +0 -0
  275. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/raw.py +0 -0
  276. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/robotics.py +0 -0
  277. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/search_config.py +0 -0
  278. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/sequences.py +0 -0
  279. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/streamlit_.py +0 -0
  280. /cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -0
  281. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,6 @@
1
1
  import dataclasses
2
2
  import itertools
3
+ import json
3
4
  import re
4
5
  import sys
5
6
  import tempfile
@@ -28,6 +29,7 @@ from cognite_toolkit._cdf_tk.cruds import (
28
29
  HostedExtractorSourceCRUD,
29
30
  ResourceCRUD,
30
31
  StreamlitCRUD,
32
+ ViewCRUD,
31
33
  )
32
34
  from cognite_toolkit._cdf_tk.data_classes import (
33
35
  BuildEnvironment,
@@ -643,6 +645,44 @@ class PullCommand(ToolkitCommand):
643
645
  loader: ResourceCRUD[T_ID, T_ResourceRequest, T_ResourceResponse],
644
646
  source_file: Path,
645
647
  ) -> tuple[str, dict[Path, str]]:
648
+ """Convert resource data from CDF into YAML file content ready to be written to disk.
649
+
650
+ This method takes the raw CDF resource data and transforms it back into a properly
651
+ formatted YAML file that preserves:
652
+ - Template variables (e.g., {{ variable_name }}) instead of their resolved values
653
+ - YAML comments from the original source file
654
+ - The original key ordering in dictionaries
655
+
656
+ The transformation process:
657
+ 1. Replace all template variables with unique placeholders
658
+ 2. Load source YAML content while preserving comments
659
+ 3. Update the resource data with placeholder values where variables were used
660
+ 4. Dump the updated data back to YAML format
661
+ 5. Replace placeholders with the original template variable syntax
662
+ 6. Restore the YAML comments
663
+
664
+ Args:
665
+ source: The original YAML file content as a string.
666
+ to_write: A mapping from resource identifiers to their updated data dictionaries
667
+ pulled from CDF.
668
+ resources: The list of built resources containing build variables and metadata.
669
+ environment_variables: A mapping of environment variable names to their values,
670
+ used to resolve variables like ${VAR_NAME} in template values.
671
+ loader: The ResourceCRUD loader instance for this resource type.
672
+ source_file: The path to the source file being processed.
673
+
674
+ Returns:
675
+ A tuple containing:
676
+ - The final YAML content string ready to be written to disk.
677
+ - A dictionary mapping extra file paths to their content (for resources
678
+ that have additional files, like SQL queries for transformations).
679
+
680
+ Raises:
681
+ ValueError: If the loaded YAML structure doesn't match between the original
682
+ and placeholder versions.
683
+ ToolkitMissingResourceError: If a resource identifier is not found in the
684
+ to_write or resources mappings.
685
+ """
646
686
  # 1. Replace all variables with placeholders
647
687
  # 2. Load source and keep the comments
648
688
  # 3. Update the to_write dict with the placeholders
@@ -762,9 +802,22 @@ class PullCommand(ToolkitCommand):
762
802
 
763
803
 
764
804
  class ResourceReplacer:
765
- """Replaces values in a local resource directory with the updated values from CDF.
805
+ """Replaces values in a local resource dictionary with the updated values from CDF.
766
806
 
767
807
  The local resource dict order is maintained. In addition, placeholders are used for variables.
808
+
809
+ This class is responsible for merging CDF resource values back into local configuration files
810
+ while preserving:
811
+ - The original key ordering in dictionaries
812
+ - Template variable placeholders (e.g., {{ variable_name }})
813
+ - Comments and formatting where possible
814
+
815
+ Args:
816
+ value_by_placeholder: A mapping from placeholder strings to their corresponding
817
+ BuildVariable objects. Placeholders are temporary substitutes for template
818
+ variables during processing.
819
+ loader: The ResourceCRUD loader instance used to determine how to diff lists
820
+ and handle resource-specific logic.
768
821
  """
769
822
 
770
823
  def __init__(self, value_by_placeholder: dict[str, BuildVariable], loader: ResourceCRUD) -> None:
@@ -777,7 +830,49 @@ class ResourceReplacer:
777
830
  placeholder: dict[str, Any],
778
831
  to_write: dict[str, Any],
779
832
  ) -> dict[str, Any]:
780
- return self._replace_dict(current, placeholder, to_write, tuple())
833
+ """Replace values in a local resource dict with updated values from CDF.
834
+
835
+ Merges the CDF resource values into the local configuration while maintaining
836
+ the original dictionary key ordering and preserving template variable placeholders.
837
+
838
+ Args:
839
+ current: The current local resource dictionary with resolved variable values.
840
+ This represents the source file content after template variables have
841
+ been substituted with their actual values.
842
+ placeholder: The local resource dictionary with placeholder strings instead
843
+ of resolved values. Used to identify which values contain template
844
+ variables that should be preserved.
845
+ to_write: The resource dictionary from CDF containing the updated values
846
+ to merge into the local configuration.
847
+
848
+ Returns:
849
+ A new dictionary with CDF values merged in, maintaining the original key
850
+ order from `current`. Template variables are preserved as placeholders
851
+ (to be converted back to {{ variable }} syntax by the caller). New keys
852
+ from CDF are appended at the end, and removed keys are omitted.
853
+
854
+ Raises:
855
+ ToolkitValueError: If a list variable has changed and cannot be updated,
856
+ or if there's a type mismatch between local and CDF values.
857
+ """
858
+ has_stringified_view_filter = False
859
+ if isinstance(self._loader, ViewCRUD):
860
+ # view.filter are recursive nested dicts that are complex. To avoid issues with comparing
861
+ # lists inside the filters, we stringify them before processing such that they are compared
862
+ # as strings.
863
+ processed = []
864
+ for d in (current, placeholder, to_write):
865
+ if isinstance(d.get("filter"), dict):
866
+ d = d.copy()
867
+ d["filter"] = json.dumps(d["filter"])
868
+ has_stringified_view_filter = True
869
+ processed.append(d)
870
+ current, placeholder, to_write = processed
871
+ output = self._replace_dict(current, placeholder, to_write, tuple())
872
+ if has_stringified_view_filter and "filter" in output:
873
+ # Special case for ViewCRUD where the filter is stringified in CDF
874
+ output["filter"] = json.loads(output["filter"])
875
+ return output
781
876
 
782
877
  def _replace_dict(
783
878
  self,
@@ -30,7 +30,7 @@ from rich.progress import Progress
30
30
  from rich.table import Table
31
31
 
32
32
  from cognite_toolkit._cdf_tk.client import ToolkitClient, ToolkitClientConfig
33
- from cognite_toolkit._cdf_tk.client.data_classes.functions import FunctionScheduleID
33
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.functions import FunctionScheduleID
34
34
  from cognite_toolkit._cdf_tk.constants import _RUNNING_IN_BROWSER
35
35
  from cognite_toolkit._cdf_tk.cruds import FunctionCRUD, FunctionScheduleCRUD, WorkflowVersionCRUD
36
36
  from cognite_toolkit._cdf_tk.cruds._resource_cruds.workflow import WorkflowTriggerCRUD
@@ -12,6 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  import itertools
15
+ from collections import defaultdict
15
16
  from typing import Literal, TypeAlias
16
17
 
17
18
  from cognite_toolkit._cdf_tk.feature_flags import FeatureFlag, Flags
@@ -60,6 +61,7 @@ from ._resource_cruds import (
60
61
  SecurityCategoryCRUD,
61
62
  SequenceCRUD,
62
63
  SequenceRowCRUD,
64
+ SimulatorModelCRUD,
63
65
  SpaceCRUD,
64
66
  StreamCRUD,
65
67
  StreamlitCRUD,
@@ -86,26 +88,31 @@ if not FeatureFlag.is_enabled(Flags.MIGRATE):
86
88
  _EXCLUDED_CRUDS.add(ResourceViewMappingCRUD)
87
89
  if not FeatureFlag.is_enabled(Flags.STREAMS):
88
90
  _EXCLUDED_CRUDS.add(StreamCRUD)
91
+ if not FeatureFlag.is_enabled(Flags.SIMULATORS):
92
+ _EXCLUDED_CRUDS.add(SimulatorModelCRUD)
89
93
 
90
-
91
- CRUDS_BY_FOLDER_NAME: dict[str, list[type[Loader]]] = {}
94
+ CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA: defaultdict[str, list[type[Loader]]] = defaultdict(list)
95
+ CRUDS_BY_FOLDER_NAME: defaultdict[str, list[type[Loader]]] = defaultdict(list)
92
96
  for _loader in itertools.chain(
93
97
  ResourceCRUD.__subclasses__(),
94
98
  ResourceContainerCRUD.__subclasses__(),
95
99
  DataCRUD.__subclasses__(),
96
100
  GroupCRUD.__subclasses__(),
97
101
  ):
98
- if _loader in [ResourceCRUD, ResourceContainerCRUD, DataCRUD, GroupCRUD] or _loader in _EXCLUDED_CRUDS:
102
+ if _loader in [ResourceCRUD, ResourceContainerCRUD, DataCRUD, GroupCRUD]:
99
103
  # Skipping base classes
100
104
  continue
101
- if _loader.folder_name not in CRUDS_BY_FOLDER_NAME: # type: ignore[attr-defined]
102
- CRUDS_BY_FOLDER_NAME[_loader.folder_name] = [] # type: ignore[attr-defined]
103
105
  # MyPy bug: https://github.com/python/mypy/issues/4717
104
- CRUDS_BY_FOLDER_NAME[_loader.folder_name].append(_loader) # type: ignore[arg-type, attr-defined]
106
+ CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA[_loader.folder_name].append(_loader) # type: ignore[arg-type, attr-defined]
107
+
108
+ if _loader not in _EXCLUDED_CRUDS:
109
+ CRUDS_BY_FOLDER_NAME[_loader.folder_name].append(_loader) # type: ignore[arg-type, attr-defined]
105
110
  del _loader # cleanup module namespace
106
111
 
112
+
107
113
  # For backwards compatibility
108
114
  CRUDS_BY_FOLDER_NAME["data_models"] = CRUDS_BY_FOLDER_NAME["data_modeling"] # Todo: Remove in v1.0
115
+ CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA["data_models"] = CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA["data_modeling"]
109
116
  RESOURCE_CRUD_BY_FOLDER_NAME = {
110
117
  folder_name: cruds
111
118
  for folder_name, loaders in CRUDS_BY_FOLDER_NAME.items()
@@ -142,6 +149,7 @@ ResourceTypes: TypeAlias = Literal[
142
149
  "functions",
143
150
  "raw",
144
151
  "robotics",
152
+ "simulators",
145
153
  "streams",
146
154
  "streamlit",
147
155
  "workflows",
@@ -163,6 +171,7 @@ __all__ = [
163
171
  "RESOURCE_CRUD_CONTAINER_LIST",
164
172
  "RESOURCE_CRUD_LIST",
165
173
  "RESOURCE_DATA_CRUD_LIST",
174
+ "_EXCLUDED_CRUDS",
166
175
  "AgentCRUD",
167
176
  "AssetCRUD",
168
177
  "CogniteFileCRUD",
@@ -209,6 +218,7 @@ __all__ = [
209
218
  "SecurityCategoryCRUD",
210
219
  "SequenceCRUD",
211
220
  "SequenceRowCRUD",
221
+ "SimulatorModelCRUD",
212
222
  "SpaceCRUD",
213
223
  "StreamlitCRUD",
214
224
  "ThreeDModelCRUD",
@@ -6,8 +6,9 @@ from typing import TYPE_CHECKING, cast, final
6
6
  import pandas as pd
7
7
  from cognite.client.data_classes import FileMetadataWrite
8
8
 
9
- from cognite_toolkit._cdf_tk.client.data_classes.extendable_cognite_file import ExtendableCogniteFileApply
10
- from cognite_toolkit._cdf_tk.client.data_classes.raw import RawTable
9
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
10
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.extendable_cognite_file import ExtendableCogniteFileApply
11
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawTable
11
12
  from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING
12
13
  from cognite_toolkit._cdf_tk.protocols import (
13
14
  T_ResourceRequest,
@@ -119,11 +120,14 @@ class FileCRUD(DataCRUD):
119
120
  if not datafile.exists():
120
121
  continue
121
122
 
123
+ identifier = resource.identifier
124
+ if isinstance(identifier, ExternalId):
125
+ identifier = identifier.external_id
122
126
  if dry_run:
123
- yield f" Would upload file '{datafile!s}' to file with {id_name}={resource.identifier!r}", 1
127
+ yield f" Would upload file '{datafile!s}' to file with {id_name}={identifier!r}", 1
124
128
  else:
125
- self.client.files.upload_content(path=str(datafile), **{id_name: resource.identifier})
126
- yield f" Uploaded file '{datafile!s}' to file with {id_name}={resource.identifier!r}", 1
129
+ self.client.files.upload_content(path=str(datafile), **{id_name: identifier})
130
+ yield f" Uploaded file '{datafile!s}' to file with {id_name}={identifier!r}", 1
127
131
 
128
132
  @staticmethod
129
133
  def _read_metadata(
@@ -35,6 +35,7 @@ from .robotics import (
35
35
  RoboticMapCRUD,
36
36
  RoboticsDataPostProcessingCRUD,
37
37
  )
38
+ from .simulators import SimulatorModelCRUD
38
39
  from .streams import StreamCRUD
39
40
  from .three_d_model import ThreeDModelCRUD
40
41
  from .timeseries import DatapointSubscriptionCRUD, TimeSeriesCRUD
@@ -83,6 +84,7 @@ __all__ = [
83
84
  "SecurityCategoryCRUD",
84
85
  "SequenceCRUD",
85
86
  "SequenceRowCRUD",
87
+ "SimulatorModelCRUD",
86
88
  "SpaceCRUD",
87
89
  "StreamCRUD",
88
90
  "StreamlitCRUD",
@@ -41,7 +41,8 @@ from rich.console import Console
41
41
  from rich.markup import escape
42
42
 
43
43
  from cognite_toolkit._cdf_tk.client import ToolkitClient
44
- from cognite_toolkit._cdf_tk.client.data_classes.raw import RawDatabase, RawTable
44
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
45
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawDatabase, RawTable
45
46
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
46
47
  from cognite_toolkit._cdf_tk.exceptions import ToolkitWrongResourceError
47
48
  from cognite_toolkit._cdf_tk.resource_classes import GroupYAML, SecurityCategoriesYAML
@@ -190,7 +191,10 @@ class GroupCRUD(ResourceCRUD[str, GroupWrite, Group]):
190
191
  loader = LocationFilterCRUD
191
192
  if loader is not None and isinstance(ids, dict) and "ids" in ids:
192
193
  for id_ in ids["ids"]:
193
- yield loader, id_
194
+ if loader is TimeSeriesCRUD:
195
+ yield TimeSeriesCRUD, ExternalId(external_id=id_)
196
+ else:
197
+ yield loader, id_
194
198
 
195
199
  def _substitute_scope_ids(self, group: dict[str, Any], is_dry_run: bool, reverse: bool = False) -> dict[str, Any]:
196
200
  replace_method_by_acl = self._create_replace_method_by_acl_and_scope()
@@ -5,26 +5,27 @@ from pathlib import Path
5
5
  from typing import Any, final
6
6
 
7
7
  import pandas as pd
8
+ from cognite.client.data_classes import Sequence as CDFSequence
8
9
  from cognite.client.data_classes import (
9
- AggregateResultItem,
10
- Asset,
11
- AssetList,
12
- AssetWrite,
13
- Event,
14
- EventList,
15
- EventWrite,
16
10
  SequenceList,
17
11
  SequenceWrite,
18
12
  capabilities,
19
13
  )
20
- from cognite.client.data_classes import Sequence as CDFSequence
21
14
  from cognite.client.data_classes.capabilities import Capability
22
15
  from cognite.client.exceptions import CogniteAPIError, CogniteNotFoundError
23
16
  from cognite.client.utils.useful_types import SequenceNotStr
24
17
  from rich.console import Console
25
18
 
26
19
  from cognite_toolkit._cdf_tk.client import ToolkitClient
27
- from cognite_toolkit._cdf_tk.client.data_classes.sequences import (
20
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
21
+ from cognite_toolkit._cdf_tk.client.resource_classes.asset import (
22
+ AssetAggregateItem,
23
+ AssetRequest,
24
+ AssetResponse,
25
+ )
26
+ from cognite_toolkit._cdf_tk.client.resource_classes.event import EventRequest, EventResponse
27
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId, InternalOrExternalId
28
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.sequences import (
28
29
  ToolkitSequenceRows,
29
30
  ToolkitSequenceRowsList,
30
31
  ToolkitSequenceRowsWrite,
@@ -44,10 +45,10 @@ _DEPRECATION_WARNING_ISSUED = False
44
45
 
45
46
 
46
47
  @final
47
- class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
48
+ class AssetCRUD(ResourceCRUD[ExternalId, AssetRequest, AssetResponse]):
48
49
  folder_name = "classic"
49
- resource_cls = Asset
50
- resource_write_cls = AssetWrite
50
+ resource_cls = AssetResponse
51
+ resource_write_cls = AssetRequest
51
52
  yaml_cls = AssetYAML
52
53
  kind = "Asset"
53
54
  dependencies = frozenset({DataSetsCRUD, LabelCRUD})
@@ -78,15 +79,15 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
78
79
  return "assets"
79
80
 
80
81
  @classmethod
81
- def get_id(cls, item: Asset | AssetWrite | dict) -> str:
82
+ def get_id(cls, item: AssetRequest | AssetResponse | dict) -> ExternalId:
82
83
  if isinstance(item, dict):
83
- return item["externalId"]
84
+ return ExternalId(external_id=item["externalId"])
84
85
  if not item.external_id:
85
86
  raise KeyError("Asset must have external_id")
86
- return item.external_id
87
+ return ExternalId(external_id=item.external_id)
87
88
 
88
89
  @classmethod
89
- def get_internal_id(cls, item: Asset | dict) -> int:
90
+ def get_internal_id(cls, item: AssetResponse | dict) -> int:
90
91
  if isinstance(item, dict):
91
92
  return item["id"]
92
93
  if not item.id:
@@ -94,12 +95,12 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
94
95
  return item.id
95
96
 
96
97
  @classmethod
97
- def dump_id(cls, id: str) -> dict[str, Any]:
98
- return {"externalId": id}
98
+ def dump_id(cls, id: ExternalId) -> dict[str, Any]:
99
+ return id.dump()
99
100
 
100
101
  @classmethod
101
102
  def get_required_capability(
102
- cls, items: collections.abc.Sequence[AssetWrite] | None, read_only: bool
103
+ cls, items: collections.abc.Sequence[AssetRequest] | None, read_only: bool
103
104
  ) -> Capability | list[Capability]:
104
105
  if not items and items is not None:
105
106
  return []
@@ -119,45 +120,30 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
119
120
 
120
121
  return capabilities.AssetsAcl(actions, scope)
121
122
 
122
- def create(self, items: Sequence[AssetWrite]) -> AssetList:
123
- return self.client.assets.create(items)
123
+ def create(self, items: collections.abc.Sequence[AssetRequest]) -> list[AssetResponse]:
124
+ return self.client.tool.assets.create(items)
124
125
 
125
- def retrieve(self, ids: SequenceNotStr[str]) -> AssetList:
126
- return self.client.assets.retrieve_multiple(external_ids=ids, ignore_unknown_ids=True)
126
+ def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[AssetResponse]:
127
+ return self.client.tool.assets.retrieve(list(ids), ignore_unknown_ids=True)
127
128
 
128
- def update(self, items: Sequence[AssetWrite]) -> AssetList:
129
- return self.client.assets.update(items, mode="replace")
129
+ def update(self, items: collections.abc.Sequence[AssetRequest]) -> list[AssetResponse]:
130
+ return self.client.tool.assets.update(items, mode="replace")
130
131
 
131
- def delete(self, ids: SequenceNotStr[str | int]) -> int:
132
+ def delete(self, ids: SequenceNotStr[InternalOrExternalId]) -> int:
132
133
  if not ids:
133
134
  return 0
134
- internal_ids, external_ids = self._split_ids(ids)
135
- try:
136
- self.client.assets.delete(id=internal_ids, external_id=external_ids)
137
- except CogniteNotFoundError as e:
138
- # Do a CogniteNotFoundError instead of passing 'ignore_unknown_ids=True' to the delete method
139
- # to obtain an accurate list of deleted assets.
140
- non_existing = set(e.failed or [])
141
- if existing := [id_ for id_ in ids if id_ not in non_existing]:
142
- internal_ids, external_ids = self._split_ids(existing)
143
- self.client.assets.delete(id=internal_ids, external_id=external_ids)
144
- return len(existing)
145
- else:
146
- return len(ids)
135
+ self.client.tool.assets.delete(list(ids), ignore_unknown_ids=True)
136
+ return len(ids)
147
137
 
148
138
  def _iterate(
149
139
  self,
150
140
  data_set_external_id: str | None = None,
151
141
  space: str | None = None,
152
142
  parent_ids: list[Hashable] | None = None,
153
- ) -> Iterable[Asset]:
154
- return iter(
155
- self.client.assets(
156
- data_set_external_ids=[data_set_external_id] if data_set_external_id else None,
157
- # This is used in the purge command to delete the children before the parent.
158
- aggregated_properties=["depth", "child_count", "path"],
159
- )
160
- )
143
+ ) -> Iterable[AssetResponse]:
144
+ filter_ = ClassicFilter.from_asset_subtree_and_data_sets(data_set_id=data_set_external_id)
145
+ for assets in self.client.tool.assets.iterate(aggregated_properties=True, filter=filter_, limit=None):
146
+ yield from assets
161
147
 
162
148
  @classmethod
163
149
  def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
@@ -202,7 +188,7 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
202
188
 
203
189
  return resources
204
190
 
205
- def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> AssetWrite:
191
+ def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> AssetRequest:
206
192
  # Unpack metadata keys from table formats (e.g. csv, parquet)
207
193
  metadata: dict = resource.get("metadata", {})
208
194
  for key, value in list(resource.items()):
@@ -219,10 +205,10 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
219
205
 
220
206
  if ds_external_id := resource.pop("dataSetExternalId", None):
221
207
  resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
222
- return AssetWrite._load(resource)
208
+ return AssetRequest.model_validate(resource)
223
209
 
224
- def dump_resource(self, resource: Asset, local: dict[str, Any] | None = None) -> dict[str, Any]:
225
- dumped = resource.as_write().dump()
210
+ def dump_resource(self, resource: AssetResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
211
+ dumped = resource.as_request_resource().dump()
226
212
  local = local or {}
227
213
  if data_set_id := dumped.pop("dataSetId", None):
228
214
  dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
@@ -234,7 +220,7 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
234
220
  # This is only included when the asset is downloaded/migrated with aggregated properties
235
221
  aggregates = (
236
222
  resource.aggregates.dump()
237
- if isinstance(resource.aggregates, AggregateResultItem)
223
+ if isinstance(resource.aggregates, AssetAggregateItem)
238
224
  else resource.aggregates
239
225
  )
240
226
  if "path" in aggregates:
@@ -372,7 +358,7 @@ class SequenceCRUD(ResourceCRUD[str, SequenceWrite, CDFSequence]):
372
358
  if "dataSetExternalId" in item:
373
359
  yield DataSetsCRUD, item["dataSetExternalId"]
374
360
  if "assetExternalId" in item:
375
- yield AssetCRUD, item["assetExternalId"]
361
+ yield AssetCRUD, ExternalId(external_id=item["assetExternalId"])
376
362
 
377
363
 
378
364
  @final
@@ -500,10 +486,10 @@ class SequenceRowCRUD(ResourceCRUD[str, ToolkitSequenceRowsWrite, ToolkitSequenc
500
486
 
501
487
 
502
488
  @final
503
- class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
489
+ class EventCRUD(ResourceCRUD[ExternalId, EventRequest, EventResponse]):
504
490
  folder_name = "classic"
505
- resource_cls = Event
506
- resource_write_cls = EventWrite
491
+ resource_cls = EventResponse
492
+ resource_write_cls = EventRequest
507
493
  yaml_cls = EventYAML
508
494
  kind = "Event"
509
495
  dependencies = frozenset({DataSetsCRUD, AssetCRUD})
@@ -514,15 +500,15 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
514
500
  return "events"
515
501
 
516
502
  @classmethod
517
- def get_id(cls, item: Event | EventWrite | dict) -> str:
503
+ def get_id(cls, item: EventRequest | EventResponse | dict) -> ExternalId:
518
504
  if isinstance(item, dict):
519
- return item["externalId"]
505
+ return ExternalId(external_id=item["externalId"])
520
506
  if not item.external_id:
521
507
  raise KeyError("Event must have external_id")
522
- return item.external_id
508
+ return ExternalId(external_id=item.external_id)
523
509
 
524
510
  @classmethod
525
- def get_internal_id(cls, item: Event | dict) -> int:
511
+ def get_internal_id(cls, item: EventResponse | dict) -> int:
526
512
  if isinstance(item, dict):
527
513
  return item["id"]
528
514
  if not item.id:
@@ -530,12 +516,12 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
530
516
  return item.id
531
517
 
532
518
  @classmethod
533
- def dump_id(cls, id: str) -> dict[str, Any]:
534
- return {"externalId": id}
519
+ def dump_id(cls, id: ExternalId) -> dict[str, Any]:
520
+ return id.dump()
535
521
 
536
522
  @classmethod
537
523
  def get_required_capability(
538
- cls, items: collections.abc.Sequence[EventWrite] | None, read_only: bool
524
+ cls, items: collections.abc.Sequence[EventRequest] | None, read_only: bool
539
525
  ) -> Capability | list[Capability]:
540
526
  if not items and items is not None:
541
527
  return []
@@ -555,35 +541,30 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
555
541
 
556
542
  return capabilities.EventsAcl(actions, scope)
557
543
 
558
- def create(self, items: Sequence[EventWrite]) -> EventList:
559
- return self.client.events.create(items)
544
+ def create(self, items: collections.abc.Sequence[EventRequest]) -> list[EventResponse]:
545
+ return self.client.tool.events.create(items)
560
546
 
561
- def retrieve(self, ids: SequenceNotStr[str]) -> EventList:
562
- return self.client.events.retrieve_multiple(external_ids=ids, ignore_unknown_ids=True)
547
+ def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[EventResponse]:
548
+ return self.client.tool.events.retrieve(list(ids), ignore_unknown_ids=True)
563
549
 
564
- def update(self, items: Sequence[EventWrite]) -> EventList:
565
- return self.client.events.update(items, mode="replace")
550
+ def update(self, items: collections.abc.Sequence[EventRequest]) -> list[EventResponse]:
551
+ return self.client.tool.events.update(items, mode="replace")
566
552
 
567
- def delete(self, ids: SequenceNotStr[str | int]) -> int:
568
- internal_ids, external_ids = self._split_ids(ids)
569
- try:
570
- self.client.events.delete(id=internal_ids, external_id=external_ids)
571
- except (CogniteAPIError, CogniteNotFoundError) as e:
572
- non_existing = set(e.failed or [])
573
- if existing := [id_ for id_ in ids if id_ not in non_existing]:
574
- internal_ids, external_ids = self._split_ids(existing)
575
- self.client.events.delete(id=internal_ids, external_id=external_ids)
576
- return len(existing)
577
- else:
578
- return len(ids)
553
+ def delete(self, ids: SequenceNotStr[InternalOrExternalId]) -> int:
554
+ if not ids:
555
+ return 0
556
+ self.client.tool.events.delete(list(ids), ignore_unknown_ids=True)
557
+ return len(ids)
579
558
 
580
559
  def _iterate(
581
560
  self,
582
561
  data_set_external_id: str | None = None,
583
562
  space: str | None = None,
584
563
  parent_ids: list[Hashable] | None = None,
585
- ) -> Iterable[Event]:
586
- return iter(self.client.events(data_set_external_ids=[data_set_external_id] if data_set_external_id else None))
564
+ ) -> Iterable[EventResponse]:
565
+ filter_ = ClassicFilter.from_asset_subtree_and_data_sets(data_set_id=data_set_external_id)
566
+ for events in self.client.tool.events.iterate(filter=filter_, limit=None):
567
+ yield from events
587
568
 
588
569
  @classmethod
589
570
  def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
@@ -596,17 +577,17 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
596
577
  yield DataSetsCRUD, item["dataSetExternalId"]
597
578
  for asset_id in item.get("assetExternalIds", []):
598
579
  if isinstance(asset_id, str):
599
- yield AssetCRUD, asset_id
580
+ yield AssetCRUD, ExternalId(external_id=asset_id)
600
581
 
601
- def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> EventWrite:
602
- if ds_external_id := resource.get("dataSetExternalId", None):
582
+ def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> EventRequest:
583
+ if ds_external_id := resource.pop("dataSetExternalId", None):
603
584
  resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
604
585
  if asset_external_ids := resource.pop("assetExternalIds", []):
605
586
  resource["assetIds"] = self.client.lookup.assets.id(asset_external_ids, is_dry_run)
606
- return EventWrite._load(resource)
587
+ return EventRequest.model_validate(resource)
607
588
 
608
- def dump_resource(self, resource: Event, local: dict[str, Any] | None = None) -> dict[str, Any]:
609
- dumped = resource.as_write().dump()
589
+ def dump_resource(self, resource: EventResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
590
+ dumped = resource.as_request_resource().dump()
610
591
  local = local or {}
611
592
  if data_set_id := dumped.pop("dataSetId", None):
612
593
  dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
@@ -7,7 +7,7 @@ from cognite.client.utils.useful_types import SequenceNotStr
7
7
  from rich.console import Console
8
8
 
9
9
  from cognite_toolkit._cdf_tk.client import ToolkitClient
10
- from cognite_toolkit._cdf_tk.client.data_classes.search_config import (
10
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.search_config import (
11
11
  SearchConfig,
12
12
  SearchConfigList,
13
13
  SearchConfigWrite,
@@ -73,7 +73,7 @@ from rich.panel import Panel
73
73
 
74
74
  from cognite_toolkit._cdf_tk import constants
75
75
  from cognite_toolkit._cdf_tk.client import ToolkitClient
76
- from cognite_toolkit._cdf_tk.client.data_classes.graphql_data_models import (
76
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.graphql_data_models import (
77
77
  GraphQLDataModel,
78
78
  GraphQLDataModelList,
79
79
  GraphQLDataModelWrite,
@@ -35,7 +35,7 @@ from cognite.client.data_classes.extractionpipelines import (
35
35
  from cognite.client.exceptions import CogniteAPIError, CogniteDuplicatedError, CogniteNotFoundError
36
36
  from cognite.client.utils.useful_types import SequenceNotStr
37
37
 
38
- from cognite_toolkit._cdf_tk.client.data_classes.raw import RawDatabase, RawTable
38
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawDatabase, RawTable
39
39
  from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING
40
40
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
41
41
  from cognite_toolkit._cdf_tk.exceptions import (