cognite-toolkit 0.5.97__py3-none-any.whl → 0.7.34__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 (769) hide show
  1. cognite_toolkit/_cdf.py +24 -26
  2. cognite_toolkit/_cdf_tk/apps/__init__.py +10 -2
  3. cognite_toolkit/_cdf_tk/apps/_core_app.py +21 -7
  4. cognite_toolkit/_cdf_tk/apps/_data_app.py +24 -0
  5. cognite_toolkit/_cdf_tk/apps/_dev_app.py +86 -0
  6. cognite_toolkit/_cdf_tk/apps/_download_app.py +1146 -0
  7. cognite_toolkit/_cdf_tk/apps/_dump_app.py +302 -92
  8. cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
  9. cognite_toolkit/_cdf_tk/apps/_landing_app.py +18 -4
  10. cognite_toolkit/_cdf_tk/apps/_migrate_app.py +890 -34
  11. cognite_toolkit/_cdf_tk/apps/_modules_app.py +24 -0
  12. cognite_toolkit/_cdf_tk/apps/_profile_app.py +13 -3
  13. cognite_toolkit/_cdf_tk/apps/_purge.py +188 -27
  14. cognite_toolkit/_cdf_tk/apps/_run.py +11 -0
  15. cognite_toolkit/_cdf_tk/apps/_upload_app.py +107 -0
  16. cognite_toolkit/_cdf_tk/builders/__init__.py +2 -2
  17. cognite_toolkit/_cdf_tk/builders/_base.py +35 -49
  18. cognite_toolkit/_cdf_tk/builders/_datamodels.py +4 -4
  19. cognite_toolkit/_cdf_tk/builders/_file.py +5 -5
  20. cognite_toolkit/_cdf_tk/builders/_function.py +7 -7
  21. cognite_toolkit/_cdf_tk/builders/_location.py +3 -3
  22. cognite_toolkit/_cdf_tk/builders/_raw.py +9 -9
  23. cognite_toolkit/_cdf_tk/builders/_streamlit.py +4 -4
  24. cognite_toolkit/_cdf_tk/builders/_transformation.py +4 -4
  25. cognite_toolkit/_cdf_tk/cdf_toml.py +33 -10
  26. cognite_toolkit/_cdf_tk/client/__init__.py +2 -1
  27. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +36 -58
  28. cognite_toolkit/_cdf_tk/client/api/canvas.py +2 -1
  29. cognite_toolkit/_cdf_tk/client/api/charts.py +125 -0
  30. cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +0 -13
  31. cognite_toolkit/_cdf_tk/client/api/extended_files.py +68 -2
  32. cognite_toolkit/_cdf_tk/client/api/extended_functions.py +80 -0
  33. cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +1 -1
  34. cognite_toolkit/_cdf_tk/client/api/infield.py +254 -0
  35. cognite_toolkit/_cdf_tk/client/api/location_filters.py +19 -1
  36. cognite_toolkit/_cdf_tk/client/api/lookup.py +176 -71
  37. cognite_toolkit/_cdf_tk/client/api/migration.py +375 -19
  38. cognite_toolkit/_cdf_tk/client/api/project.py +24 -0
  39. cognite_toolkit/_cdf_tk/client/api/streams.py +89 -0
  40. cognite_toolkit/_cdf_tk/client/api/three_d.py +131 -0
  41. cognite_toolkit/_cdf_tk/client/config.py +120 -0
  42. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +17 -0
  43. cognite_toolkit/_cdf_tk/client/data_classes/base.py +71 -0
  44. cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +86 -8
  45. cognite_toolkit/_cdf_tk/client/data_classes/charts.py +114 -0
  46. cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +184 -0
  47. cognite_toolkit/_cdf_tk/client/data_classes/infield.py +116 -0
  48. cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +162 -0
  49. cognite_toolkit/_cdf_tk/client/data_classes/instances.py +24 -2
  50. cognite_toolkit/_cdf_tk/client/data_classes/migration.py +205 -74
  51. cognite_toolkit/_cdf_tk/client/data_classes/project.py +41 -0
  52. cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +50 -35
  53. cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +11 -11
  54. cognite_toolkit/_cdf_tk/client/data_classes/streams.py +90 -0
  55. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +53 -0
  56. cognite_toolkit/_cdf_tk/client/testing.py +60 -4
  57. cognite_toolkit/_cdf_tk/commands/__init__.py +11 -14
  58. cognite_toolkit/_cdf_tk/commands/_base.py +8 -1
  59. cognite_toolkit/_cdf_tk/commands/_changes.py +3 -42
  60. cognite_toolkit/_cdf_tk/commands/_download.py +154 -0
  61. cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +2 -8
  62. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +309 -0
  63. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +373 -0
  64. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +232 -0
  65. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +244 -132
  66. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +471 -0
  67. cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +108 -29
  68. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +137 -0
  69. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +212 -0
  70. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +456 -0
  71. cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +27 -18
  72. cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +71 -0
  73. cognite_toolkit/_cdf_tk/commands/_profile.py +139 -42
  74. cognite_toolkit/_cdf_tk/commands/_purge.py +652 -690
  75. cognite_toolkit/_cdf_tk/commands/_questionary_style.py +16 -0
  76. cognite_toolkit/_cdf_tk/commands/_upload.py +289 -0
  77. cognite_toolkit/_cdf_tk/commands/_utils.py +1 -24
  78. cognite_toolkit/_cdf_tk/commands/about.py +221 -0
  79. cognite_toolkit/_cdf_tk/commands/auth.py +45 -25
  80. cognite_toolkit/_cdf_tk/commands/build_cmd.py +69 -109
  81. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +241 -0
  82. cognite_toolkit/_cdf_tk/commands/build_v2/build_input.py +85 -0
  83. cognite_toolkit/_cdf_tk/commands/build_v2/build_issues.py +27 -0
  84. cognite_toolkit/_cdf_tk/commands/clean.py +84 -31
  85. cognite_toolkit/_cdf_tk/commands/deploy.py +147 -60
  86. cognite_toolkit/_cdf_tk/commands/dump_resource.py +396 -88
  87. cognite_toolkit/_cdf_tk/commands/init.py +219 -18
  88. cognite_toolkit/_cdf_tk/commands/modules.py +158 -82
  89. cognite_toolkit/_cdf_tk/commands/pull.py +33 -40
  90. cognite_toolkit/_cdf_tk/commands/repo.py +1 -1
  91. cognite_toolkit/_cdf_tk/commands/resources.py +179 -0
  92. cognite_toolkit/_cdf_tk/commands/run.py +11 -11
  93. cognite_toolkit/_cdf_tk/constants.py +38 -7
  94. cognite_toolkit/_cdf_tk/cruds/__init__.py +224 -0
  95. cognite_toolkit/_cdf_tk/{loaders/_base_loaders.py → cruds/_base_cruds.py} +64 -130
  96. cognite_toolkit/_cdf_tk/{loaders/_data_loaders.py → cruds/_data_cruds.py} +26 -33
  97. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +98 -0
  98. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/agent_loaders.py → cruds/_resource_cruds/agent.py} +33 -29
  99. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/auth_loaders.py → cruds/_resource_cruds/auth.py} +30 -68
  100. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/classic_loaders.py → cruds/_resource_cruds/classic.py} +84 -121
  101. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +149 -0
  102. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/data_organization_loaders.py → cruds/_resource_cruds/data_organization.py} +13 -49
  103. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/datamodel_loaders.py → cruds/_resource_cruds/datamodel.py} +264 -367
  104. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/extraction_pipeline_loaders.py → cruds/_resource_cruds/extraction_pipeline.py} +54 -96
  105. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +438 -0
  106. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/file_loader.py → cruds/_resource_cruds/file.py} +26 -83
  107. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/function_loaders.py → cruds/_resource_cruds/function.py} +128 -91
  108. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/group_scoped_loader.py → cruds/_resource_cruds/group_scoped.py} +18 -18
  109. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders → cruds/_resource_cruds}/hosted_extractors.py +32 -100
  110. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/industrial_tool_loaders.py → cruds/_resource_cruds/industrial_tool.py} +13 -25
  111. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/location_loaders.py → cruds/_resource_cruds/location.py} +25 -156
  112. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +111 -0
  113. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/raw_loaders.py → cruds/_resource_cruds/raw.py} +17 -25
  114. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/relationship_loader.py → cruds/_resource_cruds/relationship.py} +21 -43
  115. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/robotics_loaders.py → cruds/_resource_cruds/robotics.py} +29 -48
  116. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +94 -0
  117. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/three_d_model_loaders.py → cruds/_resource_cruds/three_d_model.py} +9 -31
  118. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/timeseries_loaders.py → cruds/_resource_cruds/timeseries.py} +200 -96
  119. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/transformation_loaders.py → cruds/_resource_cruds/transformation.py} +150 -141
  120. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/workflow_loaders.py → cruds/_resource_cruds/workflow.py} +73 -194
  121. cognite_toolkit/_cdf_tk/{loaders → cruds}/_worker.py +33 -41
  122. cognite_toolkit/_cdf_tk/data_classes/__init__.py +2 -0
  123. cognite_toolkit/_cdf_tk/data_classes/_build_files.py +3 -3
  124. cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +120 -14
  125. cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +13 -3
  126. cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +8 -8
  127. cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +14 -9
  128. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +22 -0
  129. cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +2 -2
  130. cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +7 -0
  131. cognite_toolkit/_cdf_tk/data_classes/_packages.py +24 -7
  132. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +43 -0
  133. cognite_toolkit/_cdf_tk/exceptions.py +10 -1
  134. cognite_toolkit/_cdf_tk/feature_flags.py +59 -52
  135. cognite_toolkit/_cdf_tk/hints.py +5 -3
  136. cognite_toolkit/_cdf_tk/plugins.py +2 -1
  137. cognite_toolkit/_cdf_tk/protocols.py +97 -0
  138. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +61 -0
  139. cognite_toolkit/_cdf_tk/resource_classes/agent.py +58 -0
  140. cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +101 -0
  141. cognite_toolkit/_cdf_tk/resource_classes/authentication.py +15 -0
  142. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +12 -0
  143. cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +51 -0
  144. cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +2 -2
  145. cognite_toolkit/_cdf_tk/resource_classes/containers.py +2 -2
  146. cognite_toolkit/_cdf_tk/resource_classes/data_model.py +51 -0
  147. cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +77 -0
  148. cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +54 -0
  149. cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +15 -0
  150. cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +1 -5
  151. cognite_toolkit/_cdf_tk/resource_classes/functions.py +12 -1
  152. cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +50 -0
  153. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +19 -0
  154. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +255 -0
  155. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +117 -0
  156. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +390 -0
  157. cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +109 -0
  158. cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +94 -0
  159. cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +100 -0
  160. cognite_toolkit/_cdf_tk/resource_classes/instance.py +93 -0
  161. cognite_toolkit/_cdf_tk/resource_classes/migration.py +28 -0
  162. cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +1 -1
  163. cognite_toolkit/_cdf_tk/resource_classes/relationship.py +50 -0
  164. cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +13 -0
  165. cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +19 -0
  166. cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +15 -0
  167. cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +25 -0
  168. cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +12 -0
  169. cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +16 -0
  170. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  171. cognite_toolkit/_cdf_tk/resource_classes/sequence.py +107 -0
  172. cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +26 -0
  173. cognite_toolkit/_cdf_tk/resource_classes/streams.py +29 -0
  174. cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +8 -0
  175. cognite_toolkit/_cdf_tk/resource_classes/transformations.py +2 -13
  176. cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +7 -8
  177. cognite_toolkit/_cdf_tk/resource_classes/views.py +4 -4
  178. cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +115 -0
  179. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +233 -0
  180. cognite_toolkit/_cdf_tk/storageio/__init__.py +69 -0
  181. cognite_toolkit/_cdf_tk/storageio/_annotations.py +105 -0
  182. cognite_toolkit/_cdf_tk/storageio/_applications.py +408 -0
  183. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +693 -0
  184. cognite_toolkit/_cdf_tk/storageio/_base.py +328 -0
  185. cognite_toolkit/_cdf_tk/storageio/_data_classes.py +91 -0
  186. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +448 -0
  187. cognite_toolkit/_cdf_tk/storageio/_file_content.py +436 -0
  188. cognite_toolkit/_cdf_tk/storageio/_instances.py +225 -0
  189. cognite_toolkit/_cdf_tk/storageio/_raw.py +124 -0
  190. cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +133 -0
  191. cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +60 -0
  192. cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +80 -0
  193. cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +22 -0
  194. cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +45 -0
  195. cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +89 -0
  196. cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +164 -0
  197. cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +162 -0
  198. cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +24 -0
  199. cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
  200. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +5 -3
  201. cognite_toolkit/_cdf_tk/tk_warnings/other.py +9 -1
  202. cognite_toolkit/_cdf_tk/tracker.py +21 -22
  203. cognite_toolkit/_cdf_tk/utils/__init__.py +2 -2
  204. cognite_toolkit/_cdf_tk/utils/_auxiliary.py +11 -2
  205. cognite_toolkit/_cdf_tk/utils/aggregators.py +121 -16
  206. cognite_toolkit/_cdf_tk/utils/auxiliary.py +23 -0
  207. cognite_toolkit/_cdf_tk/utils/cdf.py +10 -6
  208. cognite_toolkit/_cdf_tk/utils/cli_args.py +34 -0
  209. cognite_toolkit/_cdf_tk/utils/collection.py +42 -1
  210. cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +307 -15
  211. cognite_toolkit/_cdf_tk/utils/file.py +55 -2
  212. cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +61 -0
  213. cognite_toolkit/_cdf_tk/utils/fileio/_base.py +32 -0
  214. cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +61 -0
  215. cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +422 -0
  216. cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +429 -0
  217. cognite_toolkit/_cdf_tk/utils/graphql_parser.py +4 -0
  218. cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +69 -0
  219. cognite_toolkit/_cdf_tk/utils/http_client/_client.py +536 -0
  220. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +412 -0
  221. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +249 -0
  222. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +4 -0
  223. cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +34 -0
  224. cognite_toolkit/_cdf_tk/utils/interactive_select.py +452 -57
  225. cognite_toolkit/_cdf_tk/utils/modules.py +10 -14
  226. cognite_toolkit/_cdf_tk/utils/producer_worker.py +216 -58
  227. cognite_toolkit/_cdf_tk/utils/progress_tracker.py +87 -0
  228. cognite_toolkit/_cdf_tk/utils/sentry_utils.py +1 -1
  229. cognite_toolkit/_cdf_tk/utils/sql_parser.py +2 -3
  230. cognite_toolkit/_cdf_tk/utils/text.py +55 -0
  231. cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +99 -0
  232. cognite_toolkit/_cdf_tk/utils/useful_types.py +27 -1
  233. cognite_toolkit/_cdf_tk/utils/validate_access.py +350 -36
  234. cognite_toolkit/_cdf_tk/validation.py +143 -76
  235. cognite_toolkit/_repo_files/.gitignore +2 -0
  236. cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +1 -1
  237. cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +1 -1
  238. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  239. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  240. cognite_toolkit/_resources/cdf.toml +18 -0
  241. cognite_toolkit/_version.py +1 -1
  242. cognite_toolkit/config.dev.yaml +9 -3
  243. cognite_toolkit/demo/_base.py +3 -3
  244. {cognite_toolkit-0.5.97.dist-info → cognite_toolkit-0.7.34.dist-info}/METADATA +24 -23
  245. cognite_toolkit-0.7.34.dist-info/RECORD +320 -0
  246. cognite_toolkit-0.7.34.dist-info/WHEEL +4 -0
  247. {cognite_toolkit-0.5.97.dist-info → cognite_toolkit-0.7.34.dist-info}/entry_points.txt +1 -0
  248. cognite_toolkit/_builtin_modules/README.md +0 -7
  249. cognite_toolkit/_builtin_modules/bootcamp/README.md +0 -5
  250. cognite_toolkit/_builtin_modules/bootcamp/default.config.yaml +0 -3
  251. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/default.config.yaml +0 -9
  252. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/handler.py +0 -168
  253. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/ice_cream_factory_api.py +0 -61
  254. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/requirements.txt +0 -3
  255. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/module.toml +0 -3
  256. cognite_toolkit/_builtin_modules/bootcamp/module.toml +0 -3
  257. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/default.config.yaml +0 -6
  258. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/handler.py +0 -229
  259. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/requirements.txt +0 -2
  260. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/module.toml +0 -3
  261. cognite_toolkit/_builtin_modules/cdf.toml +0 -13
  262. cognite_toolkit/_builtin_modules/cdf_common/data_models/demo.Space.yaml +0 -3
  263. cognite_toolkit/_builtin_modules/cdf_common/data_sets/demo.DataSet.yaml +0 -3
  264. cognite_toolkit/_builtin_modules/cdf_common/default.config.yaml +0 -8
  265. cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.ExtractionPipeline.yaml +0 -54
  266. cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.config.yaml +0 -28
  267. cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/handler.py +0 -342
  268. cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/requirements.txt +0 -3
  269. cognite_toolkit/_builtin_modules/cdf_common/functions/write.Function.yaml +0 -7
  270. cognite_toolkit/_builtin_modules/cdf_common/module.toml +0 -3
  271. cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.DataBase.yaml +0 -1
  272. cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.Table.yaml +0 -2
  273. cognite_toolkit/_builtin_modules/cdf_common/raw/source.DataBase.yaml +0 -1
  274. cognite_toolkit/_builtin_modules/cdf_ingestion/auth/user.Group.yaml +0 -124
  275. cognite_toolkit/_builtin_modules/cdf_ingestion/auth/workflow.Group.yaml +0 -114
  276. cognite_toolkit/_builtin_modules/cdf_ingestion/default.config.yaml +0 -34
  277. cognite_toolkit/_builtin_modules/cdf_ingestion/module.toml +0 -9
  278. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/ingest.Workflow.yaml +0 -3
  279. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/trigger.WorkflowTrigger.yaml +0 -9
  280. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/v1.WorkflowVersion.yaml +0 -150
  281. cognite_toolkit/_builtin_modules/common/README.md +0 -5
  282. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm.datamodel.yaml +0 -18
  283. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm_config.datamodel.yaml +0 -10
  284. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/config.space.yaml +0 -3
  285. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Activity.container.yaml +0 -108
  286. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Notification.container.yaml +0 -85
  287. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Operation.container.yaml +0 -83
  288. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/ApmConfig.container.yaml +0 -39
  289. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/source.space.yaml +0 -3
  290. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Activity.view.yaml +0 -119
  291. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Notification.view.yaml +0 -84
  292. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Operation.view.yaml +0 -86
  293. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/ApmConfig.view.yaml +0 -48
  294. cognite_toolkit/_builtin_modules/common/cdf_apm_base/default.config.yaml +0 -1
  295. cognite_toolkit/_builtin_modules/common/cdf_apm_base/module.toml +0 -3
  296. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/README.md +0 -23
  297. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readonly.group.yaml +0 -265
  298. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readwrite.group.yaml +0 -329
  299. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/default.config.yaml +0 -2
  300. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/module.toml +0 -2
  301. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/default.config.yaml +0 -10
  302. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/module.toml +0 -13
  303. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.sql +0 -31
  304. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.yaml +0 -13
  305. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.sql +0 -31
  306. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.yaml +0 -14
  307. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.sql +0 -34
  308. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.yaml +0 -13
  309. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.sql +0 -32
  310. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.yaml +0 -14
  311. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.sql +0 -32
  312. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.yaml +0 -13
  313. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/auth/workflow.Group.yaml +0 -83
  314. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/annotation_type.Node.yaml +0 -2
  315. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/sourceSystem.node.yaml +0 -13
  316. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/default.config.yaml +0 -16
  317. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.ExtractionPipeline.yaml +0 -48
  318. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.config.yaml +0 -35
  319. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/handler.py +0 -476
  320. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/requirements.txt +0 -3
  321. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/functions.Function.yaml +0 -7
  322. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/module.toml +0 -23
  323. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/raw/state.Table.yaml +0 -2
  324. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/entity_matching.Workflow.yaml +0 -3
  325. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/trigger.WorkflowTrigger.yaml +0 -9
  326. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/v1.WorkflowVersion.yaml +0 -22
  327. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/auth/function.Group.yaml +0 -89
  328. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/data_models/sourceSystem.node.yaml +0 -13
  329. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/default.config.yaml +0 -13
  330. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.ExtractionPipeline.yaml +0 -44
  331. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.config.yaml +0 -33
  332. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/handler.py +0 -405
  333. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/requirements.txt +0 -3
  334. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/functions.Function.yaml +0 -7
  335. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/module.toml +0 -25
  336. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/p_and_id_parser.Workflow.yaml +0 -3
  337. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/trigger.WorkflowTrigger.yaml +0 -9
  338. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/v1.WorkflowVersion.yaml +0 -22
  339. cognite_toolkit/_builtin_modules/custom/my_module/auth/.gitkeep +0 -0
  340. cognite_toolkit/_builtin_modules/custom/my_module/default.config.yaml +0 -1
  341. cognite_toolkit/_builtin_modules/custom/my_module/module.toml +0 -2
  342. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/classic/root.Asset.yaml +0 -9
  343. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/data_sets/data_sets.DataSet.yaml +0 -3
  344. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/default.config.yaml +0 -4
  345. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/individualFilters.LocationFilter.yaml +0 -19
  346. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/oneFilter.LocationFilter.yaml +0 -12
  347. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/module.toml +0 -2
  348. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/data_models/instance.Space.yaml +0 -2
  349. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/default.config.yaml +0 -2
  350. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/locations/dataModel.LocationFilter.yaml +0 -17
  351. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/module.toml +0 -2
  352. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/auth/locationfilter.Group.yaml +0 -12
  353. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/default.config.yaml +0 -3
  354. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/locations/user.LocationFilter.yaml +0 -9
  355. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/module.toml +0 -5
  356. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/README.md +0 -3
  357. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/auth/applications-configuration.Group.yaml +0 -22
  358. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infieldAppData.space.yaml +0 -3
  359. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infield_apm_app_config.node.yaml +0 -28
  360. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/default.config.yaml +0 -2
  361. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/module.toml +0 -6
  362. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/README.md +0 -61
  363. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_checklist_admin_role.group.yaml +0 -100
  364. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_normal_role.group.yaml +0 -100
  365. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_template_admin_role.group.yaml +0 -100
  366. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_viewer_role.group.yaml +0 -85
  367. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationAppData.space.yaml +0 -3
  368. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationSourceData.space.yaml +0 -3
  369. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
  370. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
  371. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/default.config.yaml +0 -23
  372. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/module.toml +0 -3
  373. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.sql +0 -34
  374. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.yaml +0 -24
  375. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.schedule.yaml +0 -3
  376. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
  377. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
  378. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
  379. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/README.md +0 -61
  380. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_checklist_admin_role.group.yaml +0 -100
  381. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_normal_role.group.yaml +0 -100
  382. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_template_admin_role.group.yaml +0 -100
  383. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_viewer_role.group.yaml +0 -85
  384. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationAppData.space.yaml +0 -3
  385. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationSourceData.space.yaml +0 -3
  386. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
  387. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
  388. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/default.config.yaml +0 -23
  389. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/module.toml +0 -3
  390. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.sql +0 -34
  391. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.yaml +0 -24
  392. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.schedule.yaml +0 -3
  393. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
  394. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
  395. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
  396. cognite_toolkit/_builtin_modules/infield/default.config.yaml +0 -21
  397. cognite_toolkit/_builtin_modules/inrobot/README.md +0 -41
  398. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/README.md +0 -53
  399. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/auth/run-function-user.Group.yaml +0 -89
  400. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/classic/robot.Label.yaml +0 -6
  401. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/cogniteAppData.space.yaml +0 -3
  402. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/inrobotApmConfig.node.yaml +0 -17
  403. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_sets/robot_1.dataset.yaml +0 -2
  404. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/default.config.yaml +0 -3
  405. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/.gitkeep +0 -0
  406. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/README.md +0 -30
  407. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/__init__.py +0 -1
  408. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/README.md +0 -58
  409. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/__init__.py +0 -0
  410. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/apm_helpers.py +0 -269
  411. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/cdf_helpers.py +0 -112
  412. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/__init__.py +0 -0
  413. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/common.py +0 -16
  414. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/vision.py +0 -66
  415. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/utils.py +0 -17
  416. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/handler.py +0 -269
  417. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/requirements.txt +0 -22
  418. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/README.md +0 -56
  419. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/__init__.py +0 -1
  420. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/README.md +0 -58
  421. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/__init__.py +0 -0
  422. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/apm_helpers.py +0 -269
  423. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/cdf_helpers.py +0 -112
  424. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/__init__.py +0 -0
  425. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/common.py +0 -16
  426. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/vision.py +0 -66
  427. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/utils.py +0 -17
  428. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/handler.py +0 -396
  429. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/requirements.txt +0 -22
  430. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/README.md +0 -18
  431. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/__init__.py +0 -1
  432. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/README.md +0 -58
  433. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/__init__.py +0 -0
  434. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/apm_helpers.py +0 -269
  435. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/cdf_helpers.py +0 -112
  436. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/__init__.py +0 -0
  437. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/common.py +0 -16
  438. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/vision.py +0 -66
  439. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/utils.py +0 -17
  440. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/handler.py +0 -195
  441. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/requirements.txt +0 -23
  442. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/README.md +0 -14
  443. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/__init__.py +0 -1
  444. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/cognite_threesixty_images.py +0 -284
  445. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/handler.py +0 -257
  446. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/requirements.txt +0 -7
  447. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/robots.functions.Function.yaml +0 -51
  448. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/schedules.Schedule.yaml +0 -94
  449. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/module.toml +0 -6
  450. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/acoustic_video.RobotCapability.yaml +0 -72
  451. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/process_threesixty.DataPostProcessing.yaml +0 -23
  452. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/pt_ir_video.RobotCapability.yaml +0 -64
  453. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz.RobotCapability.yaml +0 -63
  454. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_ir.RobotCapability.yaml +0 -80
  455. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_video.RobotCapability.yaml +0 -68
  456. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_dial_gauge.DataPostProcessing.yaml +0 -31
  457. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_digital_gauge.DataPostProcessing.yaml +0 -35
  458. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_level_gauge.DataPostProcessing.yaml +0 -29
  459. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_valve.DataPostProcessing.yaml +0 -23
  460. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty.RobotCapability.yaml +0 -47
  461. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty_video.RobotCapability.yaml +0 -47
  462. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/README.md +0 -33
  463. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-admin.Group.yaml +0 -107
  464. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-users.Group.yaml +0 -94
  465. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/robot-1.Group.yaml +0 -77
  466. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationAppData.space.yaml +0 -3
  467. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationSourceData.space.yaml +0 -3
  468. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/default.config.yaml +0 -7
  469. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/module.toml +0 -3
  470. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Frame.yaml +0 -15
  471. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Location.yaml +0 -3
  472. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Map.yaml +0 -10
  473. cognite_toolkit/_builtin_modules/inrobot/default.config.yaml +0 -3
  474. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Activity.Container.yaml +0 -13
  475. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Asset.Container.yaml +0 -13
  476. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Equipment.Container.yaml +0 -13
  477. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/File.Container.yaml +0 -13
  478. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
  479. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/enterprise.datamodel.yaml +0 -54
  480. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/schema.space.yaml +0 -1
  481. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Activity.view.yaml +0 -69
  482. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Asset.view.yaml +0 -186
  483. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Equipment.view.yaml +0 -100
  484. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/File.view.yaml +0 -72
  485. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/TimeSeries.view.yaml +0 -85
  486. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/default.config.yaml +0 -2
  487. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/module.toml +0 -2
  488. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360Image.Container.yaml +0 -13
  489. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -13
  490. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
  491. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
  492. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
  493. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
  494. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
  495. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
  496. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
  497. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Activity.Container.yaml +0 -13
  498. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
  499. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Asset.Container.yaml +0 -13
  500. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
  501. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
  502. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
  503. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
  504. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
  505. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
  506. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Describable.Container.yaml +0 -13
  507. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -13
  508. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
  509. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
  510. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/File.Container.yaml +0 -13
  511. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
  512. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
  513. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
  514. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
  515. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
  516. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
  517. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
  518. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
  519. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Unit.Container.yaml +0 -13
  520. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
  521. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/enterprise.datamodel.yaml +0 -138
  522. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/schema.space.yaml +0 -1
  523. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360Image.view.yaml +0 -119
  524. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
  525. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
  526. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
  527. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
  528. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DModel.view.yaml +0 -29
  529. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DObject.view.yaml +0 -81
  530. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DRevision.view.yaml +0 -30
  531. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
  532. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Activity.view.yaml +0 -69
  533. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Annotation.view.yaml +0 -28
  534. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Asset.view.yaml +0 -191
  535. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetClass.view.yaml +0 -17
  536. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetType.view.yaml +0 -31
  537. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADModel.view.yaml +0 -55
  538. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADNode.view.yaml +0 -53
  539. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADRevision.view.yaml +0 -39
  540. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CubeMap.view.yaml +0 -97
  541. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Describable.view.yaml +0 -19
  542. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
  543. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Equipment.view.yaml +0 -100
  544. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
  545. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/File.view.yaml +0 -72
  546. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/FileCategory.view.yaml +0 -18
  547. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
  548. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
  549. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
  550. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Schedulable.view.yaml +0 -17
  551. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
  552. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Sourceable.view.yaml +0 -27
  553. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
  554. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Unit.view.yaml +0 -16
  555. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Visualizable.view.yaml +0 -29
  556. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/default.config.yaml +0 -2
  557. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/module.toml +0 -2
  558. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Activity.Container.yaml +0 -13
  559. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Asset.Container.yaml +0 -13
  560. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Equipment.Container.yaml +0 -13
  561. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/File.Container.yaml +0 -13
  562. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
  563. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Notification.Container.yaml +0 -13
  564. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Operation.Container.yaml +0 -13
  565. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
  566. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/enterprise.datamodel.yaml +0 -66
  567. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/schema.space.yaml +0 -1
  568. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Activity.view.yaml +0 -69
  569. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Asset.view.yaml +0 -186
  570. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Equipment.view.yaml +0 -100
  571. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/File.view.yaml +0 -72
  572. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/MaintenanceOrder.view.yaml +0 -100
  573. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Notification.view.yaml +0 -56
  574. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Operation.view.yaml +0 -96
  575. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/TimeSeries.view.yaml +0 -85
  576. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/default.config.yaml +0 -3
  577. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/module.toml +0 -2
  578. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360Image.Container.yaml +0 -13
  579. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -14
  580. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
  581. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
  582. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
  583. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
  584. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
  585. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
  586. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
  587. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Activity.Container.yaml +0 -13
  588. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
  589. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Asset.Container.yaml +0 -13
  590. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
  591. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
  592. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
  593. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
  594. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
  595. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
  596. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Describable.Container.yaml +0 -13
  597. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -14
  598. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
  599. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
  600. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/File.Container.yaml +0 -13
  601. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
  602. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
  603. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Notification.Container.yaml +0 -13
  604. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Operation.Container.yaml +0 -13
  605. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
  606. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
  607. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
  608. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
  609. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
  610. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
  611. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
  612. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Unit.Container.yaml +0 -13
  613. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
  614. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/enterprise.datamodel.yaml +0 -150
  615. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/schema.space.yaml +0 -1
  616. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360Image.view.yaml +0 -119
  617. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
  618. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
  619. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
  620. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
  621. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DModel.view.yaml +0 -29
  622. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DObject.view.yaml +0 -81
  623. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DRevision.view.yaml +0 -30
  624. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
  625. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Activity.view.yaml +0 -69
  626. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Annotation.view.yaml +0 -28
  627. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Asset.view.yaml +0 -191
  628. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetClass.view.yaml +0 -17
  629. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetType.view.yaml +0 -31
  630. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADModel.view.yaml +0 -55
  631. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADNode.view.yaml +0 -53
  632. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADRevision.view.yaml +0 -39
  633. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CubeMap.view.yaml +0 -97
  634. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Describable.view.yaml +0 -19
  635. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
  636. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Equipment.view.yaml +0 -100
  637. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
  638. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/File.view.yaml +0 -72
  639. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/FileCategory.view.yaml +0 -18
  640. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/MaintenanceOrder.view.yaml +0 -100
  641. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Notification.view.yaml +0 -56
  642. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Operation.view.yaml +0 -96
  643. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
  644. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
  645. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
  646. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Schedulable.view.yaml +0 -17
  647. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
  648. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Sourceable.view.yaml +0 -27
  649. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
  650. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Unit.view.yaml +0 -16
  651. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Visualizable.view.yaml +0 -29
  652. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/default.config.yaml +0 -2
  653. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/module.toml +0 -2
  654. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Cdf3dRevisionProperties.Container.yaml +0 -13
  655. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_EnvironmentMap.Container.yaml +0 -12
  656. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionProperties.Container.yaml +0 -23
  657. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionScene.Container.yaml +0 -12
  658. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_SceneConfiguration.Container.yaml +0 -152
  659. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedMap.Container.yaml +0 -21
  660. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedPlane.Container.yaml +0 -29
  661. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene.Space.yaml +0 -3
  662. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene_data_model.DataModel.yaml +0 -66
  663. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/EnvironmentMap.View.yaml +0 -28
  664. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionProperties.View.yaml +0 -22
  665. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionScene.View.yaml +0 -20
  666. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/RevisionProperties.View.yaml +0 -16
  667. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/SceneConfiguration.View.yaml +0 -166
  668. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedMap.View.yaml +0 -17
  669. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedPlane.View.yaml +0 -40
  670. cognite_toolkit/_builtin_modules/models/cdf_scene/default.config.yaml +0 -1
  671. cognite_toolkit/_builtin_modules/models/cdf_scene/module.toml +0 -2
  672. cognite_toolkit/_builtin_modules/packages.toml +0 -102
  673. cognite_toolkit/_builtin_modules/sourcesystem/README.md +0 -4
  674. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/auth/workflow.Group.yaml +0 -53
  675. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/default.config.yaml +0 -13
  676. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.Config.yaml +0 -5
  677. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.ExtractionPipeline.yaml +0 -12
  678. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/module.toml +0 -24
  679. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/raw/timeseries.Table.yaml +0 -2
  680. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.sql +0 -9
  681. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.yaml +0 -14
  682. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/population.Workflow.yaml +0 -3
  683. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/trigger.WorkflowTrigger.yaml +0 -9
  684. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/v1.WorkflowVersion.yaml +0 -12
  685. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/auth/workflow.Group.yaml +0 -54
  686. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/default.config.yaml +0 -16
  687. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/module.toml +0 -24
  688. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/raw/dump.Table.yaml +0 -2
  689. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.sql +0 -14
  690. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.yaml +0 -14
  691. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.sql +0 -35
  692. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.yaml +0 -14
  693. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.sql +0 -17
  694. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.yaml +0 -13
  695. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/population.Workflow.yaml +0 -3
  696. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/trigger.WorkflowTrigger.yaml +0 -9
  697. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/v1.WorkflowVersion.yaml +0 -28
  698. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/auth/workflow.Group.yaml +0 -46
  699. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/default.config.yaml +0 -15
  700. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/module.toml +0 -20
  701. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workitem.Table.yaml +0 -2
  702. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workorder.Table.yaml +0 -2
  703. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workpackage.Table.yaml +0 -2
  704. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/worktask.Table.yaml +0 -3
  705. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.sql +0 -32
  706. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.yaml +0 -13
  707. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.sql +0 -18
  708. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.yaml +0 -14
  709. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.sql +0 -18
  710. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.yaml +0 -14
  711. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/population.Workflow.yaml +0 -3
  712. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/trigger.WorkflowTrigger.yaml +0 -9
  713. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/v1.WorkflowVersion.yaml +0 -28
  714. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/auth/workflow.Group.yaml +0 -47
  715. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/default.config.yaml +0 -13
  716. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/files/upload.CogniteFile.yaml +0 -4
  717. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/module.toml +0 -26
  718. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/raw/files.Table.yaml +0 -2
  719. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.sql +0 -9
  720. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.yaml +0 -13
  721. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/population.Workflow.yaml +0 -3
  722. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/trigger.WorkflowTrigger.yaml +0 -9
  723. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/v1.WorkflowVersion.yaml +0 -11
  724. cognite_toolkit/_cdf_tk/_parameters/__init__.py +0 -18
  725. cognite_toolkit/_cdf_tk/_parameters/constants.py +0 -82
  726. cognite_toolkit/_cdf_tk/_parameters/data_classes.py +0 -200
  727. cognite_toolkit/_cdf_tk/_parameters/functions.py +0 -190
  728. cognite_toolkit/_cdf_tk/_parameters/get_type_hints.py +0 -123
  729. cognite_toolkit/_cdf_tk/_parameters/type_hint.py +0 -116
  730. cognite_toolkit/_cdf_tk/apps/_populate_app.py +0 -80
  731. cognite_toolkit/_cdf_tk/commands/_migrate/assets.py +0 -144
  732. cognite_toolkit/_cdf_tk/commands/_migrate/base.py +0 -88
  733. cognite_toolkit/_cdf_tk/commands/_migrate/canvas.py +0 -145
  734. cognite_toolkit/_cdf_tk/commands/_migrate/files.py +0 -165
  735. cognite_toolkit/_cdf_tk/commands/_migrate/timeseries.py +0 -165
  736. cognite_toolkit/_cdf_tk/commands/_populate.py +0 -306
  737. cognite_toolkit/_cdf_tk/commands/dump_data.py +0 -490
  738. cognite_toolkit/_cdf_tk/commands/featureflag.py +0 -27
  739. cognite_toolkit/_cdf_tk/loaders/__init__.py +0 -198
  740. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/__init__.py +0 -90
  741. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/fieldops_loaders.py +0 -260
  742. cognite_toolkit/_cdf_tk/prototypes/_packages/__init__.py +0 -1
  743. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/manifest.yaml +0 -4
  744. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.Group.yaml +0 -375
  745. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.SecurityCategory.yaml +0 -1
  746. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.DataModel.yaml +0 -19
  747. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.View.yaml +0 -8
  748. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_sets/reference.DataSet.yaml +0 -8
  749. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipeline.yaml +0 -27
  750. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipelineConfig.yaml +0 -3
  751. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.Function.yaml +0 -22
  752. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.FunctionSchedule.yaml +0 -6
  753. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/labels/reference.LabelDefinition.yaml +0 -4
  754. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/timeseries/reference.DataPointSubscription.yaml +0 -7
  755. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.Transformation.yaml +0 -51
  756. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationNotification.yaml +0 -3
  757. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationSchedule.yaml +0 -4
  758. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowUpsert.yaml +0 -2
  759. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowVersionUpsert.yaml +0 -10
  760. cognite_toolkit/_cdf_tk/prototypes/_packages/update_references.py +0 -337
  761. cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
  762. cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
  763. cognite_toolkit/_cdf_tk/utils/table_writers.py +0 -434
  764. cognite_toolkit/_cdf_tk/utils/tarjan.py +0 -46
  765. cognite_toolkit-0.5.97.dist-info/RECORD +0 -726
  766. cognite_toolkit-0.5.97.dist-info/WHEEL +0 -4
  767. cognite_toolkit-0.5.97.dist-info/licenses/LICENSE +0 -18
  768. /cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -0
  769. /cognite_toolkit/{_builtin_modules → _cdf_tk/commands/build_v2}/__init__.py +0 -0
