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
@@ -8,17 +8,18 @@ from cognite.client.data_classes.data_modeling import NodeApplyResultList, NodeI
8
8
  from cognite.client.exceptions import CogniteAPIError
9
9
  from cognite.client.utils.useful_types import SequenceNotStr
10
10
 
11
- from cognite_toolkit._cdf_tk.client.data_classes.apm_config_v1 import (
12
- APMConfig,
13
- APMConfigList,
14
- APMConfigWrite,
15
- )
16
- from cognite_toolkit._cdf_tk.client.data_classes.infield import (
11
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
12
+ from cognite_toolkit._cdf_tk.client.resource_classes.infield import (
17
13
  InFieldCDMLocationConfig,
18
14
  InfieldLocationConfig,
19
15
  InfieldLocationConfigList,
20
16
  )
21
- from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceResult, NodeIdentifier
17
+ from cognite_toolkit._cdf_tk.client.resource_classes.instance_api import InstanceResult, TypedNodeIdentifier
18
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.apm_config_v1 import (
19
+ APMConfig,
20
+ APMConfigList,
21
+ APMConfigWrite,
22
+ )
22
23
  from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING
23
24
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
24
25
  from cognite_toolkit._cdf_tk.resource_classes import (
@@ -139,7 +140,7 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig]):
139
140
  yield SpaceCRUD, customer_data_space_id
140
141
  for config in cls._get_root_location_configurations(item) or []:
141
142
  if isinstance(asset_external_id := config.get("assetExternalId"), str):
142
- yield AssetCRUD, asset_external_id
143
+ yield AssetCRUD, ExternalId(external_id=asset_external_id)
143
144
  if isinstance(data_set_external_id := config.get("dataSetExternalId"), str):
144
145
  yield DataSetsCRUD, data_set_external_id
145
146
  if isinstance(app_data_instance_space := config.get("appDataInstanceSpace"), str):
@@ -162,7 +163,7 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig]):
162
163
  yield DataSetsCRUD, data_set_external_id
163
164
  for asset_external_id in filter_.get("assetSubtreeExternalIds", []):
164
165
  if isinstance(asset_external_id, str):
165
- yield AssetCRUD, asset_external_id
166
+ yield AssetCRUD, ExternalId(external_id=asset_external_id)
166
167
  if app_data_instance_space := filter_.get("appDataInstanceSpace"):
167
168
  if isinstance(app_data_instance_space, str):
168
169
  yield SpaceCRUD, app_data_instance_space
@@ -246,7 +247,7 @@ class InfieldV1CRUD(ResourceCRUD[str, APMConfigWrite, APMConfig]):
246
247
 
247
248
 
248
249
  @final
249
- class InFieldLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InfieldLocationConfig, InfieldLocationConfig]):
250
+ class InFieldLocationConfigCRUD(ResourceCRUD[TypedNodeIdentifier, InfieldLocationConfig, InfieldLocationConfig]):
250
251
  folder_name = "cdf_applications"
251
252
  resource_cls = InfieldLocationConfig
252
253
  resource_write_cls = InfieldLocationConfig
@@ -260,14 +261,17 @@ class InFieldLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InfieldLocationConf
260
261
  return "infield location configs"
261
262
 
262
263
  @classmethod
263
- def get_id(cls, item: InfieldLocationConfig | dict) -> NodeIdentifier:
264
+ def get_id(cls, item: InfieldLocationConfig | dict) -> TypedNodeIdentifier:
264
265
  if isinstance(item, dict):
265
- return NodeIdentifier(space=item["space"], external_id=item["externalId"])
266
- return NodeIdentifier(space=item.space, external_id=item.external_id)
266
+ return TypedNodeIdentifier(space=item["space"], external_id=item["externalId"])
267
+ return TypedNodeIdentifier(space=item.space, external_id=item.external_id)
267
268
 
268
269
  @classmethod