@@ -1,209 +1,559 @@
1
1
  import uuid
2
- from collections.abc import Callable, Hashable, Iterable
2
+ from abc import ABC, abstractmethod
3
+ from collections.abc import Callable, Hashable, Iterable, Sequence
4
+ from dataclasses import dataclass
3
5
  from functools import partial
4
- from graphlib import CycleError, TopologicalSorter
5
6
  from typing import Literal, cast
6
7
 
7
8
  import questionary
8
- from cognite.client.data_classes import AggregateResultItem, DataSetUpdate, filters
9
- from cognite.client.data_classes.aggregations import Count
10
- from cognite.client.data_classes.data_modeling import NodeId, View, ViewId
11
- from cognite.client.exceptions import CogniteAPIError, CogniteException
9
+ from cognite.client.data_classes import DataSetUpdate
10
+ from cognite.client.data_classes.data_modeling import Edge, NodeId
11
+ from cognite.client.data_classes.data_modeling.statistics import SpaceStatistics
12
+ from cognite.client.exceptions import CogniteAPIError
12
13
  from cognite.client.utils._identifier import InstanceId
13
14
  from rich import print
14
15
  from rich.console import Console
15
16
  from rich.panel import Panel
16
- from rich.status import Status
17
17
 
18
18
  from cognite_toolkit._cdf_tk.client import ToolkitClient
19
- from cognite_toolkit._cdf_tk.constants import COGNITE_FILE_CONTAINER, COGNITE_TIME_SERIES_CONTAINER
19
+ from cognite_toolkit._cdf_tk.cruds import (
20
+ AssetCRUD,
21
+ ContainerCRUD,
22
+ DataModelCRUD,
23
+ EdgeCRUD,
24
+ EventCRUD,
25
+ ExtractionPipelineCRUD,
26
+ FileMetadataCRUD,
27
+ LabelCRUD,
28
+ NodeCRUD,
29
+ RelationshipCRUD,
30
+ ResourceCRUD,
31
+ SequenceCRUD,
32
+ SpaceCRUD,
33
+ ThreeDModelCRUD,
34
+ TimeSeriesCRUD,
35
+ TransformationCRUD,
36
+ ViewCRUD,
37
+ WorkflowCRUD,
38
+ )
20
39
  from cognite_toolkit._cdf_tk.data_classes import DeployResults, ResourceDeployResult
21
40
  from cognite_toolkit._cdf_tk.exceptions import (
22
- CDFAPIError,
23
- ResourceDeleteError,
41
+ AuthorizationError,
24
42
  ToolkitMissingResourceError,
25
- ToolkitNotImplementedError,
26
- ToolkitRequiredValueError,
27
- ToolkitValueError,
28
- )
29
- from cognite_toolkit._cdf_tk.loaders import (
30
- RESOURCE_LOADER_LIST,
31
- AssetLoader,
32
- CogniteFileLoader,
33
- DataSetsLoader,
34
- FunctionLoader,
35
- GraphQLLoader,
36
- GroupAllScopedLoader,
37
- GroupLoader,
38
- GroupResourceScopedLoader,
39
- HostedExtractorDestinationLoader,
40
- LocationFilterLoader,
41
- NodeLoader,
42
- ResourceLoader,
43
- SpaceLoader,
44
- StreamlitLoader,
45
- TransformationLoader,
46
- ViewLoader,
47
43
  )