269
- def dump_id(cls, id: NodeIdentifier) -> dict[str, Any]:
270
- return id.dump(include_type=False)
270
+ def dump_id(cls, id: TypedNodeIdentifier) -> dict[str, Any]:
271
+ return {
272
+ "space": id.space,
273
+ "externalId": id.external_id,
274
+ }
271
275
 
272
276
  @classmethod
273
277
  def get_required_capability(
@@ -308,13 +312,13 @@ class InFieldLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InfieldLocationConf
308
312
  # as we only want to count the infield location configs here.
309
313
  return [res for res in created if res.as_id() in config_ids]
310
314
 
311
- def retrieve(self, ids: SequenceNotStr[NodeIdentifier]) -> InfieldLocationConfigList:
315
+ def retrieve(self, ids: SequenceNotStr[TypedNodeIdentifier]) -> InfieldLocationConfigList:
312
316
  return InfieldLocationConfigList(self.client.infield.config.retrieve(list(ids)))
313
317
 
314
318
  def update(self, items: Sequence[InfieldLocationConfig]) -> Sized:
315
319
  return self.create(items)
316
320
 
317
- def delete(self, ids: SequenceNotStr[NodeIdentifier]) -> int:
321
+ def delete(self, ids: SequenceNotStr[TypedNodeIdentifier]) -> int:
318
322
  # We must retrieve the full resource to get hte DataExplorationConfig linked resource deleted as well.
319
323
  retrieved = self.retrieve(list(ids))
320
324
  # Then, we pass the entire resource to the delete method, which will delete both the InfieldLocationConfig
@@ -345,7 +349,9 @@ class InFieldLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InfieldLocationConf
345
349
 
346
350
 
347
351
  @final
348
- class InFieldCDMLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InFieldCDMLocationConfig, InFieldCDMLocationConfig]):
352
+ class InFieldCDMLocationConfigCRUD(
353
+ ResourceCRUD[TypedNodeIdentifier, InFieldCDMLocationConfig, InFieldCDMLocationConfig]
354
+ ):
349
355
  folder_name = "cdf_applications"
350
356
  resource_cls = InFieldCDMLocationConfig
351
357
  resource_write_cls = InFieldCDMLocationConfig
@@ -359,14 +365,17 @@ class InFieldCDMLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InFieldCDMLocati
359
365
  return "infield CDM location configs"
360
366
 
361
367
  @classmethod
362
- def get_id(cls, item: InFieldCDMLocationConfig | dict) -> NodeIdentifier:
368
+ def get_id(cls, item: InFieldCDMLocationConfig | dict) -> TypedNodeIdentifier:
363
369
  if isinstance(item, dict):
364
- return NodeIdentifier(space=item["space"], external_id=item["externalId"])
365
- return NodeIdentifier(space=item.space, external_id=item.external_id)
370
+ return TypedNodeIdentifier(space=item["space"], external_id=item["externalId"])
371
+ return TypedNodeIdentifier(space=item.space, external_id=item.external_id)
366
372
 
367
373
  @classmethod
368
- def dump_id(cls, id: NodeIdentifier) -> dict[str, Any]:
369
- return id.dump(include_type=False)
374
+ def dump_id(cls, id: TypedNodeIdentifier) -> dict[str, Any]:
375
+ return {
376
+ "space": id.space,
377
+ "externalId": id.external_id,
378
+ }
370
379
 
371
380
  @classmethod