44
+ from cognite_toolkit._cdf_tk.protocols import ResourceResponseProtocol
45
+ from cognite_toolkit._cdf_tk.storageio import InstanceIO
46
+ from cognite_toolkit._cdf_tk.storageio.selectors import InstanceSelector
48
47
  from cognite_toolkit._cdf_tk.tk_warnings import (
49
48
  HighSeverityWarning,
50
49
  LimitedAccessWarning,
51
- MediumSeverityWarning,
52
50
  )
53
51
  from cognite_toolkit._cdf_tk.utils import humanize_collection
54
- from cognite_toolkit._cdf_tk.utils.cdf import iterate_instances
55
- from cognite_toolkit._cdf_tk.utils.interactive_select import DataModelingSelect
52
+ from cognite_toolkit._cdf_tk.utils.aggregators import (
53
+ AssetAggregator,
54
+ EventAggregator,
55
+ FileAggregator,
56
+ LabelCountAggregator,
57
+ RelationshipAggregator,
58
+ SequenceAggregator,
59
+ TimeSeriesAggregator,
60
+ )
61
+ from cognite_toolkit._cdf_tk.utils.http_client import (
62
+ FailedRequestItems,
63
+ FailedResponseItems,
64
+ HTTPClient,
65
+ ItemsRequest,
66
+ SuccessResponseItems,
67
+ )
56
68
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
69
+ from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
57
70
  from cognite_toolkit._cdf_tk.utils.validate_access import ValidateAccess
58
71
 
59
72
  from ._base import ToolkitCommand
60
73
 
61
74
 
75
+ @dataclass
76
+ class DeleteResults:
77
+ deleted: int = 0
78
+ failed: int = 0
79
+
80
+
81
+ @dataclass
82
+ class DeleteItem:
83
+ item: JsonVal
84
+ as_id_fun: Callable[[JsonVal], Hashable]
85
+
86
+ def dump(self) -> JsonVal:
87
+ return self.item
88
+
89
+ def as_id(self) -> Hashable:
90
+ return self.as_id_fun(self.item)
91
+
92
+
93
+ @dataclass
94
+ class ToDelete(ABC):
95
+ crud: ResourceCRUD
96
+ total: int
97
+ delete_url: str
98
+
99
+ @property
100
+ def display_name(self) -> str:
101
+ return self.crud.display_name
102
+
103
+ @abstractmethod
104
+ def get_process_function(
105
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
106
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
107
+ raise NotImplementedError()
108
+
109
+ def get_extra_fields(self) -> dict[str, JsonVal]:
110
+ return {}
111
+
112
+
113
+ @dataclass
114
+ class DataModelingToDelete(ToDelete):
115
+ def get_process_function(
116
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
117
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
118
+ def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
119
+ # We know that all data modeling resources implement as_id
120
+ return [item.as_id().dump(include_type=False) for item in chunk] # type: ignore[attr-defined]
121
+
122
+ return as_id
123
+
124
+
125
+ @dataclass
126
+ class EdgeToDelete(ToDelete):
127
+ def get_process_function(
128
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
129
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
130
+ def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
131
+ return [
132
+ {"space": item.space, "externalId": item.external_id, "instanceType": "edge"}
133
+ for item in cast(list[Edge], chunk)
134
+ ]
135
+
136
+ return as_id
137
+
138
+
139
+ @dataclass
140
+ class NodesToDelete(ToDelete):
141
+ delete_datapoints: bool
142
+ delete_file_content: bool
143
+
144
+ def get_process_function(
145
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
146
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
147
+ def check_for_data(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
148
+ # We know that all node resources implement as_id
149
+ node_ids = [item.as_id() for item in chunk] # type: ignore[attr-defined]
150
+ found_ids: set[InstanceId] = set()
151
+ if not self.delete_datapoints:
152
+ timeseries = client.time_series.retrieve_multiple(instance_ids=node_ids, ignore_unknown_ids=True)
153
+ found_ids |= {ts.instance_id for ts in timeseries if ts.instance_id is not None}
154
+ if not self.delete_file_content:
155
+ files = client.files.retrieve_multiple(instance_ids=node_ids, ignore_unknown_ids=True)
156
+ found_ids |= {f.instance_id for f in files if f.instance_id is not None}
157
+ if found_ids and verbose:
158
+ console.print(f"Skipping {found_ids} nodes as they have datapoints or file content")
159
+ process_results.unchanged += len(found_ids)
160
+ result: list[JsonVal] = []
161
+ for node_id in (n for n in node_ids if n not in found_ids):
162
+ dumped = node_id.dump(include_instance_type=True)
163
+ # The delete endpoint expects "instanceType" instead of "type"
164
+ dumped["instanceType"] = dumped.pop("type")
165
+ result.append(dumped)
166
+ return result
167
+
168
+ return check_for_data
169
+
170
+
171
+ @dataclass
172
+ class IdResourceToDelete(ToDelete):
173
+ def get_process_function(
174
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
175
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
176
+ def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
177
+ # We know that all id resources have an id attribute
178
+ return [{"id": item.id} for item in chunk] # type: ignore[attr-defined]
179
+
180
+ return as_id
181
+
182
+
183
+ @dataclass
184
+ class ExternalIdToDelete(ToDelete):
185
+ def get_process_function(
186
+ self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
187
+ ) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
188
+ def as_external_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
189
+ # We know that all external id resources have an external_id attribute
190
+ return [{"externalId": item.external_id} for item in chunk] # type: ignore[attr-defined]
191
+
192
+ return as_external_id
193
+
194
+
195
+ @dataclass
196
+ class AssetToDelete(IdResourceToDelete):
197
+ recursive: bool
198
+
199
+ def get_extra_fields(self) -> dict[str, JsonVal]:
200
+ return {"recursive": self.recursive}
201
+
202
+
62
203
  class PurgeCommand(ToolkitCommand):
204
+ BATCH_SIZE_DM = 1000
205
+
63
206
  def space(
64
207
  self,
65
208
  client: ToolkitClient,
66
- space: str | None = None,
209
+ selected_space: str,
67
210
  include_space: bool = False,
211
+ delete_datapoints: bool = False,
212
+ delete_file_content: bool = False,
68
213
  dry_run: bool = False,
69
214
  auto_yes: bool = False,
70
215
  verbose: bool = False,
71
- ) -> None:
72
- """Purge a space and all its content"""
73
- selected_space = self._get_selected_space(space, client)
74
- if space is None:
75
- # Interactive mode
76
- include_space = questionary.confirm("Do you also want to delete the space itself?", default=False).ask()
77
- dry_run = questionary.confirm("Dry run?", default=True).ask()
216
+ ) -> DeployResults:
217
+ # Warning Messages
78
218
  if not dry_run:
79
219
  self._print_panel("space", selected_space)
80
- if not auto_yes:
81
- confirm = questionary.confirm(
82
- f"Are you really sure you want to purge the {selected_space!r} space?", default=False
83
- ).ask()
84
- if not confirm:
85
- return
86
-
87
- loaders = self._get_dependencies(
88
- SpaceLoader,
89
- exclude={
90
- GraphQLLoader,
91
- GroupResourceScopedLoader,
92
- LocationFilterLoader,
93
- TransformationLoader,
94
- CogniteFileLoader,
95
- },
96
- )
97
- is_purged = self._purge(client, loaders, selected_space, dry_run=dry_run, verbose=verbose)
98
- if include_space and is_purged:
99
- space_loader = SpaceLoader.create_loader(client)
100
- if dry_run:
101
- print(f"Would delete space {selected_space}")
102
- else:
103
- try:
104
- space_loader.delete([selected_space])
105
- print(f"Space {selected_space} deleted")
106
- except CogniteAPIError as e:
107
- self.warn(HighSeverityWarning(f"Failed to delete space {selected_space!r}: {e}"))
108
- elif include_space:
109
- self.warn(HighSeverityWarning(f"Space {selected_space!r} was not deleted due to errors during the purge"))
110
-
111
- if not dry_run and is_purged:
112
- print(f"Purge space {selected_space!r} completed.")
113
- elif not dry_run:
114
- print(f"Purge space {selected_space!r} partly completed. See warnings for details.")
115
220
 
116
- @staticmethod
117
- def _get_dependencies(
118
- loader_cls: type[ResourceLoader], exclude: set[type[ResourceLoader]] | None = None
119
- ) -> dict[type[ResourceLoader], frozenset[type[ResourceLoader]]]:
120
- return {
121
- dep_cls: dep_cls.dependencies
122
- for dep_cls in RESOURCE_LOADER_LIST
123
- if loader_cls in dep_cls.dependencies and (exclude is None or dep_cls not in exclude)
124
- }
221
+ if not dry_run and not auto_yes:
222
+ confirm = questionary.confirm(
223
+ f"Are you really sure you want to purge the {selected_space!r} space?", default=False
224
+ ).ask()
225
+ if not confirm:
226
+ return DeployResults([], "purge", dry_run=dry_run)
227
+
228
+ stats = client.data_modeling.statistics.spaces.retrieve(selected_space)
229
+ if stats is None:
230
+ raise ToolkitMissingResourceError(f"Space {selected_space!r} does not exist")
231
+
232
+ # ValidateAuth
233
+ validator = ValidateAccess(client, "purge")
234
+ if include_space or (stats.containers + stats.views + stats.data_models) > 0:
235
+ # We check for write even in dry-run mode. This is because dry-run is expected to fail
236
+ # if the user cannot perform the purge.
237
+ validator.data_model(["read", "write"], spaces={selected_space})
238
+ if (stats.nodes + stats.edges) > 0:
239
+ validator.instances(["read", "write"], spaces={selected_space})
240
+
241
+ to_delete = self._create_to_delete_list_purge_space(client, delete_datapoints, delete_file_content, stats)
242
+ if dry_run:
243
+ results = DeployResults([], "purge", dry_run=True)
244
+ for item in to_delete:
245
+ results[item.display_name] = ResourceDeployResult(item.display_name, deleted=item.total)
246
+ if include_space:
247
+ space_loader = SpaceCRUD.create_loader(client)
248
+ results[space_loader.display_name] = ResourceDeployResult(space_loader.display_name, deleted=1)
249
+ else:
250
+ results = self._delete_resources(to_delete, client, verbose, selected_space, None)
251
+ if include_space:
252
+ self._delete_space(client, selected_space, results)
253
+ print(results.counts_table(exclude_columns={"Created", "Changed", "Total"}))
254
+ return results
125
255
 
126
256
  @staticmethod
127
- def _get_selected_space(space: str | None, client: ToolkitClient) -> str:
128
- if space is None:
129
- spaces = client.data_modeling.spaces.list(limit=-1, include_global=False)
130
- selected_space = questionary.select(
131
- "Which space do you want to purge"
132
- " (including all data models, views, containers, nodes and edges within that space)?",
133
- sorted([space.space for space in spaces]),
134
- ).ask()
257
+ def _create_to_delete_list_purge_space(
258
+ client: ToolkitClient, delete_datapoints: bool, delete_file_content: bool, stats: SpaceStatistics
259
+ ) -> list[ToDelete]:
260
+ config = client.config
261
+ to_delete = [
262
+ EdgeToDelete(
263
+ EdgeCRUD.create_loader(client), stats.edges, config.create_api_url("/models/instances/delete")
264
+ ),
265
+ NodesToDelete(
266
+ NodeCRUD.create_loader(client),
267
+ stats.nodes,
268
+ config.create_api_url(
269
+ "/models/instances/delete",
270
+ ),
271
+ delete_datapoints=delete_datapoints,
272
+ delete_file_content=delete_file_content,
273
+ ),
274
+ DataModelingToDelete(
275
+ DataModelCRUD.create_loader(client),
276
+ stats.data_models,
277
+ config.create_api_url("/models/datamodels/delete"),
278
+ ),
279
+ DataModelingToDelete(
280
+ ViewCRUD.create_loader(client), stats.views, config.create_api_url("/models/views/delete")
281
+ ),
282
+ DataModelingToDelete(
283
+ ContainerCRUD.create_loader(client),
284
+ stats.containers,
285
+ config.create_api_url("/models/containers/delete"),
286
+ ),
287
+ ]
288
+ return to_delete
289
+
290
+ def _delete_space(self, client: ToolkitClient, selected_space: str, results: DeployResults) -> None:
291
+ space_loader = SpaceCRUD.create_loader(client)
292
+ try:
293
+ space_loader.delete([selected_space])
294
+ print(f"Space {selected_space} deleted")
295
+ except CogniteAPIError as e:
296
+ self.warn(HighSeverityWarning(f"Failed to delete space {selected_space!r}: {e}"))
135
297
  else:
136
- retrieved = client.data_modeling.spaces.retrieve(space)
137
- if retrieved is None:
138
- raise ToolkitMissingResourceError(f"Space {space} does not exist")
139
- selected_space = space
298
+ results[space_loader.display_name] = ResourceDeployResult(space_loader.display_name, deleted=1)
299
+
300
+ def _delete_resources(
301
+ self,
302
+ to_delete: list[ToDelete],
303
+ client: ToolkitClient,
304
+ verbose: bool,
305
+ space: str | None,
306
+ data_set_external_id: str | None,
307
+ ) -> DeployResults:
308
+ results = DeployResults([], "purge", dry_run=False)
309
+ console = Console()
310
+ with HTTPClient(client.config, max_retries=10) as delete_client:
311
+ for item in to_delete:
312
+ if item.total == 0:
313
+ results[item.display_name] = ResourceDeployResult(item.display_name, deleted=0)
314
+ continue
315
+ # Two results objects since they are updated concurrently
316
+ process_results = ResourceDeployResult(item.display_name)
317
+ write_results = ResourceDeployResult(item.display_name)
318
+ iteration_count: int | None = None
319
+ if item.total > 0:
320
+ iteration_count = item.total // self.BATCH_SIZE_DM + (
321
+ 1 if item.total % self.BATCH_SIZE_DM > 0 else 0
322
+ )
323
+ executor = ProducerWorkerExecutor[list[ResourceResponseProtocol], list[JsonVal]](
324
+ download_iterable=self._iterate_batch(
325
+ item.crud, space, data_set_external_id, batch_size=self.BATCH_SIZE_DM
326
+ ),
327
+ process=item.get_process_function(client, console, verbose, process_results),
328
+ write=self._purge_batch(item, item.delete_url, delete_client, write_results),
329
+ max_queue_size=10,
330
+ iteration_count=iteration_count,
331
+ download_description=f"Downloading {item.display_name}",
332
+ process_description=f"Preparing {item.display_name} for deletion",
333
+ write_description=f"Deleting {item.display_name}",
334
+ console=console,
335
+ )
336
+ executor.run()
337
+ write_results += process_results
338
+ results[item.display_name] = write_results
339
+ if executor.error_occurred:
340
+ if verbose and executor.error_traceback:
341
+ executor.print_traceback()
342
+ self.warn(
343
+ HighSeverityWarning(f"Failed to delete all {item.display_name}. {executor.error_message}")
344
+ )
345
+ return results
346
+
347
+ @staticmethod
348
+ def _iterate_batch(
349
+ crud: ResourceCRUD, selected_space: str | None, data_set_external_id: str | None, batch_size: int
350
+ ) -> Iterable[list[ResourceResponseProtocol]]:
351
+ batch: list[ResourceResponseProtocol] = []
352
+ for resource in crud.iterate(space=selected_space, data_set_external_id=data_set_external_id):
353
+ batch.append(resource)
354
+ if len(batch) >= batch_size:
355
+ yield batch
356
+ batch = []
357
+ if batch:
358
+ yield batch
359
+
360
+ @staticmethod
361
+ def _purge_batch(
362
+ delete_item: ToDelete, delete_url: str, delete_client: HTTPClient, result: ResourceDeployResult
363
+ ) -> Callable[[list[JsonVal]], None]:
364
+ crud = delete_item.crud
365
+
366
+ def as_id(item: JsonVal) -> Hashable:
367
+ try:
368
+ return crud.get_id(item)
369
+ except KeyError:
370
+ # Fallback to internal ID
371
+ return crud.get_internal_id(item)
372
+
373
+ def process(items: list[JsonVal]) -> None:
374
+ responses = delete_client.request_with_retries(
375
+ ItemsRequest(
376
+ endpoint_url=delete_url,
377
+ method="POST",
378
+ items=[DeleteItem(item=item, as_id_fun=as_id) for item in items],
379
+ extra_body_fields=delete_item.get_extra_fields(),
380
+ )
381
+ )
382
+ for response in responses:
383
+ if isinstance(response, SuccessResponseItems):
384
+ result.deleted += len(response.ids)
385
+ else:
386
+ result.unchanged += len(items)
140
387
 
141
- if selected_space is None:
142
- raise ToolkitValueError("No space selected")
143
- return selected_space
388
+ return process
144
389
 
145
390
  def dataset(
146
391
  self,
147
392
  client: ToolkitClient,
148
- external_id: str | None = None,
149
- include_dataset: bool = False,
393
+ selected_data_set_external_id: str,
394
+ archive_dataset: bool = False,
395
+ include_data: bool = True,
396
+ include_configurations: bool = False,
397
+ asset_recursive: bool = False,
150
398
  dry_run: bool = False,
151
399
  auto_yes: bool = False,
152
400
  verbose: bool = False,
153
- ) -> None:
154
- """Purge a dataset and all its content"""
155
- selected_dataset = self._get_selected_dataset(external_id, client)
156
- if external_id is None:
157
- # Interactive mode
158
- include_dataset = questionary.confirm(
159
- "Do you want to archive the dataset itself after the purge?", default=False
160
- ).ask()
161
- dry_run = questionary.confirm("Dry run?", default=True).ask()
401
+ ) -> DeployResults:
402
+ """Purge a dataset and all its content
403
+
404
+ Args:
405
+ client: The ToolkitClient to use
406
+ selected_data_set_external_id: The external ID of the dataset to purge
407
+ archive_dataset: Whether to archive the dataset itself after the purge
408
+ include_data: Whether to include data (assets, events, time series, files, sequences, 3D models, relationships, labels) in the purge
409
+ include_configurations: Whether to include configurations (workflows, transformations, extraction pipelines) in the purge
410
+ asset_recursive: Whether to recursively delete assets.
411
+ dry_run: Whether to perform a dry run
412
+ auto_yes: Whether to automatically confirm the purge
413
+ verbose: Whether to print verbose output
414
+
415
+ Returns:
416
+ DeployResults: The results of the purge operation
417
+
418
+ """
419
+ # Warning Messages
162
420
  if not dry_run:
163
- self._print_panel("dataset", selected_dataset)
164
- if not auto_yes:
165
- confirm = questionary.confirm(
166
- f"Are you really sure you want to purge the {selected_dataset!r} dataset?", default=False
167
- ).ask()
168
- if not confirm:
169
- return
170
-
171
- loaders = self._get_dependencies(
172
- DataSetsLoader,
173
- exclude={
174
- GroupLoader,
175
- GroupResourceScopedLoader,
176
- GroupAllScopedLoader,
177
- StreamlitLoader,
178
- HostedExtractorDestinationLoader,
179
- FunctionLoader,
180
- LocationFilterLoader,
181
- },
421
+ self._print_panel("dataSet", selected_data_set_external_id)
422
+ if not dry_run and not auto_yes:
423
+ confirm = questionary.confirm(
424
+ f"Are you really sure you want to purge the {selected_data_set_external_id!r} dataSet?", default=False
425
+ ).ask()
426
+ if not confirm:
427
+ return DeployResults([], "purge", dry_run=dry_run)
428
+
429
+ # Validate Auth
430
+ validator = ValidateAccess(client, "purge")
431
+ data_set_id = client.lookup.data_sets.id(selected_data_set_external_id)
432
+ if data_set_id is None:
433
+ raise ToolkitMissingResourceError(f"DataSet {selected_data_set_external_id!r} does not exist")
434
+ action = cast(Sequence[Literal["read", "write"]], ["read"] if dry_run else ["read", "write"])
435
+ if include_data:
436
+ # Check asset, events, time series, files, and sequences access, relationships, labels, 3D access.
437
+ validator.dataset_data(action, dataset_ids={data_set_id})
438
+ if include_configurations:
439
+ # Check workflow, transformations, extraction pipeline access
440
+ validator.dataset_configurations(action, dataset_ids={data_set_id})
441
+
442
+ to_delete: list[ToDelete] = self._create_to_delete_list_purge_dataset(
443
+ client,
444
+ include_data,
445
+ include_configurations,
446
+ selected_data_set_external_id,
447
+ asset_recursive,
182
448
  )
183
- is_purged = self._purge(client, loaders, selected_data_set=selected_dataset, dry_run=dry_run, verbose=verbose)
184
- if include_dataset and is_purged:
185
- if dry_run:
186
- print(f"Would have archived {selected_dataset}")
187
- else:
188
- archived = (
189
- DataSetUpdate(external_id=selected_dataset)
190
- .external_id.set(str(uuid.uuid4()))
191
- .metadata.add({"archived": "true"})
192
- .write_protected.set(True)
193
- )
194
- client.data_sets.update(archived)
195
- print(f"DataSet {selected_dataset} archived")
196
- elif include_dataset:
197
- self.warn(
198
- HighSeverityWarning(f"DataSet {selected_dataset} was not archived due to errors during the purge")
199
- )
449
+ if dry_run:
450
+ results = DeployResults([], "purge", dry_run=True)
451
+ for item in to_delete:
452
+ results[item.display_name] = ResourceDeployResult(item.display_name, deleted=item.total)
453
+ else:
454
+ results = self._delete_resources(to_delete, client, verbose, None, selected_data_set_external_id)
455
+ print(results.counts_table(exclude_columns={"Created", "Changed", "Total"}))
456
+ if archive_dataset and not dry_run:
457
+ self._archive_dataset(client, selected_data_set_external_id)
458
+ return results
200
459
 
201
- if not dry_run and is_purged:
202
- print(f"Purged dataset {selected_dataset!r} completed")
203
- elif not dry_run:
204
- print(f"Purged dataset {selected_dataset!r} partly completed. See warnings for details.")
460
+ @staticmethod
461
+ def _archive_dataset(client: ToolkitClient, data_set: str) -> None:
462
+ archived = (
463
+ DataSetUpdate(external_id=data_set)
464
+ .external_id.set(str(uuid.uuid4()))
465
+ .metadata.add({"archived": "true"})
466
+ .write_protected.set(True)
467
+ )
468
+ client.data_sets.update(archived)
469
+ print(f"DataSet {data_set} archived")
470
+
471
+ @staticmethod
472
+ def _create_to_delete_list_purge_dataset(
473
+ client: ToolkitClient,
474
+ include_data: bool,
475
+ include_configurations: bool,
476
+ data_set_external_id: str,
477
+ asset_recursive: bool,
478
+ ) -> list[ToDelete]:
479
+ config = client.config
480
+ to_delete: list[ToDelete] = []
481
+
482
+ if include_data:
483
+ three_d_crud = ThreeDModelCRUD.create_loader(client)
484
+ to_delete.extend(
485
+ [
486
+ ExternalIdToDelete(
487
+ RelationshipCRUD.create_loader(client),
488
+ RelationshipAggregator(client).count(data_set_external_id=data_set_external_id),
489
+ config.create_api_url("/relationships/delete"),
490
+ ),
491
+ IdResourceToDelete(
492
+ EventCRUD.create_loader(client),
493
+ EventAggregator(client).count(data_set_external_id=data_set_external_id),
494
+ config.create_api_url("/events/delete"),
495
+ ),
496
+ IdResourceToDelete(
497
+ FileMetadataCRUD.create_loader(client),
498
+ FileAggregator(client).count(data_set_external_id=data_set_external_id),
499
+ config.create_api_url("/files/delete"),
500
+ ),
501
+ IdResourceToDelete(
502
+ TimeSeriesCRUD.create_loader(client),
503
+ TimeSeriesAggregator(client).count(data_set_external_id=data_set_external_id),
504
+ config.create_api_url("/timeseries/delete"),
505
+ ),
506
+ IdResourceToDelete(
507
+ SequenceCRUD.create_loader(client),
508
+ SequenceAggregator(client).count(data_set_external_id=data_set_external_id),
509
+ config.create_api_url("/sequences/delete"),
510
+ ),
511
+ IdResourceToDelete(
512
+ three_d_crud,
513
+ sum(1 for _ in three_d_crud.iterate(data_set_external_id=data_set_external_id)),
514
+ config.create_api_url("/3d/models/delete"),
515
+ ),
516
+ AssetToDelete(
517
+ AssetCRUD.create_loader(client),
518
+ AssetAggregator(client).count(data_set_external_id=data_set_external_id),
519
+ config.create_api_url("/assets/delete"),
520
+ recursive=asset_recursive,
521
+ ),
522
+ ExternalIdToDelete(
523
+ LabelCRUD.create_loader(client),
524
+ LabelCountAggregator(client).count(data_set_external_id=data_set_external_id),
525
+ config.create_api_url("/labels/delete"),
526
+ ),
527
+ ]
528
+ )
529
+ if include_configurations:
530
+ transformation_crud = TransformationCRUD.create_loader(client)
531
+ workflow_crud = WorkflowCRUD.create_loader(client)
532
+ extraction_pipeline_crud = ExtractionPipelineCRUD.create_loader(client)
533
+
534
+ to_delete.extend(
535
+ [
536
+ IdResourceToDelete(
537
+ transformation_crud,
538
+ sum(1 for _ in transformation_crud.iterate(data_set_external_id=data_set_external_id)),
539
+ config.create_api_url("/transformations/delete"),
540
+ ),
541
+ ExternalIdToDelete(
542
+ workflow_crud,
543
+ sum(1 for _ in workflow_crud.iterate(data_set_external_id=data_set_external_id)),
544
+ config.create_api_url("/workflows/delete"),
545
+ ),
546
+ IdResourceToDelete(
547
+ extraction_pipeline_crud,
548
+ sum(1 for _ in extraction_pipeline_crud.iterate(data_set_external_id=data_set_external_id)),
549
+ config.create_api_url("/extpipes/delete"),
550
+ ),
551
+ ]
552
+ )
553
+ return to_delete
205
554
 
206
- def _print_panel(self, resource_type: str, resource: str) -> None:
555
+ @staticmethod
556
+ def _print_panel(resource_type: str, resource: str) -> None:
207
557
  print(
208
558
  Panel(
209
559
  f"[red]WARNING:[/red] This operation [bold]cannot be undone[/bold]! "
@@ -216,565 +566,173 @@ class PurgeCommand(ToolkitCommand):
216
566
  )
217
567
  )
218
568
 
219
- @staticmethod
220
- def _get_selected_dataset(external_id: str | None, client: ToolkitClient) -> str:
221
- if external_id is None:
222
- datasets = client.data_sets.list(limit=-1)
223
- selected_dataset: str = questionary.select(
224
- "Which space are you going to purge (delete all resources in dataset)?",
225
- sorted([dataset.external_id for dataset in datasets if dataset.external_id]),
226
- ).ask()
227
- else:
228
- retrieved = client.data_sets.retrieve(external_id=external_id)
229
- if retrieved is None:
230
- raise ToolkitMissingResourceError(f"DataSet {external_id!r} does not exist")
231
- selected_dataset = external_id
232
-
233
- if selected_dataset is None:
234
- raise ToolkitValueError("No space selected")
235
- return selected_dataset
236
-
237
- def _purge(
238
- self,
239
- client: ToolkitClient,
240
- loaders: dict[type[ResourceLoader], frozenset[type[ResourceLoader]]],
241
- selected_space: str | None = None,
242
- selected_data_set: str | None = None,
243
- dry_run: bool = False,
244
- verbose: bool = False,
245
- batch_size: int = 1000,
246
- ) -> bool:
247
- is_purged = True
248
- results = DeployResults([], "purge", dry_run=dry_run)
249
- loader_cls: type[ResourceLoader]
250
- has_purged_views = False
251
- with Console().status("...", spinner="aesthetic", speed=0.4) as status:
252
- for loader_cls in reversed(list(TopologicalSorter(loaders).static_order())):
253
- if loader_cls not in loaders:
254
- # Dependency that is included
255
- continue
256
- loader = loader_cls.create_loader(client, console=status.console)
257
- status_prefix = "Would have deleted" if dry_run else "Deleted"
258
- if isinstance(loader, ViewLoader) and not dry_run:
259
- status_prefix = "Expected deleted" # Views are not always deleted immediately
260
- has_purged_views = True
261
-
262
- if not dry_run and isinstance(loader, NodeLoader):
263
- # Special handling of nodes as node type must be deleted after regular nodes
264
- # In dry-run mode, we are not deleting the nodes, so we can skip this.
265
- warnings_before = len(self.warning_list)
266
- deleted_nodes = self._purge_nodes(loader, status, selected_space, verbose)
267
- results[loader.display_name] = ResourceDeployResult(
268
- name=loader.display_name,
269
- deleted=deleted_nodes,
270
- total=deleted_nodes,
271
- )
272
- if len(self.warning_list) > warnings_before and any(
273
- isinstance(warn, HighSeverityWarning) for warn in self.warning_list[warnings_before:]
274
- ):
275
- is_purged = False
276
- continue
277
- elif not dry_run and isinstance(loader, AssetLoader):
278
- # Special handling of assets as we must ensure all children are deleted before the parent.
279
- # In dry-run mode, we are not deleting the assets, so we can skip this.
280
- deleted_assets = self._purge_assets(loader, status, selected_data_set)
281
- results[loader.display_name] = ResourceDeployResult(
282
- loader.display_name, deleted=deleted_assets, total=deleted_assets
283
- )
284
- continue
285
-
286
- # Child loaders are, for example, WorkflowTriggerLoader, WorkflowVersionLoader for WorkflowLoader
287
- # These must delete all resources that are connected to the resource that the loader is deleting
288
- # Exclude loaders that we are already iterating over
289
- child_loader_classes = self._get_dependencies(loader_cls, exclude=set(loaders))
290
- child_loaders = [
291
- child_loader.create_loader(client)
292
- for child_loader in reversed(list(TopologicalSorter(child_loader_classes).static_order()))
293
- # Necessary as the topological sort includes dependencies that are not in the loaders
294
- if child_loader in child_loader_classes
295
- ]
296
- count = 0
297
- status.update(f"{status_prefix} {count:,} {loader.display_name}...")
298
- batch_ids: list[Hashable] = []
299
- for resource in loader.iterate(data_set_external_id=selected_data_set, space=selected_space):
300
- try:
301
- batch_ids.append(loader.get_id(resource))
302
- except (ToolkitRequiredValueError, KeyError) as e:
303
- try:
304
- batch_ids.append(loader.get_internal_id(resource))
305
- except (AttributeError, NotImplementedError):
306
- self.warn(
307
- HighSeverityWarning(
308
- f"Cannot delete {type(resource).__name__}. Failed to obtain ID: {e}"
309
- ),
310
- console=status.console,
311
- )
312
- is_purged = False
313
- continue
314
-
315
- if len(batch_ids) >= batch_size:
316
- child_deletion = self._delete_children(
317
- batch_ids, child_loaders, dry_run, status.console, verbose
318
- )
319
- batch_delete, batch_size = self._delete_batch(
320
- batch_ids, dry_run, loader, batch_size, status.console, verbose
321
- )
322
- count += batch_delete
323
- status.update(f"{status_prefix} {count:,} {loader.display_name}...")
324
- batch_ids = []
325
- # The DeployResults is overloaded such that the below accumulates the counts
326
- for name, child_count in child_deletion.items():
327
- results[name] = ResourceDeployResult(name, deleted=child_count, total=child_count)
328
-
329
- if batch_ids:
330
- child_deletion = self._delete_children(batch_ids, child_loaders, dry_run, status.console, verbose)
331
- batch_delete, batch_size = self._delete_batch(
332
- batch_ids, dry_run, loader, batch_size, status.console, verbose
333
- )
334
- count += batch_delete
335
- status.update(f"{status_prefix} {count:,} {loader.display_name}...")
336
- for name, child_count in child_deletion.items():
337
- results[name] = ResourceDeployResult(name, deleted=child_count, total=child_count)
338
- if count > 0:
339
- status.console.print(f"{status_prefix} {count:,} {loader.display_name}.")
340
- results[loader.display_name] = ResourceDeployResult(
341
- name=loader.display_name,
342
- deleted=count,
343
- total=count,
344
- )
345
- print(results.counts_table(exclude_columns={"Created", "Changed", "Untouched", "Total"}))
346
- if has_purged_views:
347
- print("You might need to run the purge command multiple times to delete all views.")
348
- return is_purged
349
-
350
- def _delete_batch(
351
- self,
352
- batch_ids: list[Hashable],
353
- dry_run: bool,
354
- loader: ResourceLoader,
355
- batch_size: int,
356
- console: Console,
357
- verbose: bool,
358
- ) -> tuple[int, int]:
359
- if dry_run:
360
- deleted = len(batch_ids)
361
- else:
362
- try:
363
- deleted = loader.delete(batch_ids)
364
- except CogniteAPIError as delete_error:
365
- if (
366
- delete_error.code == 408
367
- and "timed out" in delete_error.message.casefold()
368
- and batch_size > 1
369
- and (len(batch_ids) > 1)
370
- ):
371
- self.warn(
372
- MediumSeverityWarning(
373
- f"Timed out deleting {loader.display_name}. Trying again with a smaller batch size."
374
- ),
375
- include_timestamp=True,
376
- console=console,
377
- )
378
- new_batch_size = len(batch_ids) // 2
379
- first = batch_ids[:new_batch_size]
380
- second = batch_ids[new_batch_size:]
381
- first_deleted, first_batch_size = self._delete_batch(
382
- first, dry_run, loader, new_batch_size, console, verbose
383
- )
384
- second_deleted, second_batch_size = self._delete_batch(
385
- second, dry_run, loader, new_batch_size, console, verbose
386
- )
387
- return first_deleted + second_deleted, min(first_batch_size, second_batch_size)
388
- else:
389
- raise delete_error
390
-
391
- if verbose:
392
- prefix = "Would delete" if dry_run else "Finished purging"
393
- console.print(f"{prefix} {deleted:,} {loader.display_name}")
394
- return deleted, batch_size
395
-
396
- @staticmethod
397
- def _delete_children(
398
- parent_ids: list[Hashable], child_loaders: list[ResourceLoader], dry_run: bool, console: Console, verbose: bool
399
- ) -> dict[str, int]:
400
- child_deletion: dict[str, int] = {}
401
- for child_loader in child_loaders:
402
- child_ids = set()
403
- for child in child_loader.iterate(parent_ids=parent_ids):
404
- child_ids.add(child_loader.get_id(child))
405
- count = 0
406
- if child_ids:
407
- if dry_run:
408
- count = len(child_ids)
409
- else:
410
- count = child_loader.delete(list(child_ids))
411
-
412
- if verbose:
413
- prefix = "Would delete" if dry_run else "Deleted"
414
- console.print(f"{prefix} {count:,} {child_loader.display_name}")
415
- child_deletion[child_loader.display_name] = count
416
- return child_deletion
417
-
418
- def _purge_nodes(
419
- self,
420
- loader: NodeLoader,
421
- status: Status,
422
- selected_space: str | None = None,
423
- verbose: bool = False,
424
- batch_size: int = 1000,
425
- ) -> int:
426
- """Special handling of nodes as we must ensure all node types are deleted last."""
427
- # First find all Node Types
428
- node_types: dict[NodeId, set[NodeId]] = {}
429
- total_count = 0
430
- for node in loader.iterate(space=selected_space):
431
- if node.type and (selected_space is None or node.space == selected_space):
432
- node_id = NodeId(node.type.space, node.type.external_id)
433
- node_types[node_id] = set()
434
- total_count += 1
435
- status.update(f"Looking up node.type {total_count:,}...")
436
-
437
- count = 0
438
- batch_ids: list[NodeId] = []
439
- for node in loader.iterate(space=selected_space):
440
- node_id = node.as_id()
441
- if node_id in node_types:
442
- # Skip if it is a node type
443
- continue
444
- batch_ids.append(node_id)
445
- if len(batch_ids) >= batch_size:
446
- deleted, batch_size = self._delete_node_batch(batch_ids, loader, batch_size, status.console, verbose)
447
- count += deleted
448
- status.update(f"Deleted {count:,}/{total_count} {loader.display_name}...")
449
- batch_ids = []
450
-
451
- if batch_ids:
452
- deleted, batch_size = self._delete_node_batch(batch_ids, loader, batch_size, status.console, verbose)
453
- count += deleted
454
-
455
- # Finally delete all node types, first do a lookup and topological sort to ensure deleting in the right order.
456
- # Note this is an edge case, and is a result of some strange usage. But we need to handle it.
457
- for node_type in loader.retrieve(list(node_types.keys())):
458
- if node_type.type:
459
- required = NodeId(node_type.type.space, node_type.type.external_id)
460
- if required in node_types:
461
- node_types[required].add(node_type.as_id())
462
-
463
- try:
464
- node_type_ids = list(TopologicalSorter(node_types).static_order())
465
- except CycleError as e:
466
- self.warn(
467
- HighSeverityWarning(f"Failed to delete node-types: Cycle detected. {e.args}"), console=status.console
468
- )
469
- return count
470
-
471
- deleted, batch_size = self._delete_node_batch(node_type_ids, loader, batch_size, status.console, verbose)
472
- count += deleted
473
- if count > 0:
474
- status.console.print(f"Finished purging {loader.display_name}.")
475
- return count
476
-
477
- def _delete_node_batch(
478
- self, batch_ids: list[NodeId], loader: NodeLoader, batch_size: int, console: Console, verbose: bool
479
- ) -> tuple[int, int]:
480
- try:
481
- deleted = loader.delete(batch_ids)
482
- except CogniteAPIError as delete_error:
483
- if (
484
- delete_error.code == 400
485
- and "Attempted to delete a node which is used as a type" in delete_error.message
486
- ):
487
- # Fallback to delete one by one
488
- deleted = 0
489
- for node_id in batch_ids:
490
- try:
491
- loader.delete([node_id])
492
- deleted += 1
493
- except CogniteAPIError:
494
- is_type = filters.Equals(["node", "type"], node_id.dump(include_instance_type=False))
495
- instance_spaces = {node.space for node in loader.client.data_modeling.instances(filter=is_type)}
496
- if instance_spaces:
497
- suffix = (
498
- "It is used as a node type in the following spaces, "
499
- f"which must be purged first: {humanize_collection(instance_spaces)}"
500
- )
501
- else:
502
- suffix = "It is used as a node type, but failed to find the spaces where it is used."
503
- self.warn(HighSeverityWarning(f"Failed to delete {node_id!r}. {suffix}"), console=console)
504
- elif (
505
- delete_error.code == 408
506
- and "timed out" in delete_error.message.casefold()
507
- and batch_size > 1
508
- and (len(batch_ids) > 1)
509
- ):
510
- self.warn(
511
- MediumSeverityWarning(
512
- f"Timed out deleting {loader.display_name}. Trying again with a smaller batch size."
513
- ),
514
- include_timestamp=True,
515
- console=console,
516
- )
517
- new_batch_size = len(batch_ids) // 2
518
- first = batch_ids[:new_batch_size]
519
- second = batch_ids[new_batch_size:]
520
- first_deleted, first_batch_size = self._delete_node_batch(
521
- first, loader, new_batch_size, console, verbose
522
- )
523
- second_deleted, second_batch_size = self._delete_node_batch(
524
- second, loader, new_batch_size, console, verbose
525
- )
526
- return first_deleted + second_deleted, min(first_batch_size, second_batch_size)
527
- else:
528
- raise delete_error
529
-
530
- if verbose:
531
- console.print(f"Deleted {deleted:,} {loader.display_name}")
532
- return deleted, batch_size
533
-
534
- def _purge_assets(
535
- self,
536
- loader: AssetLoader,
537
- status: Status,
538
- selected_data_set: str | None = None,
539
- batch_size: int = 1000,
540
- ) -> int:
541
- # Using sets to avoid duplicates
542
- children_ids: set[int] = set()
543
- parent_ids: set[int] = set()
544
- is_first = True
545
- last_failed = False
546
- count = level = depth = last_parent_count = 0
547
- total_asset_count: int | None = None
548
- # Iterate through the asset hierarchy once per depth level. This is to delete all children before the parent.
549
- while is_first or level < depth:
550
- for asset in loader.iterate(data_set_external_id=selected_data_set):
551
- aggregates = cast(AggregateResultItem, asset.aggregates)
552
- if is_first and aggregates.depth is not None:
553
- depth = max(depth, aggregates.depth)
554
-
555
- if aggregates.child_count == 0:
556
- children_ids.add(asset.id)
557
- else:
558
- parent_ids.add(asset.id)
559
-
560
- if len(children_ids) >= batch_size:
561
- count += loader.delete(list(children_ids))
562
- if total_asset_count:
563
- status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
564
- else:
565
- status.update(f"Deleted {count:,} {loader.display_name}...")
566
- children_ids = set()
567
-
568
- if is_first:
569
- total_asset_count = count + len(parent_ids) + len(children_ids)
570
- if children_ids:
571
- count += loader.delete(list(children_ids))
572
- status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
573
- children_ids = set()
574
-
575
- if len(parent_ids) == last_parent_count and last_failed:
576
- try:
577
- # Just try to delete them all at once
578
- count += loader.delete(list(parent_ids))
579
- except CogniteAPIError as e:
580
- raise CDFAPIError(
581
- f"Failed to delete {len(parent_ids)} assets. This could be due to a parent-child cycle or an "
582
- "eventual consistency issue. Wait a few seconds and try again. An alternative is to use the "
583
- "Python-SDK to delete the asset hierarchy "
584
- "`client.assets.delete(external_id='my_root_asset', recursive=True)`"
585
- ) from e
586
- else:
587
- status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
588
- break
589
- elif len(parent_ids) == last_parent_count:
590
- last_failed = True
591
- else:
592
- last_failed = False
593
- level += 1
594
- last_parent_count = len(parent_ids)
595
- parent_ids.clear()
596
- is_first = False
597
- status.console.print(f"Finished purging {loader.display_name}.")
598
- return count
599
-
600
569
  def instances(
601
570
  self,
602
571
  client: ToolkitClient,
603
- view: list[str] | None = None,
604
- instance_space: list[str] | None = None,
605
- instance_type: str = "node",
572
+ selector: InstanceSelector,
606
573
  dry_run: bool = False,
607
574
  auto_yes: bool = False,
608
575
  unlink: bool = True,
609
576
  verbose: bool = False,
610
- ) -> None:
611
- is_interactive = view is None
577
+ ) -> DeleteResults:
578
+ """Purge instances"""
579
+ io = InstanceIO(client)
580
+ console = Console()
612
581
  validator = ValidateAccess(client, default_operation="purge")
613
- self.validate_model_access(validator, view)
614
- self.validate_instance_access(validator)
615
- selector = DataModelingSelect(client, operation="purge")
616
- selected_view = (
617
- selector.select_view(include_global=True) if view is None else self._get_selected_view(view, client)
618
- )
619
- self.validate_timeseries_access(validator, selected_view, unlink)
620
-
621
- if is_interactive:
622
- selected_instance_type = selector.select_instance_type(selected_view.used_for)
623
- instance_space = selector.select_instance_spaces(selected_view.as_id(), selected_instance_type)
624
- dry_run = questionary.confirm("Dry run?", default=True).ask()
625
- if self._is_timeseries(selected_view):
626
- unlink = questionary.confirm(
627
- "Do you want to unlink timeseries from the datapoints before deleting the instances?", default=True
628
- ).ask()
629
- else:
630
- selected_instance_type = self._validate_instance_type(instance_type, selected_view.used_for)
582
+ self.validate_instance_access(validator, selector.get_instance_spaces())
583
+ if unlink:
584
+ self.validate_timeseries_access(validator)
585
+ self.validate_file_access(validator)
631
586
 
587
+ total = io.count(selector)
588
+ if total is None or total == 0:
589
+ print("No instances found.")
590
+ return DeleteResults()
632
591
  if not dry_run:
633
- self._print_panel("view", str(selected_view.as_id()))
592
+ self._print_panel("instances", str(selector))
634
593
  if not auto_yes:
635
594
  confirm = questionary.confirm(
636
- f"Are you really sure you want to purge all {selected_instance_type}s with properties in the {selected_view.as_id()!r} view?",
595
+ f"Are you really sure you want to purge all {total:,} instances in {selector!s}?",
637
596
  default=False,
638
597
  ).ask()
639
598
  if not confirm:
640
- return
641
-
642
- process: Callable[[list[InstanceId]], list[InstanceId]] = self._no_op
643
- if self._is_timeseries(selected_view) and unlink:
644
- process = partial(self._unlink_timeseries, client=client, dry_run=dry_run, verbose=verbose)
645
-
646
- if self._is_files(selected_view) and unlink:
647
- raise ToolkitNotImplementedError("Purging files and unlinking them is not yet implemented.")
648
-
649
- total = client.data_modeling.instances.aggregate(
650
- view=selected_view.as_id(),
651
- aggregates=Count("externalId"),
652
- instance_type=selected_instance_type,
653
- filter=filters.SpaceFilter(space=instance_space, instance_type=selected_instance_type)
654
- if instance_space
655
- else None,
656
- limit=-1,
657
- ).value
658
- if total is None or total == 0:
659
- print(f"No {selected_instance_type}s found with properties in the {selected_view.as_id()!r} view.")
660
- return
661
-
662
- iteration_count = int(total // 1000 + (1 if total % 1000 > 0 else 0))
663
- console = Console()
664
-
665
- executor = ProducerWorkerExecutor[list[InstanceId], list[InstanceId]](
666
- download_iterable=self._iterate_instances(
667
- client=client,
668
- view_id=selected_view.as_id(),
669
- instance_space=instance_space,
670
- instance_type=selected_instance_type,
599
+ return DeleteResults()
600
+
601
+ process: Callable[[list[InstanceId]], list[dict[str, JsonVal]]] = self._prepare
602
+ if unlink:
603
+ process = partial(self._unlink_prepare, client=client, dry_run=dry_run, console=console, verbose=verbose)
604
+
605
+ iteration_count = int(total // io.CHUNK_SIZE + (1 if total % io.CHUNK_SIZE > 0 else 0))
606
+ with HTTPClient(config=client.config) as delete_client:
607
+ process_str = "Would be unlinking" if dry_run else "Unlinking"
608
+ write_str = "Would be deleting" if dry_run else "Deleting"
609
+ results = DeleteResults()
610
+ executor = ProducerWorkerExecutor[list[InstanceId], list[dict[str, JsonVal]]](
611
+ download_iterable=io.download_ids(selector),
612
+ process=process,
613
+ write=partial(self._delete_instance_ids, dry_run=dry_run, delete_client=delete_client, results=results),
614
+ iteration_count=iteration_count,
615
+ max_queue_size=10,
616
+ download_description=f"Retrieving instances from {selector!s}",
617
+ process_description=f"{process_str} instances from files/timeseries" if unlink else "",
618
+ write_description=f"{write_str} instances",
671
619
  console=console,
672
- ),
673
- process=process,
674
- write=self._no_delete if dry_run else client.data_modeling.instances.delete_fast, # type: ignore[arg-type]
675
- iteration_count=iteration_count,
676
- max_queue_size=10,
677
- download_description=f"Retrieving {instance_type}s",
678
- process_description=f"Preparing {instance_type}s for deletion",
679
- write_description=f"Deleting {instance_type}s",
680
- console=console,
681
- )
620
+ )
682
621
 
683
- executor.run()
684
- if executor.error_occurred:
685
- raise ResourceDeleteError(executor.error_message)
622
+ executor.run()
623
+ executor.raise_on_error()
686
624
 
687
625
  prefix = "Would have purged" if dry_run else "Purged"
688
- console.print(
689
- f"{prefix} {executor.total_items:,} {selected_instance_type} with properties in the {selected_view.as_id()!r} view."
626
+ if results.failed == 0:
627
+ console.print(f"{prefix} {results.deleted:,} instances in {selector!s}")
628
+ else:
629
+ console.print(
630
+ f"{prefix} {results.deleted:,} instances in {selector!s}, but failed to purge {results.failed:,} instances"
631
+ )
632
+ return results
633
+
634
+ def validate_instance_access(self, validator: ValidateAccess, instance_spaces: list[str] | None) -> None:
635
+ space_ids = validator.instances(
636
+ ["read", "write"], spaces=set(instance_spaces) if instance_spaces else None, operation="purge"
637
+ )
638
+ if space_ids is None:
639
+ # Full access
640
+ return
641
+ self.warn(
642
+ LimitedAccessWarning(
643
+ f"You can only purge instances in the following instance spaces: {humanize_collection(space_ids)}."
644
+ )
690
645
  )
646
+ return
691
647
 
692
648
  def validate_model_access(self, validator: ValidateAccess, view: list[str] | None) -> None:
693
649
  space = view[0] if isinstance(view, list) and view and isinstance(view[0], str) else None
694
- if space_ids := validator.data_model(["read"], space=space):
650
+ if space_ids := validator.data_model(["read"], spaces={space} if space else None):
695
651
  self.warn(
696
652
  LimitedAccessWarning(
697
653
  f"You can only select views in the {len(space_ids)} spaces you have access to: {humanize_collection(space_ids)}."
698
654
  )
699
655
  )
700
656
 
701
- def validate_instance_access(self, validator: ValidateAccess) -> None:
702
- if space_ids := validator.instances(["read", "write"]):
703
- self.warn(
704
- LimitedAccessWarning(
705
- f"You can only purge instances in the {len(space_ids)} spaces you have access to: {humanize_collection(space_ids)}."
706
- )
707
- )
708
-
709
- def validate_timeseries_access(self, validator: ValidateAccess, view: View, unlink: bool) -> None:
710
- if unlink is False or not self._is_timeseries(view):
657
+ def validate_timeseries_access(self, validator: ValidateAccess) -> None:
658
+ try:
659
+ ids_by_scope = validator.timeseries(["read", "write"], operation="unlink")
660
+ except AuthorizationError as e:
661
+ self.warn(HighSeverityWarning(f"You cannot unlink time series. You need read and write access: {e!s}"))
711
662
  return
712
- if ids_by_scope := validator.timeseries(["read", "write"], operation="unlink"):
713
- scope_str = humanize_collection(
714
- [f"{scope_name} ({humanize_collection(ids)})" for scope_name, ids in ids_by_scope.items()],
715
- bind_word="and",
716
- )
717
- self.warn(LimitedAccessWarning(f"You can only unlink time series in the following scopes: {scope_str}."))
718
-
719
- @staticmethod
720
- def _validate_instance_type(
721
- instance_type: str, view_used_for: Literal["node", "edge", "all"]
722
- ) -> Literal["node", "edge"]:
723
- if instance_type not in ["node", "edge"]:
724
- raise ToolkitValueError(f"Invalid instance type: {instance_type!r}. Must be 'node' or 'edge'.")
725
- if view_used_for == "all":
726
- return instance_type # type: ignore[return-value]
727
- if view_used_for != instance_type:
728
- raise ToolkitValueError(
729
- f"View {view_used_for!r} does not support instance type {instance_type!r}. "
730
- f"You must purge {view_used_for!r} instances or select another view."
731
- )
732
- return instance_type # type: ignore[return-value]
733
-
734
- @staticmethod
735
- def _is_timeseries(view: View) -> bool:
736
- return COGNITE_TIME_SERIES_CONTAINER in view.referenced_containers()
663
+ if ids_by_scope is None:
664
+ return
665
+ scope_str = humanize_collection(
666
+ [f"{scope_name} ({humanize_collection(ids)})" for scope_name, ids in ids_by_scope.items()],
667
+ bind_word="and",
668
+ )
669
+ self.warn(LimitedAccessWarning(f"You can only unlink time series in the following scopes: {scope_str}."))
737
670
 
738
- @staticmethod
739
- def _is_files(view: View) -> bool:
740
- return COGNITE_FILE_CONTAINER in view.referenced_containers()
671
+ def validate_file_access(self, validator: ValidateAccess) -> None:
672
+ try:
673
+ ids_by_scope = validator.files(["read", "write"], operation="unlink")
674
+ except AuthorizationError as e:
675
+ self.warn(HighSeverityWarning(f"You cannot unlink files. You need read and write access: {e!s}"))
676
+ return
677
+ if ids_by_scope is None:
678
+ return
679
+ scope_str = humanize_collection(
680
+ [f"{scope_name} ({humanize_collection(ids)})" for scope_name, ids in ids_by_scope.items()],
681
+ bind_word="and",
682
+ )
683
+ self.warn(LimitedAccessWarning(f"You can only unlink files in the following scopes: {scope_str}."))
741
684
 
742
685
  @staticmethod
743
- def _iterate_instances(
686
+ def _prepare(instance_ids: list[InstanceId]) -> list[dict[str, JsonVal]]:
687
+ output: list[dict[str, JsonVal]] = []
688
+ for instance_id in instance_ids:
689
+ dumped = instance_id.dump(include_instance_type=True)
690
+ # The PySDK uses 'type' instead of 'instanceType' which is required by the delete endpoint
691
+ dumped["instanceType"] = dumped.pop("type")
692
+ # MyPy does not understand that InstanceId.dump() returns dict[str, JsonVal]
693
+ output.append(dumped) # type: ignore[arg-type]
694
+
695
+ return output
696
+
697
+ def _unlink_prepare(
698
+ self,
699
+ instance_ids: list[InstanceId],
744
700
  client: ToolkitClient,
745
- view_id: ViewId,
746
- instance_space: list[str] | None,
747
- instance_type: Literal["node", "edge"],
701
+ dry_run: bool,
748
702
  console: Console,
749
- ) -> Iterable[list[InstanceId]]:
750
- chunk: list[InstanceId] = []
751
- for instance in iterate_instances(
752
- client=client,
753
- instance_type=instance_type,
754
- source=view_id,
755
- space=instance_space,
756
- console=console,
757
- ):
758
- chunk.append(instance.as_id())
759
- if len(chunk) >= 1000:
760
- yield chunk
761
- chunk = []
762
- if chunk:
763
- yield chunk
703
+ verbose: bool = False,
704
+ ) -> list[dict[str, JsonVal]]:
705
+ self._unlink_timeseries(instance_ids, client, dry_run, console, verbose)
706
+ self._unlink_files(instance_ids, client, dry_run, console, verbose)
707
+ return self._prepare(instance_ids)
764
708
 
765
709
  @staticmethod
766
- def _no_op(instances: list[InstanceId]) -> list[InstanceId]:
767
- """No operation function that returns the input instances unchanged."""
768
- return instances
710
+ def _delete_instance_ids(
711
+ items: list[dict[str, JsonVal]], dry_run: bool, delete_client: HTTPClient, results: DeleteResults
712
+ ) -> None:
713
+ if dry_run:
714
+ results.deleted += len(items)
715
+ return
769
716
 
770
- @staticmethod
771
- def _no_delete(instances: list[InstanceId]) -> None:
772
- """No operation function that does not delete the instances."""
773
- # This is used in dry-run mode to avoid actual deletion
774
- pass
717
+ responses = delete_client.request_with_retries(
718
+ ItemsRequest(
719
+ delete_client.config.create_api_url("/models/instances/delete"),
720
+ method="POST",
721
+ # MyPy does not understand that InstanceId.load handles dict[str, JsonVal]
722
+ items=[DeleteItem(item=item, as_id_fun=InstanceId.load) for item in items], # type: ignore[arg-type]
723
+ )
724
+ )
725
+ for response in responses:
726
+ if isinstance(response, SuccessResponseItems):
727
+ results.deleted += len(response.ids)
728
+ elif isinstance(response, FailedResponseItems | FailedRequestItems):
729
+ results.failed += len(response.ids)
730
+ else:
731
+ results.failed += len(items)
775
732
 
733
+ @staticmethod
776
734
  def _unlink_timeseries(
777
- self, instances: list[InstanceId], client: ToolkitClient, dry_run: bool, verbose: bool
735
+ instances: list[InstanceId], client: ToolkitClient, dry_run: bool, console: Console, verbose: bool
778
736
  ) -> list[InstanceId]:
779
737
  node_ids = [instance for instance in instances if isinstance(instance, NodeId)]
780
738
  if node_ids:
@@ -783,23 +741,27 @@ class PurgeCommand(ToolkitCommand):
783
741
  migrated_timeseries_ids = [ts.id for ts in timeseries if ts.instance_id and ts.pending_instance_id] # type: ignore[attr-defined]
784
742
  client.time_series.unlink_instance_ids(id=migrated_timeseries_ids)
785
743
  if verbose:
786
- self.console(f"Unlinked {len(migrated_timeseries_ids)} timeseries from datapoints.")
744
+ console.print(f"Unlinked {len(migrated_timeseries_ids)} timeseries from datapoints.")
745
+ elif verbose and timeseries:
746
+ console.print(f"Would have unlinked {len(timeseries)} timeseries from datapoints.")
787
747
  return instances
788
748
 
789
749
  @staticmethod
790
- def _get_selected_view(view: list[str], client: ToolkitClient) -> View:
791
- if not (isinstance(view, list) and len(view) == 3):
792
- raise ToolkitValueError(f"Invalid view format: {view}. Expected format is 'space externalId version'.")
793
-
794
- try:
795
- retrieve_views = client.data_modeling.views.retrieve(
796
- ViewId.load(tuple(view)), # type: ignore[arg-type]
797
- include_inherited_properties=True,
798
- )
799
- except CogniteAPIError as e:
800
- raise CDFAPIError(f"Failed to retrieve view {view!r}. Status {e.code} Error: {e.message}") from e
801
- except CogniteException as e:
802
- raise CDFAPIError(f"Failed to retrieve view {view!r}. Error: {e}") from e
803
- if len(retrieve_views) == 0:
804
- raise ToolkitMissingResourceError(f"View {view!r} does not exist")
805
- return retrieve_views[0]
750
+ def _unlink_files(
751
+ instances: list[InstanceId], client: ToolkitClient, dry_run: bool, console: Console, verbose: bool
752
+ ) -> list[InstanceId]:
753
+ file_ids = [instance for instance in instances if isinstance(instance, NodeId)]
754
+ if file_ids:
755
+ files = client.files.retrieve_multiple(instance_ids=file_ids, ignore_unknown_ids=True)
756
+ if not dry_run and files:
757
+ migrated_file_ids = [
758
+ file.id
759
+ for file in files
760
+ if file.instance_id and file.pending_instance_id and file.id is not None # type: ignore[attr-defined]
761
+ ]
762
+ client.files.unlink_instance_ids(id=migrated_file_ids)
763
+ if verbose:
764
+ console.print(f"Unlinked {len(migrated_file_ids)} files from nodes.")
765
+ elif verbose and files:
766
+ console.print(f"Would have unlinked {len(files)} files from their blob content.")
767
+ return instances