372
381
  def get_required_capability(
@@ -397,13 +406,13 @@ class InFieldCDMLocationConfigCRUD(ResourceCRUD[NodeIdentifier, InFieldCDMLocati
397
406
  def create(self, items: Sequence[InFieldCDMLocationConfig]) -> list[InstanceResult]:
398
407
  return self.client.infield.cdm_config.apply(items)
399
408
 
400
- def retrieve(self, ids: SequenceNotStr[NodeIdentifier]) -> list[InFieldCDMLocationConfig]:
409
+ def retrieve(self, ids: SequenceNotStr[TypedNodeIdentifier]) -> list[InFieldCDMLocationConfig]:
401
410
  return self.client.infield.cdm_config.retrieve(list(ids))
402
411
 
403
412
  def update(self, items: Sequence[InFieldCDMLocationConfig]) -> Sized:
404
413
  return self.create(items)
405
414
 
406
- def delete(self, ids: SequenceNotStr[NodeIdentifier]) -> int:
415
+ def delete(self, ids: SequenceNotStr[TypedNodeIdentifier]) -> int:
407
416
  # We must retrieve the full resource to delete it.
408
417
  retrieved = self.retrieve(list(ids))
409
418
  _ = self.client.infield.cdm_config.delete(retrieved)
@@ -15,13 +15,8 @@
15
15
 
16
16
  from collections.abc import Hashable, Iterable, Sequence
17
17
  from datetime import date, datetime
18
- from typing import Any, cast, final
18
+ from typing import Any, final
19
19
 
20
- from cognite.client.data_classes import (
21
- FileMetadata,
22
- FileMetadataList,
23
- FileMetadataWrite,
24
- )
25
20
  from cognite.client.data_classes.capabilities import (
26
21
  Capability,
27
22
  DataModelInstancesAcl,
@@ -31,9 +26,11 @@ from cognite.client.data_classes.data_modeling import NodeApplyResultList, NodeI
31
26
  from cognite.client.exceptions import CogniteAPIError
32
27
  from cognite.client.utils._time import convert_data_modelling_timestamp
33
28
  from cognite.client.utils.useful_types import SequenceNotStr
34
- from rich import print
35
29
 
36
- from cognite_toolkit._cdf_tk.client.data_classes.extendable_cognite_file import (
30
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
31
+ from cognite_toolkit._cdf_tk.client.resource_classes.filemetadata import FileMetadataRequest, FileMetadataResponse
32
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId, InternalOrExternalId
33
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.extendable_cognite_file import (
37
34
  ExtendableCogniteFile,
38
35
  ExtendableCogniteFileApply,
39
36
  ExtendableCogniteFileList,
@@ -55,11 +52,11 @@ from .datamodel import SpaceCRUD, ViewCRUD
55
52
 
56
53
 
57
54
  @final
58
- class FileMetadataCRUD(ResourceContainerCRUD[str, FileMetadataWrite, FileMetadata]):
55
+ class FileMetadataCRUD(ResourceContainerCRUD[ExternalId, FileMetadataRequest, FileMetadataResponse]):
59
56
  item_name = "file contents"
60
57
  folder_name = "files"
61
- resource_cls = FileMetadata
62
- resource_write_cls = FileMetadataWrite
58
+ resource_cls = FileMetadataResponse
59
+ resource_write_cls = FileMetadataRequest
63
60
  yaml_cls = FileMetadataYAML
64
61
  kind = "FileMetadata"
65
62
  dependencies = frozenset({DataSetsCRUD, GroupAllScopedCRUD, LabelCRUD, AssetCRUD})
@@ -72,7 +69,7 @@ class FileMetadataCRUD(ResourceContainerCRUD[str, FileMetadataWrite, FileMetadat
72
69
 
73
70
  @classmethod
74
71
  def get_required_capability(
75
- cls, items: Sequence[FileMetadataWrite] | None, read_only: bool
72
+ cls, items: Sequence[FileMetadataRequest] | None, read_only: bool
76
73
  ) -> Capability | list[Capability]:
77
74
  if not items and items is not None:
78
75
  return []
@@ -87,22 +84,22 @@ class FileMetadataCRUD(ResourceContainerCRUD[str, FileMetadataWrite, FileMetadat
87
84
  return FilesAcl(actions, scope)
88
85
 
89
86
  @classmethod
90
- def get_id(cls, item: FileMetadata | FileMetadataWrite | dict) -> str:
87
+ def get_id(cls, item: FileMetadataRequest | FileMetadataResponse | dict) -> ExternalId:
91
88
  if isinstance(item, dict):
92
- return item["externalId"]
89
+ return ExternalId(external_id=item["externalId"])
93
90
  if item.external_id is None:
94
91
  raise ToolkitRequiredValueError("FileMetadata must have external_id set.")
95
- return item.external_id
92
+ return ExternalId(external_id=item.external_id)
96
93
 
97
94
  @classmethod
98
- def get_internal_id(cls, item: FileMetadata | dict) -> int:
95
+ def get_internal_id(cls, item: FileMetadataResponse | dict) -> int:
99
96
  if isinstance(item, dict):
100
97
  return item["id"]
101
98
  return item.id
102
99
 
103
100
  @classmethod
104
- def dump_id(cls, id: str) -> dict[str, Any]:
105
- return {"externalId": id}
101
+ def dump_id(cls, id: ExternalId) -> dict[str, Any]:
102
+ return id.dump()
106
103
 
107
104
  @classmethod
108
105
  def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
@@ -118,71 +115,65 @@ class FileMetadataCRUD(ResourceContainerCRUD[str, FileMetadataWrite, FileMetadat
118
115
  elif isinstance(label, str):
119
116
  yield LabelCRUD, label
120
117
  for asset_external_id in item.get("assetExternalIds", []):
121
- yield AssetCRUD, asset_external_id
118
+ yield AssetCRUD, ExternalId(external_id=asset_external_id)
122
119
 
123
- def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> FileMetadataWrite:
124
- if resource.get("dataSetExternalId") is not None:
125
- ds_external_id = resource.pop("dataSetExternalId")
120
+ def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> FileMetadataRequest:
121
+ if ds_external_id := resource.pop("dataSetExternalId", None):
126
122
  resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
127
123
  if security_categories_names := resource.pop("securityCategoryNames", []):
128
- security_categories = self.client.lookup.security_categories.id(security_categories_names, is_dry_run)
129
- resource["securityCategories"] = security_categories
130
- if "assetExternalIds" in resource:
131
- resource["assetIds"] = self.client.lookup.assets.id(resource["assetExternalIds"], is_dry_run)
132
- return FileMetadataWrite._load(resource)
133
-
134
- def dump_resource(self, resource: FileMetadata, local: dict[str, Any] | None = None) -> dict[str, Any]:
135
- dumped = resource.as_write().dump()
136
- if ds_id := dumped.pop("dataSetId", None):
137
- dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(ds_id)
124
+ resource["securityCategories"] = self.client.lookup.security_categories.id(
125
+ security_categories_names, is_dry_run
126
+ )
127
+ if asset_external_ids := resource.pop("assetExternalIds", None):
128
+ resource["assetIds"] = self.client.lookup.assets.id(asset_external_ids, is_dry_run)
129
+ return FileMetadataRequest.model_validate(resource)
130
+
131
+ def dump_resource(self, resource: FileMetadataResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
132
+ dumped = resource.as_request_resource().dump()
133
+ if data_set_id := dumped.pop("dataSetId", None):
134
+ dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
138
135
  if security_categories := dumped.pop("securityCategories", []):
139
136
  dumped["securityCategoryNames"] = self.client.lookup.security_categories.external_id(security_categories)
140
137
  if asset_ids := dumped.pop("assetIds", []):
141
138
  dumped["assetExternalIds"] = self.client.lookup.assets.external_id(asset_ids)
142
139
  return dumped
143
140
 
144
- def create(self, items: Sequence[FileMetadataWrite]) -> FileMetadataList:
145
- created = FileMetadataList([])
146
- for meta in items:
147
- try:
148
- created.append(self.client.files.create(meta))
149
- except CogniteAPIError as e:
150
- if e.code == 409:
151
- print(f" [bold yellow]WARNING:[/] File {meta.external_id} already exists, skipping upload.")
152
- return created
141
+ def create(self, items: Sequence[FileMetadataRequest]) -> list[FileMetadataResponse]:
142
+ return self.client.tool.filemetadata.create(items, overwrite=True)
153
143
 
154
- def retrieve(self, ids: SequenceNotStr[str]) -> FileMetadataList:
155
- return self.client.files.retrieve_multiple(external_ids=ids, ignore_unknown_ids=True)
144
+ def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[FileMetadataResponse]:
145
+ return self.client.tool.filemetadata.retrieve(list(ids), ignore_unknown_ids=True)
156
146
 
157
- def update(self, items: Sequence[FileMetadataWrite]) -> FileMetadataList:
158
- return self.client.files.update(items, mode="replace")
147
+ def update(self, items: Sequence[FileMetadataRequest]) -> list[FileMetadataResponse]:
148
+ return self.client.tool.filemetadata.update(items, mode="replace")
159
149
 
160
- def delete(self, ids: str | int | SequenceNotStr[str | int] | None) -> int:
161
- internal_ids, external_ids = self._split_ids(ids)
162
- self.client.files.delete(id=internal_ids, external_id=external_ids)
163
- return len(cast(SequenceNotStr[str], ids))
150
+ def delete(self, ids: SequenceNotStr[InternalOrExternalId]) -> int:
151
+ if not ids:
152
+ return 0
153
+ self.client.tool.filemetadata.delete(list(ids), ignore_unknown_ids=True)
154
+ return len(ids)
164
155
 
165
156
  def _iterate(
166
157
  self,
167
158
  data_set_external_id: str | None = None,
168
159
  space: str | None = None,
169
160
  parent_ids: list[Hashable] | None = None,
170
- ) -> Iterable[FileMetadata]:
171
- return iter(self.client.files(data_set_external_ids=[data_set_external_id] if data_set_external_id else None))
161
+ ) -> Iterable[FileMetadataResponse]:
162
+ filter_ = ClassicFilter.from_asset_subtree_and_data_sets(data_set_id=data_set_external_id)
163
+ for files in self.client.tool.filemetadata.iterate(filter=filter_, limit=None):
164
+ yield from files
172
165
 
173
- def count(self, ids: SequenceNotStr[str]) -> int:
166
+ def count(self, ids: SequenceNotStr[ExternalId]) -> int:
174
167
  return sum(
175
- 1
176
- for meta in self.client.files.retrieve_multiple(external_ids=list(ids), ignore_unknown_ids=True)
177
- if meta.uploaded
168
+ 1 for meta in self.client.tool.filemetadata.retrieve(list(ids), ignore_unknown_ids=True) if meta.uploaded
178
169
  )
179
170
 
180
- def drop_data(self, ids: SequenceNotStr[str]) -> int:
181
- existing = self.client.files.retrieve_multiple(external_ids=list(ids), ignore_unknown_ids=True)
171
+ def drop_data(self, ids: SequenceNotStr[ExternalId]) -> int:
172
+ existing = self.client.tool.filemetadata.retrieve(list(ids), ignore_unknown_ids=True)
182
173
  # File and FileMetadata is tightly coupled, so we need to delete the metadata and recreate it
183
174
  # without the source set to delete the file.
184
- deleted_files = self.delete(existing.as_external_ids())
185
- self.create(existing.as_write())
175
+ deleted_files = self.delete([meta.as_id() for meta in existing])
176
+ self.create([meta.as_request_resource() for meta in existing])
186
177
  return deleted_files
187
178
 
188
179
 
@@ -22,6 +22,7 @@ from cognite.client.data_classes.capabilities import (
22
22
  FunctionsAcl,
23
23
  SessionsAcl,
24
24
  )
25
+ from cognite.client.data_classes.data_modeling import NodeId
25
26
  from cognite.client.data_classes.data_modeling.cdm.v1 import CogniteFileApply
26
27
  from cognite.client.data_classes.functions import HANDLER_FILE_NAME
27
28
  from cognite.client.exceptions import CogniteAPIError
@@ -30,7 +31,7 @@ from rich import print
30
31
  from rich.console import Console
31
32
 
32
33
  from cognite_toolkit._cdf_tk.client import ToolkitClient
33
- from cognite_toolkit._cdf_tk.client.data_classes.functions import FunctionScheduleID
34
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.functions import FunctionScheduleID
34
35
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
35
36
  from cognite_toolkit._cdf_tk.exceptions import (
36
37
  ResourceCreationError,
@@ -406,7 +407,18 @@ class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function]):
406
407
 
407
408
  self.client.functions.delete_with_429_retry(external_id=ids, ignore_unknown_ids=True)
408
409
  file_ids = {func.file_id for func in functions if func.file_id}
409
- self.client.files.delete(id=list(file_ids), ignore_unknown_ids=True)
410
+ files = self.client.files.retrieve_multiple(list(file_ids), ignore_unknown_ids=True)
411
+ dm_file_nodes: set[NodeId] = set()
412
+ classic_file_ids: set[int] = set()
413
+ for file in files:
414
+ if file.instance_id is not None:
415
+ dm_file_nodes.add(file.instance_id)
416
+ else:
417
+ classic_file_ids.add(file.id)
418
+ if classic_file_ids:
419
+ self.client.files.delete(id=list(classic_file_ids), ignore_unknown_ids=True)
420
+ if dm_file_nodes:
421
+ self.client.data_modeling.instances.delete(list(dm_file_nodes))
410
422
  return len(ids)
411
423
 
412
424
  def _iterate(
@@ -14,7 +14,7 @@ from packaging.requirements import Requirement
14
14
  from rich.console import Console
15
15
 
16
16
  from cognite_toolkit._cdf_tk.client import ToolkitClient
17
- from cognite_toolkit._cdf_tk.client.data_classes.streamlit_ import (
17
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.streamlit_ import (
18
18
  Streamlit,
19
19
  StreamlitList,
20
20
  StreamlitWrite,
@@ -7,7 +7,8 @@ from cognite.client.data_classes.capabilities import Capability, LocationFilters
7
7
  from cognite.client.data_classes.data_modeling import DataModelId, ViewId
8
8
  from cognite.client.utils.useful_types import SequenceNotStr
9
9
 
10
- from cognite_toolkit._cdf_tk.client.data_classes.location_filters import (
10
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
11
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.location_filters import (
11
12
  LocationFilter,
12
13
  LocationFilterList,
13
14
  LocationFilterWrite,
@@ -239,14 +240,14 @@ class LocationFilterCRUD(ResourceCRUD[str, LocationFilterWrite, LocationFilter])
239
240
  yield DataSetsCRUD, data_set_external_id
240
241
  for asset in asset_centric.get("assetSubtreeIds", []):
241
242
  if "externalId" in asset:
242
- yield AssetCRUD, asset["externalId"]
243
+ yield AssetCRUD, ExternalId(external_id=asset["externalId"])
243
244
  for subfilter_name in cls.subfilter_names:
244
245
  subfilter = asset_centric.get(subfilter_name, {})
245
246
  for data_set_external_id in subfilter.get("dataSetExternalIds", []):
246
247
  yield DataSetsCRUD, data_set_external_id
247
248
  for asset in subfilter.get("assetSubtreeIds", []):
248
249
  if "externalId" in asset:
249
- yield AssetCRUD, asset["externalId"]
250
+ yield AssetCRUD, ExternalId(external_id=asset["externalId"])
250
251
  for view in item.get("views", []):
251
252
  if in_dict(["space", "externalId", "version"], view):
252
253
  yield ViewCRUD, ViewId(view["space"], view["externalId"], view["version"])
@@ -6,7 +6,7 @@ from cognite.client.data_classes.capabilities import Capability
6
6
  from cognite.client.data_classes.data_modeling import NodeList, ViewId
7
7
  from cognite.client.utils.useful_types import SequenceNotStr
8
8
 
9
- from cognite_toolkit._cdf_tk.client.data_classes.migration import (
9
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import (
10
10
  ResourceViewMapping,
11
11
  ResourceViewMappingApply,
12
12
  )
@@ -29,7 +29,12 @@ from rich import print
29
29
  from rich.console import Console
30
30
 
31
31
  from cognite_toolkit._cdf_tk.client import ToolkitClient
32
- from cognite_toolkit._cdf_tk.client.data_classes.raw import RawDatabase, RawDatabaseList, RawTable, RawTableList
32
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import (
33
+ RawDatabase,
34
+ RawDatabaseList,
35
+ RawTable,
36
+ RawTableList,
37
+ )
33
38
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceContainerCRUD, ResourceCRUD
34
39
  from cognite_toolkit._cdf_tk.resource_classes import DatabaseYAML, TableYAML
35
40
 
@@ -11,6 +11,7 @@ from cognite.client.data_classes.capabilities import Capability
11
11
  from cognite.client.exceptions import CogniteAPIError, CogniteNotFoundError
12
12
  from cognite.client.utils.useful_types import SequenceNotStr
13
13
 
14
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
14
15
  from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
15
16
  from cognite_toolkit._cdf_tk.resource_classes import RelationshipYAML
16
17
 
@@ -123,15 +124,15 @@ class RelationshipCRUD(ResourceCRUD[str, RelationshipWrite, Relationship]):
123
124
  if isinstance(id_value, str) and isinstance(type_value, str):
124
125
  type_value = type_value.strip().casefold()
125
126
  if type_value == "asset":
126
- yield AssetCRUD, id_value
127
+ yield AssetCRUD, ExternalId(external_id=id_value)
127
128
  elif type_value == "sequence":
128
129
  yield SequenceCRUD, id_value
129
130
  elif type_value == "timeseries":
130
- yield TimeSeriesCRUD, id_value
131
+ yield TimeSeriesCRUD, ExternalId(external_id=id_value)
131
132
  elif type_value == "file":
132
- yield FileMetadataCRUD, id_value
133
+ yield FileMetadataCRUD, ExternalId(external_id=id_value)
133
134
  elif type_value == "event":
134
- yield EventCRUD, id_value
135
+ yield EventCRUD, ExternalId(external_id=id_value)
135
136
 
136
137
  def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> RelationshipWrite:
137
138
  if ds_external_id := resource.pop("dataSetExternalId", None):
@@ -9,7 +9,7 @@ from cognite.client.data_classes.capabilities import Capability
9
9
  from cognite.client.exceptions import CogniteAPIError
10
10
  from cognite.client.utils.useful_types import SequenceNotStr
11
11
 
12
- from cognite_toolkit._cdf_tk.client.data_classes.robotics import (
12
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.robotics import (
13
13
  DataPostProcessing,
14
14
  DataPostProcessingList,
15
15
  DataPostProcessingWrite,
@@ -0,0 +1,122 @@
1
+ from collections.abc import Hashable, Iterable, Sequence
2
+ from typing import Any, final
3
+
4
+ from cognite.client.data_classes.capabilities import Capability
5
+ from cognite.client.utils.useful_types import SequenceNotStr
6
+
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId, InternalOrExternalId
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.simulator_model import (
9
+ SimulatorModelRequest,
10
+ SimulatorModelResponse,
11
+ )
12
+ from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
13
+ from cognite_toolkit._cdf_tk.resource_classes import SimulatorModelYAML
14
+
15
+ from .data_organization import DataSetsCRUD
16
+
17
+
18
+ @final
19
+ class SimulatorModelCRUD(ResourceCRUD[ExternalId, SimulatorModelRequest, SimulatorModelResponse]):
20
+ folder_name = "simulators"
21
+ resource_cls = SimulatorModelResponse
22
+ resource_write_cls = SimulatorModelRequest
23
+ yaml_cls = SimulatorModelYAML
24
+ kind = "SimulatorModel"
25
+ dependencies = frozenset({DataSetsCRUD})
26
+ _doc_url = "Simulator-Models/operation/create_simulator_model_simulators_models_post"
27
+
28
+ @property
29
+ def display_name(self) -> str:
30
+ return "simulator models"
31
+
32
+ @classmethod
33
+ def get_id(cls, item: SimulatorModelRequest | SimulatorModelResponse | dict) -> ExternalId:
34
+ if isinstance(item, dict):
35
+ return ExternalId(external_id=item["externalId"])
36
+ if not item.external_id:
37
+ raise KeyError("SimulatorModel must have external_id")
38
+ return ExternalId(external_id=item.external_id)
39
+
40
+ @classmethod
41
+ def get_internal_id(cls, item: SimulatorModelResponse | dict) -> int:
42
+ if isinstance(item, dict):
43
+ return item["id"]
44
+ if not item.id:
45
+ raise KeyError("SimulatorModel must have id")
46
+ return item.id
47
+
48
+ @classmethod
49
+ def dump_id(cls, id: ExternalId) -> dict[str, Any]:
50
+ return id.dump()
51
+
52
+ @classmethod
53
+ def get_required_capability(
54
+ cls, items: Sequence[SimulatorModelRequest] | None, read_only: bool
55
+ ) -> Capability | list[Capability]:
56
+ # Simulator ACLs is not yet implemented in the PySDK, which means
57
+ # that we cannot check for specific capabilities.
58
+ return []
59
+
60
+ def create(self, items: Sequence[SimulatorModelRequest]) -> list[SimulatorModelResponse]:
61
+ return self.client.tool.simulators.models.create(items)
62
+
63
+ def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[SimulatorModelResponse]:
64
+ return self.client.tool.simulators.models.retrieve(list(ids), ignore_unknown_ids=True)
65
+
66
+ def update(self, items: Sequence[SimulatorModelRequest]) -> list[SimulatorModelResponse]:
67
+ return self.client.tool.simulators.models.update(items, mode="replace")
68
+
69
+ def delete(self, ids: SequenceNotStr[ExternalId | InternalOrExternalId]) -> int:
70
+ if not ids:
71
+ return 0
72
+ self.client.tool.simulators.models.delete(list(ids))
73
+ return len(ids)
74
+
75
+ def _iterate(
76
+ self,
77
+ data_set_external_id: str | None = None,
78
+ space: str | None = None,
79
+ parent_ids: list[Hashable] | None = None,
80
+ ) -> Iterable[SimulatorModelResponse]:
81
+ # Note: The SimulatorModelsAPI doesn't support data_set_external_id filtering directly,
82
+ # so we iterate and filter in memory if needed.
83
+ cursor: str | None = None
84
+ data_set_id: int | None = None
85
+ if data_set_external_id:
86
+ data_set_id = self.client.lookup.data_sets.id(data_set_external_id, is_dry_run=False)
87
+ while True:
88
+ page = self.client.tool.simulators.models.paginate(
89
+ limit=1000,
90
+ cursor=cursor,
91
+ )
92
+ if data_set_id:
93
+ # Filter by data_set_external_id in memory
94
+ for item in page.items:
95
+ if item.data_set_id == data_set_id:
96
+ yield item
97
+ else:
98
+ yield from page.items
99
+ if not page.next_cursor or not page.items:
100
+ break
101
+ cursor = page.next_cursor
102
+
103
+ @classmethod
104
+ def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
105
+ """Returns all items that this item requires.
106
+
107
+ For example, a SimulatorModel requires a DataSet, so this method would return the
108
+ DataSetsCRUD and identifier of that dataset.
109
+ """
110
+ if "dataSetExternalId" in item:
111
+ yield DataSetsCRUD, item["dataSetExternalId"]
112
+
113
+ def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> SimulatorModelRequest:
114
+ if ds_external_id := resource.pop("dataSetExternalId", None):
115
+ resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
116
+ return SimulatorModelRequest.model_validate(resource)
117
+
118
+ def dump_resource(self, resource: SimulatorModelResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
119
+ dumped = resource.as_request_resource().dump()
120
+ if data_set_id := dumped.pop("dataSetId", None):
121
+ dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
122
+ return dumped