cognite-toolkit 0.5.44__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 (807) 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 +30 -16
  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 +421 -102
  8. cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
  9. cognite_toolkit/_cdf_tk/apps/_landing_app.py +17 -5
  10. cognite_toolkit/_cdf_tk/apps/_migrate_app.py +1085 -1
  11. cognite_toolkit/_cdf_tk/apps/_modules_app.py +37 -13
  12. cognite_toolkit/_cdf_tk/apps/_profile_app.py +142 -3
  13. cognite_toolkit/_cdf_tk/apps/_purge.py +250 -17
  14. cognite_toolkit/_cdf_tk/apps/_run.py +21 -10
  15. cognite_toolkit/_cdf_tk/apps/_upload_app.py +107 -0
  16. cognite_toolkit/_cdf_tk/builders/__init__.py +8 -4
  17. cognite_toolkit/_cdf_tk/builders/_base.py +37 -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 +11 -31
  22. cognite_toolkit/_cdf_tk/builders/_raw.py +11 -11
  23. cognite_toolkit/_cdf_tk/builders/_streamlit.py +4 -4
  24. cognite_toolkit/_cdf_tk/builders/_transformation.py +11 -8
  25. cognite_toolkit/_cdf_tk/cdf_toml.py +77 -9
  26. cognite_toolkit/_cdf_tk/client/__init__.py +2 -1
  27. cognite_toolkit/_cdf_tk/client/_constants.py +1 -0
  28. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +49 -65
  29. cognite_toolkit/_cdf_tk/client/api/canvas.py +185 -0
  30. cognite_toolkit/_cdf_tk/client/api/charts.py +125 -0
  31. cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +70 -14
  32. cognite_toolkit/_cdf_tk/client/api/extended_files.py +227 -0
  33. cognite_toolkit/_cdf_tk/client/api/extended_functions.py +80 -0
  34. cognite_toolkit/_cdf_tk/client/api/extended_raw.py +49 -0
  35. cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +70 -2
  36. cognite_toolkit/_cdf_tk/client/api/fixed_transformations.py +122 -0
  37. cognite_toolkit/_cdf_tk/client/api/infield.py +254 -0
  38. cognite_toolkit/_cdf_tk/client/api/location_filters.py +19 -3
  39. cognite_toolkit/_cdf_tk/client/api/lookup.py +202 -71
  40. cognite_toolkit/_cdf_tk/client/api/migration.py +529 -0
  41. cognite_toolkit/_cdf_tk/client/api/project.py +24 -0
  42. cognite_toolkit/_cdf_tk/client/api/robotics/api.py +0 -2
  43. cognite_toolkit/_cdf_tk/client/api/robotics/capabilities.py +0 -2
  44. cognite_toolkit/_cdf_tk/client/api/robotics/data_postprocessing.py +0 -2
  45. cognite_toolkit/_cdf_tk/client/api/robotics/frames.py +0 -2
  46. cognite_toolkit/_cdf_tk/client/api/robotics/locations.py +0 -2
  47. cognite_toolkit/_cdf_tk/client/api/robotics/maps.py +0 -2
  48. cognite_toolkit/_cdf_tk/client/api/robotics/robots.py +0 -2
  49. cognite_toolkit/_cdf_tk/client/api/search.py +13 -0
  50. cognite_toolkit/_cdf_tk/client/api/search_config.py +49 -0
  51. cognite_toolkit/_cdf_tk/client/api/streams.py +89 -0
  52. cognite_toolkit/_cdf_tk/client/api/three_d.py +131 -0
  53. cognite_toolkit/_cdf_tk/client/api/token.py +111 -0
  54. cognite_toolkit/_cdf_tk/client/config.py +120 -0
  55. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +17 -0
  56. cognite_toolkit/_cdf_tk/client/data_classes/base.py +71 -0
  57. cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +1107 -0
  58. cognite_toolkit/_cdf_tk/client/data_classes/capabilities.py +170 -0
  59. cognite_toolkit/_cdf_tk/client/data_classes/charts.py +114 -0
  60. cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +184 -0
  61. cognite_toolkit/_cdf_tk/client/data_classes/extendable_cognite_file.py +8 -4
  62. cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetadata.py +108 -0
  63. cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetdata.py +113 -0
  64. cognite_toolkit/_cdf_tk/client/data_classes/functions.py +0 -2
  65. cognite_toolkit/_cdf_tk/client/data_classes/graphql_data_models.py +9 -5
  66. cognite_toolkit/_cdf_tk/client/data_classes/infield.py +116 -0
  67. cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +162 -0
  68. cognite_toolkit/_cdf_tk/client/data_classes/instances.py +24 -2
  69. cognite_toolkit/_cdf_tk/client/data_classes/location_filters.py +3 -5
  70. cognite_toolkit/_cdf_tk/client/data_classes/migration.py +457 -0
  71. cognite_toolkit/_cdf_tk/client/data_classes/project.py +41 -0
  72. cognite_toolkit/_cdf_tk/client/data_classes/raw.py +378 -9
  73. cognite_toolkit/_cdf_tk/client/data_classes/robotics.py +8 -10
  74. cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +224 -0
  75. cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +11 -11
  76. cognite_toolkit/_cdf_tk/client/data_classes/streams.py +90 -0
  77. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +53 -0
  78. cognite_toolkit/_cdf_tk/client/testing.py +83 -6
  79. cognite_toolkit/_cdf_tk/client/utils/_concurrency.py +24 -1
  80. cognite_toolkit/_cdf_tk/commands/__init__.py +20 -8
  81. cognite_toolkit/_cdf_tk/commands/_base.py +8 -3
  82. cognite_toolkit/_cdf_tk/commands/_changes.py +12 -46
  83. cognite_toolkit/_cdf_tk/commands/_cli_commands.py +0 -2
  84. cognite_toolkit/_cdf_tk/commands/_download.py +154 -0
  85. cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -2
  86. cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +7 -0
  87. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +309 -0
  88. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +373 -0
  89. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +232 -0
  90. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +294 -0
  91. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +471 -0
  92. cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +229 -0
  93. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +137 -0
  94. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +212 -0
  95. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +456 -0
  96. cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +60 -0
  97. cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +71 -0
  98. cognite_toolkit/_cdf_tk/commands/_profile.py +921 -149
  99. cognite_toolkit/_cdf_tk/commands/_purge.py +692 -511
  100. cognite_toolkit/_cdf_tk/commands/_questionary_style.py +16 -0
  101. cognite_toolkit/_cdf_tk/commands/_upload.py +289 -0
  102. cognite_toolkit/_cdf_tk/commands/_utils.py +1 -26
  103. cognite_toolkit/_cdf_tk/commands/_virtual_env.py +0 -2
  104. cognite_toolkit/_cdf_tk/commands/about.py +221 -0
  105. cognite_toolkit/_cdf_tk/commands/auth.py +46 -26
  106. cognite_toolkit/_cdf_tk/commands/build_cmd.py +72 -114
  107. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +241 -0
  108. cognite_toolkit/_cdf_tk/commands/build_v2/build_input.py +85 -0
  109. cognite_toolkit/_cdf_tk/commands/build_v2/build_issues.py +27 -0
  110. cognite_toolkit/_cdf_tk/commands/clean.py +89 -39
  111. cognite_toolkit/_cdf_tk/commands/deploy.py +334 -194
  112. cognite_toolkit/_cdf_tk/commands/dump_resource.py +470 -79
  113. cognite_toolkit/_cdf_tk/commands/init.py +219 -18
  114. cognite_toolkit/_cdf_tk/commands/modules.py +319 -71
  115. cognite_toolkit/_cdf_tk/commands/pull.py +45 -46
  116. cognite_toolkit/_cdf_tk/commands/repo.py +1 -1
  117. cognite_toolkit/_cdf_tk/commands/resources.py +179 -0
  118. cognite_toolkit/_cdf_tk/commands/run.py +11 -13
  119. cognite_toolkit/_cdf_tk/constants.py +104 -8
  120. cognite_toolkit/_cdf_tk/cruds/__init__.py +224 -0
  121. cognite_toolkit/_cdf_tk/{loaders/_base_loaders.py → cruds/_base_cruds.py} +72 -134
  122. cognite_toolkit/_cdf_tk/{loaders/_data_loaders.py → cruds/_data_cruds.py} +29 -38
  123. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +98 -0
  124. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +115 -0
  125. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/auth_loaders.py → cruds/_resource_cruds/auth.py} +33 -70
  126. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/classic_loaders.py → cruds/_resource_cruds/classic.py} +86 -122
  127. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +149 -0
  128. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/data_organization_loaders.py → cruds/_resource_cruds/data_organization.py} +17 -50
  129. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/datamodel_loaders.py → cruds/_resource_cruds/datamodel.py} +280 -372
  130. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/extraction_pipeline_loaders.py → cruds/_resource_cruds/extraction_pipeline.py} +70 -89
  131. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +438 -0
  132. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/file_loader.py → cruds/_resource_cruds/file.py} +28 -83
  133. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/function_loaders.py → cruds/_resource_cruds/function.py} +179 -108
  134. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/group_scoped_loader.py → cruds/_resource_cruds/group_scoped.py} +19 -19
  135. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders → cruds/_resource_cruds}/hosted_extractors.py +32 -102
  136. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/industrial_tool_loaders.py → cruds/_resource_cruds/industrial_tool.py} +15 -27
  137. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/location_loaders.py → cruds/_resource_cruds/location.py} +64 -170
  138. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +111 -0
  139. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/raw_loaders.py → cruds/_resource_cruds/raw.py} +21 -26
  140. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/relationship_loader.py → cruds/_resource_cruds/relationship.py} +21 -43
  141. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/robotics_loaders.py → cruds/_resource_cruds/robotics.py} +29 -50
  142. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +94 -0
  143. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/three_d_model_loaders.py → cruds/_resource_cruds/three_d_model.py} +11 -33
  144. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +500 -0
  145. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/transformation_loaders.py → cruds/_resource_cruds/transformation.py} +155 -144
  146. cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/workflow_loaders.py → cruds/_resource_cruds/workflow.py} +116 -203
  147. cognite_toolkit/_cdf_tk/{loaders → cruds}/_worker.py +85 -78
  148. cognite_toolkit/_cdf_tk/data_classes/__init__.py +2 -0
  149. cognite_toolkit/_cdf_tk/data_classes/_base.py +8 -4
  150. cognite_toolkit/_cdf_tk/data_classes/_build_files.py +3 -3
  151. cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +133 -23
  152. cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +23 -9
  153. cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +24 -21
  154. cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +34 -26
  155. cognite_toolkit/_cdf_tk/data_classes/_deploy_results.py +26 -7
  156. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +37 -18
  157. cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +12 -10
  158. cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +12 -10
  159. cognite_toolkit/_cdf_tk/data_classes/_packages.py +48 -24
  160. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +43 -0
  161. cognite_toolkit/_cdf_tk/exceptions.py +32 -3
  162. cognite_toolkit/_cdf_tk/feature_flags.py +59 -46
  163. cognite_toolkit/_cdf_tk/hints.py +5 -5
  164. cognite_toolkit/_cdf_tk/plugins.py +2 -3
  165. cognite_toolkit/_cdf_tk/protocols.py +97 -0
  166. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +63 -0
  167. cognite_toolkit/_cdf_tk/resource_classes/agent.py +58 -0
  168. cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +101 -0
  169. cognite_toolkit/_cdf_tk/resource_classes/authentication.py +15 -0
  170. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +30 -1
  171. cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +51 -0
  172. cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +326 -0
  173. cognite_toolkit/_cdf_tk/resource_classes/containers.py +92 -0
  174. cognite_toolkit/_cdf_tk/resource_classes/data_model.py +51 -0
  175. cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +77 -0
  176. cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +54 -0
  177. cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +15 -0
  178. cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +3 -7
  179. cognite_toolkit/_cdf_tk/resource_classes/functions.py +12 -1
  180. cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +50 -0
  181. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +19 -0
  182. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +255 -0
  183. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +117 -0
  184. cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +390 -0
  185. cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +109 -0
  186. cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +94 -0
  187. cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +100 -0
  188. cognite_toolkit/_cdf_tk/resource_classes/instance.py +93 -0
  189. cognite_toolkit/_cdf_tk/resource_classes/location.py +1 -1
  190. cognite_toolkit/_cdf_tk/resource_classes/migration.py +28 -0
  191. cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +6 -2
  192. cognite_toolkit/_cdf_tk/resource_classes/relationship.py +50 -0
  193. cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +13 -0
  194. cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +19 -0
  195. cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +15 -0
  196. cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +25 -0
  197. cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +12 -0
  198. cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +16 -0
  199. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +30 -0
  200. cognite_toolkit/_cdf_tk/resource_classes/sequence.py +107 -0
  201. cognite_toolkit/_cdf_tk/resource_classes/space.py +4 -4
  202. cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +26 -0
  203. cognite_toolkit/_cdf_tk/resource_classes/streams.py +29 -0
  204. cognite_toolkit/_cdf_tk/resource_classes/transformation_destination.py +1 -1
  205. cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +8 -0
  206. cognite_toolkit/_cdf_tk/resource_classes/transformations.py +2 -13
  207. cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +207 -0
  208. cognite_toolkit/_cdf_tk/resource_classes/views.py +93 -0
  209. cognite_toolkit/_cdf_tk/resource_classes/workflow.py +15 -0
  210. cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +115 -0
  211. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +233 -0
  212. cognite_toolkit/_cdf_tk/storageio/__init__.py +69 -0
  213. cognite_toolkit/_cdf_tk/storageio/_annotations.py +105 -0
  214. cognite_toolkit/_cdf_tk/storageio/_applications.py +408 -0
  215. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +693 -0
  216. cognite_toolkit/_cdf_tk/storageio/_base.py +328 -0
  217. cognite_toolkit/_cdf_tk/storageio/_data_classes.py +91 -0
  218. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +448 -0
  219. cognite_toolkit/_cdf_tk/storageio/_file_content.py +436 -0
  220. cognite_toolkit/_cdf_tk/storageio/_instances.py +225 -0
  221. cognite_toolkit/_cdf_tk/storageio/_raw.py +124 -0
  222. cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +133 -0
  223. cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +60 -0
  224. cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +80 -0
  225. cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +22 -0
  226. cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +45 -0
  227. cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +89 -0
  228. cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +164 -0
  229. cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +162 -0
  230. cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +24 -0
  231. cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
  232. cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
  233. cognite_toolkit/_cdf_tk/tk_warnings/base.py +1 -3
  234. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +8 -6
  235. cognite_toolkit/_cdf_tk/tk_warnings/other.py +18 -3
  236. cognite_toolkit/_cdf_tk/tracker.py +21 -24
  237. cognite_toolkit/_cdf_tk/utils/__init__.py +4 -6
  238. cognite_toolkit/_cdf_tk/utils/_auxiliary.py +36 -0
  239. cognite_toolkit/_cdf_tk/utils/aggregators.py +424 -0
  240. cognite_toolkit/_cdf_tk/utils/auth.py +4 -2
  241. cognite_toolkit/_cdf_tk/utils/auxiliary.py +23 -0
  242. cognite_toolkit/_cdf_tk/utils/cdf.py +191 -21
  243. cognite_toolkit/_cdf_tk/utils/cli_args.py +34 -0
  244. cognite_toolkit/_cdf_tk/utils/collection.py +53 -2
  245. cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +593 -0
  246. cognite_toolkit/_cdf_tk/utils/file.py +55 -2
  247. cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +61 -0
  248. cognite_toolkit/_cdf_tk/utils/fileio/_base.py +32 -0
  249. cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +61 -0
  250. cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +422 -0
  251. cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +429 -0
  252. cognite_toolkit/_cdf_tk/utils/graphql_parser.py +7 -2
  253. cognite_toolkit/_cdf_tk/utils/hashing.py +3 -9
  254. cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +69 -0
  255. cognite_toolkit/_cdf_tk/utils/http_client/_client.py +536 -0
  256. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +412 -0
  257. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +249 -0
  258. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +4 -0
  259. cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +34 -0
  260. cognite_toolkit/_cdf_tk/utils/interactive_select.py +819 -102
  261. cognite_toolkit/_cdf_tk/utils/modules.py +10 -14
  262. cognite_toolkit/_cdf_tk/utils/producer_worker.py +280 -63
  263. cognite_toolkit/_cdf_tk/utils/progress_tracker.py +87 -0
  264. cognite_toolkit/_cdf_tk/utils/sentry_utils.py +3 -3
  265. cognite_toolkit/_cdf_tk/utils/sql_parser.py +160 -0
  266. cognite_toolkit/_cdf_tk/utils/text.py +115 -0
  267. cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +99 -0
  268. cognite_toolkit/_cdf_tk/utils/useful_types.py +31 -0
  269. cognite_toolkit/_cdf_tk/utils/validate_access.py +468 -0
  270. cognite_toolkit/_cdf_tk/validation.py +172 -80
  271. cognite_toolkit/_repo_files/.gitignore +2 -0
  272. cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +1 -1
  273. cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +1 -1
  274. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  275. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  276. cognite_toolkit/_resources/cdf.toml +18 -0
  277. cognite_toolkit/_version.py +1 -1
  278. cognite_toolkit/config.dev.yaml +13 -0
  279. cognite_toolkit/demo/_base.py +4 -4
  280. {cognite_toolkit-0.5.44.dist-info → cognite_toolkit-0.7.34.dist-info}/METADATA +25 -21
  281. cognite_toolkit-0.7.34.dist-info/RECORD +320 -0
  282. cognite_toolkit-0.7.34.dist-info/WHEEL +4 -0
  283. {cognite_toolkit-0.5.44.dist-info → cognite_toolkit-0.7.34.dist-info}/entry_points.txt +1 -0
  284. cognite_toolkit/_builtin_modules/README.md +0 -7
  285. cognite_toolkit/_builtin_modules/bootcamp/README.md +0 -5
  286. cognite_toolkit/_builtin_modules/bootcamp/default.config.yaml +0 -3
  287. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/default.config.yaml +0 -9
  288. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/handler.py +0 -168
  289. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/ice_cream_factory_api.py +0 -61
  290. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/requirements.txt +0 -3
  291. cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/module.toml +0 -8
  292. cognite_toolkit/_builtin_modules/bootcamp/module.toml +0 -8
  293. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/default.config.yaml +0 -6
  294. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/handler.py +0 -229
  295. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/requirements.txt +0 -2
  296. cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/module.toml +0 -8
  297. cognite_toolkit/_builtin_modules/cdf.toml +0 -13
  298. cognite_toolkit/_builtin_modules/cdf_common/data_models/demo.Space.yaml +0 -3
  299. cognite_toolkit/_builtin_modules/cdf_common/data_sets/demo.DataSet.yaml +0 -3
  300. cognite_toolkit/_builtin_modules/cdf_common/default.config.yaml +0 -8
  301. cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.ExtractionPipeline.yaml +0 -54
  302. cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.config.yaml +0 -28
  303. cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/handler.py +0 -342
  304. cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/requirements.txt +0 -3
  305. cognite_toolkit/_builtin_modules/cdf_common/functions/write.Function.yaml +0 -7
  306. cognite_toolkit/_builtin_modules/cdf_common/module.toml +0 -7
  307. cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.DataBase.yaml +0 -1
  308. cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.Table.yaml +0 -2
  309. cognite_toolkit/_builtin_modules/cdf_common/raw/source.DataBase.yaml +0 -1
  310. cognite_toolkit/_builtin_modules/cdf_ingestion/auth/user.Group.yaml +0 -124
  311. cognite_toolkit/_builtin_modules/cdf_ingestion/auth/workflow.Group.yaml +0 -114
  312. cognite_toolkit/_builtin_modules/cdf_ingestion/default.config.yaml +0 -34
  313. cognite_toolkit/_builtin_modules/cdf_ingestion/module.toml +0 -14
  314. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/ingest.Workflow.yaml +0 -3
  315. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/trigger.WorkflowTrigger.yaml +0 -9
  316. cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/v1.WorkflowVersion.yaml +0 -150
  317. cognite_toolkit/_builtin_modules/common/README.md +0 -5
  318. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm.datamodel.yaml +0 -18
  319. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm_config.datamodel.yaml +0 -10
  320. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/config.space.yaml +0 -3
  321. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Activity.container.yaml +0 -108
  322. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Notification.container.yaml +0 -85
  323. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Operation.container.yaml +0 -83
  324. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/ApmConfig.container.yaml +0 -39
  325. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/source.space.yaml +0 -3
  326. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Activity.view.yaml +0 -119
  327. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Notification.view.yaml +0 -84
  328. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Operation.view.yaml +0 -86
  329. cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/ApmConfig.view.yaml +0 -48
  330. cognite_toolkit/_builtin_modules/common/cdf_apm_base/default.config.yaml +0 -1
  331. cognite_toolkit/_builtin_modules/common/cdf_apm_base/module.toml +0 -9
  332. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/README.md +0 -23
  333. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readonly.group.yaml +0 -260
  334. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readwrite.group.yaml +0 -323
  335. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/default.config.yaml +0 -2
  336. cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/module.toml +0 -7
  337. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/default.config.yaml +0 -10
  338. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/module.toml +0 -19
  339. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.sql +0 -31
  340. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.yaml +0 -13
  341. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.sql +0 -31
  342. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.yaml +0 -14
  343. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.sql +0 -34
  344. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.yaml +0 -13
  345. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.sql +0 -32
  346. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.yaml +0 -14
  347. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.sql +0 -32
  348. cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.yaml +0 -13
  349. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/auth/workflow.Group.yaml +0 -83
  350. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/annotation_type.Node.yaml +0 -2
  351. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/sourceSystem.node.yaml +0 -13
  352. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/default.config.yaml +0 -16
  353. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.ExtractionPipeline.yaml +0 -48
  354. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.config.yaml +0 -35
  355. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/handler.py +0 -476
  356. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/requirements.txt +0 -3
  357. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/functions.Function.yaml +0 -7
  358. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/module.toml +0 -28
  359. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/raw/state.Table.yaml +0 -2
  360. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/entity_matching.Workflow.yaml +0 -3
  361. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/trigger.WorkflowTrigger.yaml +0 -9
  362. cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/v1.WorkflowVersion.yaml +0 -22
  363. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/auth/function.Group.yaml +0 -89
  364. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/data_models/sourceSystem.node.yaml +0 -13
  365. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/default.config.yaml +0 -13
  366. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.ExtractionPipeline.yaml +0 -44
  367. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.config.yaml +0 -33
  368. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/handler.py +0 -405
  369. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/requirements.txt +0 -3
  370. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/functions.Function.yaml +0 -7
  371. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/module.toml +0 -31
  372. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/p_and_id_parser.Workflow.yaml +0 -3
  373. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/trigger.WorkflowTrigger.yaml +0 -9
  374. cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/v1.WorkflowVersion.yaml +0 -22
  375. cognite_toolkit/_builtin_modules/custom/my_module/auth/.gitkeep +0 -0
  376. cognite_toolkit/_builtin_modules/custom/my_module/default.config.yaml +0 -1
  377. cognite_toolkit/_builtin_modules/custom/my_module/module.toml +0 -7
  378. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/classic/root.Asset.yaml +0 -9
  379. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/data_sets/data_sets.DataSet.yaml +0 -3
  380. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/default.config.yaml +0 -4
  381. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/individualFilters.LocationFilter.yaml +0 -19
  382. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/oneFilter.LocationFilter.yaml +0 -12
  383. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/module.toml +0 -7
  384. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/data_models/instance.Space.yaml +0 -2
  385. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/default.config.yaml +0 -2
  386. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/locations/dataModel.LocationFilter.yaml +0 -17
  387. cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/module.toml +0 -7
  388. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/auth/locationfilter.Group.yaml +0 -12
  389. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/default.config.yaml +0 -3
  390. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/locations/user.LocationFilter.yaml +0 -9
  391. cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/module.toml +0 -11
  392. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/README.md +0 -3
  393. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/auth/applications-configuration.Group.yaml +0 -22
  394. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infieldAppData.space.yaml +0 -3
  395. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infield_apm_app_config.node.yaml +0 -28
  396. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/default.config.yaml +0 -2
  397. cognite_toolkit/_builtin_modules/infield/cdf_infield_common/module.toml +0 -11
  398. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/README.md +0 -61
  399. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_checklist_admin_role.group.yaml +0 -100
  400. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_normal_role.group.yaml +0 -100
  401. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_template_admin_role.group.yaml +0 -100
  402. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_viewer_role.group.yaml +0 -85
  403. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationAppData.space.yaml +0 -3
  404. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationSourceData.space.yaml +0 -3
  405. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
  406. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
  407. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/default.config.yaml +0 -23
  408. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/module.toml +0 -8
  409. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.sql +0 -34
  410. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.yaml +0 -24
  411. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.schedule.yaml +0 -3
  412. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
  413. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
  414. cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
  415. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/README.md +0 -61
  416. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_checklist_admin_role.group.yaml +0 -100
  417. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_normal_role.group.yaml +0 -100
  418. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_template_admin_role.group.yaml +0 -100
  419. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_viewer_role.group.yaml +0 -85
  420. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationAppData.space.yaml +0 -3
  421. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationSourceData.space.yaml +0 -3
  422. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
  423. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
  424. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/default.config.yaml +0 -23
  425. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/module.toml +0 -8
  426. 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
  427. 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
  428. 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
  429. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
  430. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
  431. cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
  432. cognite_toolkit/_builtin_modules/infield/default.config.yaml +0 -21
  433. cognite_toolkit/_builtin_modules/inrobot/README.md +0 -41
  434. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/README.md +0 -53
  435. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/auth/run-function-user.Group.yaml +0 -89
  436. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/classic/robot.Label.yaml +0 -6
  437. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/cogniteAppData.space.yaml +0 -3
  438. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/inrobotApmConfig.node.yaml +0 -17
  439. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_sets/robot_1.dataset.yaml +0 -2
  440. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/default.config.yaml +0 -3
  441. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/.gitkeep +0 -0
  442. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/README.md +0 -30
  443. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/__init__.py +0 -1
  444. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/README.md +0 -58
  445. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/__init__.py +0 -0
  446. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/apm_helpers.py +0 -269
  447. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/cdf_helpers.py +0 -112
  448. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/__init__.py +0 -0
  449. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/common.py +0 -16
  450. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/vision.py +0 -66
  451. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/utils.py +0 -17
  452. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/handler.py +0 -269
  453. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/requirements.txt +0 -22
  454. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/README.md +0 -56
  455. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/__init__.py +0 -1
  456. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/README.md +0 -58
  457. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/__init__.py +0 -0
  458. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/apm_helpers.py +0 -269
  459. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/cdf_helpers.py +0 -112
  460. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/__init__.py +0 -0
  461. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/common.py +0 -16
  462. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/vision.py +0 -66
  463. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/utils.py +0 -17
  464. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/handler.py +0 -396
  465. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/requirements.txt +0 -22
  466. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/README.md +0 -18
  467. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/__init__.py +0 -1
  468. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/README.md +0 -58
  469. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/__init__.py +0 -0
  470. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/apm_helpers.py +0 -269
  471. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/cdf_helpers.py +0 -112
  472. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/__init__.py +0 -0
  473. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/common.py +0 -16
  474. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/vision.py +0 -66
  475. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/utils.py +0 -17
  476. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/handler.py +0 -195
  477. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/requirements.txt +0 -23
  478. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/README.md +0 -14
  479. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/__init__.py +0 -1
  480. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/cognite_threesixty_images.py +0 -284
  481. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/handler.py +0 -257
  482. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/requirements.txt +0 -7
  483. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/robots.functions.Function.yaml +0 -51
  484. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/schedules.Schedule.yaml +0 -94
  485. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/module.toml +0 -11
  486. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/acoustic_video.RobotCapability.yaml +0 -72
  487. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/process_threesixty.DataPostProcessing.yaml +0 -23
  488. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/pt_ir_video.RobotCapability.yaml +0 -64
  489. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz.RobotCapability.yaml +0 -63
  490. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_ir.RobotCapability.yaml +0 -80
  491. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_video.RobotCapability.yaml +0 -68
  492. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_dial_gauge.DataPostProcessing.yaml +0 -31
  493. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_digital_gauge.DataPostProcessing.yaml +0 -35
  494. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_level_gauge.DataPostProcessing.yaml +0 -29
  495. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_valve.DataPostProcessing.yaml +0 -23
  496. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty.RobotCapability.yaml +0 -47
  497. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty_video.RobotCapability.yaml +0 -47
  498. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/README.md +0 -33
  499. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-admin.Group.yaml +0 -107
  500. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-users.Group.yaml +0 -94
  501. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/robot-1.Group.yaml +0 -77
  502. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationAppData.space.yaml +0 -3
  503. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationSourceData.space.yaml +0 -3
  504. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/default.config.yaml +0 -7
  505. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/module.toml +0 -8
  506. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Frame.yaml +0 -15
  507. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Location.yaml +0 -3
  508. cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Map.yaml +0 -10
  509. cognite_toolkit/_builtin_modules/inrobot/default.config.yaml +0 -3
  510. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Activity.Container.yaml +0 -13
  511. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Asset.Container.yaml +0 -13
  512. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Equipment.Container.yaml +0 -13
  513. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/File.Container.yaml +0 -13
  514. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
  515. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/enterprise.datamodel.yaml +0 -54
  516. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/schema.space.yaml +0 -1
  517. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Activity.view.yaml +0 -69
  518. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Asset.view.yaml +0 -186
  519. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Equipment.view.yaml +0 -100
  520. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/File.view.yaml +0 -72
  521. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/TimeSeries.view.yaml +0 -85
  522. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/default.config.yaml +0 -2
  523. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/module.toml +0 -7
  524. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360Image.Container.yaml +0 -13
  525. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -13
  526. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
  527. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
  528. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
  529. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
  530. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
  531. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
  532. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
  533. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Activity.Container.yaml +0 -13
  534. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
  535. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Asset.Container.yaml +0 -13
  536. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
  537. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
  538. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
  539. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
  540. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
  541. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
  542. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Describable.Container.yaml +0 -13
  543. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -13
  544. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
  545. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
  546. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/File.Container.yaml +0 -13
  547. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
  548. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
  549. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
  550. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
  551. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
  552. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
  553. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
  554. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
  555. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Unit.Container.yaml +0 -13
  556. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
  557. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/enterprise.datamodel.yaml +0 -138
  558. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/schema.space.yaml +0 -1
  559. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360Image.view.yaml +0 -119
  560. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
  561. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
  562. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
  563. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
  564. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DModel.view.yaml +0 -29
  565. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DObject.view.yaml +0 -81
  566. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DRevision.view.yaml +0 -30
  567. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
  568. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Activity.view.yaml +0 -69
  569. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Annotation.view.yaml +0 -28
  570. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Asset.view.yaml +0 -191
  571. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetClass.view.yaml +0 -17
  572. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetType.view.yaml +0 -31
  573. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADModel.view.yaml +0 -55
  574. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADNode.view.yaml +0 -53
  575. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADRevision.view.yaml +0 -39
  576. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CubeMap.view.yaml +0 -97
  577. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Describable.view.yaml +0 -19
  578. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
  579. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Equipment.view.yaml +0 -100
  580. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
  581. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/File.view.yaml +0 -72
  582. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/FileCategory.view.yaml +0 -18
  583. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
  584. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
  585. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
  586. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Schedulable.view.yaml +0 -17
  587. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
  588. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Sourceable.view.yaml +0 -27
  589. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
  590. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Unit.view.yaml +0 -16
  591. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Visualizable.view.yaml +0 -29
  592. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/default.config.yaml +0 -2
  593. cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/module.toml +0 -7
  594. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Activity.Container.yaml +0 -13
  595. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Asset.Container.yaml +0 -13
  596. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Equipment.Container.yaml +0 -13
  597. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/File.Container.yaml +0 -13
  598. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
  599. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Notification.Container.yaml +0 -13
  600. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Operation.Container.yaml +0 -13
  601. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
  602. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/enterprise.datamodel.yaml +0 -66
  603. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/schema.space.yaml +0 -1
  604. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Activity.view.yaml +0 -69
  605. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Asset.view.yaml +0 -186
  606. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Equipment.view.yaml +0 -100
  607. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/File.view.yaml +0 -72
  608. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/MaintenanceOrder.view.yaml +0 -100
  609. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Notification.view.yaml +0 -56
  610. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Operation.view.yaml +0 -96
  611. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/TimeSeries.view.yaml +0 -85
  612. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/default.config.yaml +0 -3
  613. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/module.toml +0 -8
  614. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360Image.Container.yaml +0 -13
  615. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -14
  616. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
  617. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
  618. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
  619. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
  620. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
  621. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
  622. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
  623. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Activity.Container.yaml +0 -13
  624. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
  625. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Asset.Container.yaml +0 -13
  626. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
  627. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
  628. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
  629. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
  630. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
  631. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
  632. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Describable.Container.yaml +0 -13
  633. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -14
  634. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
  635. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
  636. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/File.Container.yaml +0 -13
  637. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
  638. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
  639. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Notification.Container.yaml +0 -13
  640. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Operation.Container.yaml +0 -13
  641. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
  642. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
  643. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
  644. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
  645. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
  646. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
  647. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
  648. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Unit.Container.yaml +0 -13
  649. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
  650. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/enterprise.datamodel.yaml +0 -150
  651. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/schema.space.yaml +0 -1
  652. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360Image.view.yaml +0 -119
  653. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
  654. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
  655. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
  656. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
  657. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DModel.view.yaml +0 -29
  658. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DObject.view.yaml +0 -81
  659. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DRevision.view.yaml +0 -30
  660. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
  661. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Activity.view.yaml +0 -69
  662. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Annotation.view.yaml +0 -28
  663. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Asset.view.yaml +0 -191
  664. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetClass.view.yaml +0 -17
  665. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetType.view.yaml +0 -31
  666. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADModel.view.yaml +0 -55
  667. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADNode.view.yaml +0 -53
  668. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADRevision.view.yaml +0 -39
  669. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CubeMap.view.yaml +0 -97
  670. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Describable.view.yaml +0 -19
  671. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
  672. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Equipment.view.yaml +0 -100
  673. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
  674. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/File.view.yaml +0 -72
  675. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/FileCategory.view.yaml +0 -18
  676. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/MaintenanceOrder.view.yaml +0 -100
  677. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Notification.view.yaml +0 -56
  678. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Operation.view.yaml +0 -96
  679. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
  680. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
  681. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
  682. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Schedulable.view.yaml +0 -17
  683. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
  684. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Sourceable.view.yaml +0 -27
  685. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
  686. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Unit.view.yaml +0 -16
  687. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Visualizable.view.yaml +0 -29
  688. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/default.config.yaml +0 -2
  689. cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/module.toml +0 -7
  690. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Cdf3dRevisionProperties.Container.yaml +0 -13
  691. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_EnvironmentMap.Container.yaml +0 -12
  692. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionProperties.Container.yaml +0 -23
  693. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionScene.Container.yaml +0 -12
  694. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_SceneConfiguration.Container.yaml +0 -152
  695. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedMap.Container.yaml +0 -21
  696. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedPlane.Container.yaml +0 -29
  697. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene.Space.yaml +0 -3
  698. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene_data_model.DataModel.yaml +0 -66
  699. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/EnvironmentMap.View.yaml +0 -28
  700. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionProperties.View.yaml +0 -22
  701. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionScene.View.yaml +0 -20
  702. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/RevisionProperties.View.yaml +0 -16
  703. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/SceneConfiguration.View.yaml +0 -166
  704. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedMap.View.yaml +0 -17
  705. cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedPlane.View.yaml +0 -40
  706. cognite_toolkit/_builtin_modules/models/cdf_scene/default.config.yaml +0 -1
  707. cognite_toolkit/_builtin_modules/models/cdf_scene/module.toml +0 -5
  708. cognite_toolkit/_builtin_modules/package.toml +0 -41
  709. cognite_toolkit/_builtin_modules/sourcesystem/README.md +0 -4
  710. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/auth/workflow.Group.yaml +0 -53
  711. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/default.config.yaml +0 -13
  712. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.Config.yaml +0 -5
  713. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.ExtractionPipeline.yaml +0 -12
  714. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/module.toml +0 -30
  715. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/raw/timeseries.Table.yaml +0 -2
  716. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.sql +0 -9
  717. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.yaml +0 -14
  718. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/population.Workflow.yaml +0 -3
  719. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/trigger.WorkflowTrigger.yaml +0 -9
  720. cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/v1.WorkflowVersion.yaml +0 -12
  721. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/auth/workflow.Group.yaml +0 -54
  722. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/default.config.yaml +0 -16
  723. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/module.toml +0 -30
  724. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/raw/dump.Table.yaml +0 -2
  725. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.sql +0 -14
  726. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.yaml +0 -14
  727. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.sql +0 -35
  728. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.yaml +0 -14
  729. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.sql +0 -17
  730. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.yaml +0 -13
  731. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/population.Workflow.yaml +0 -3
  732. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/trigger.WorkflowTrigger.yaml +0 -9
  733. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/v1.WorkflowVersion.yaml +0 -28
  734. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/auth/workflow.Group.yaml +0 -46
  735. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/default.config.yaml +0 -15
  736. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/module.toml +0 -26
  737. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workitem.Table.yaml +0 -2
  738. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workorder.Table.yaml +0 -2
  739. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workpackage.Table.yaml +0 -2
  740. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/worktask.Table.yaml +0 -3
  741. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.sql +0 -32
  742. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.yaml +0 -13
  743. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.sql +0 -18
  744. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.yaml +0 -14
  745. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.sql +0 -18
  746. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.yaml +0 -14
  747. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/population.Workflow.yaml +0 -3
  748. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/trigger.WorkflowTrigger.yaml +0 -9
  749. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/v1.WorkflowVersion.yaml +0 -28
  750. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/auth/workflow.Group.yaml +0 -47
  751. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/default.config.yaml +0 -13
  752. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/files/upload.CogniteFile.yaml +0 -4
  753. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/module.toml +0 -32
  754. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/raw/files.Table.yaml +0 -2
  755. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.sql +0 -9
  756. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.yaml +0 -13
  757. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/population.Workflow.yaml +0 -3
  758. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/trigger.WorkflowTrigger.yaml +0 -9
  759. cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/v1.WorkflowVersion.yaml +0 -11
  760. cognite_toolkit/_cdf_tk/_parameters/__init__.py +0 -18
  761. cognite_toolkit/_cdf_tk/_parameters/constants.py +0 -82
  762. cognite_toolkit/_cdf_tk/_parameters/data_classes.py +0 -197
  763. cognite_toolkit/_cdf_tk/_parameters/functions.py +0 -192
  764. cognite_toolkit/_cdf_tk/_parameters/get_type_hints.py +0 -125
  765. cognite_toolkit/_cdf_tk/_parameters/type_hint.py +0 -118
  766. cognite_toolkit/_cdf_tk/apps/_populate_app.py +0 -80
  767. cognite_toolkit/_cdf_tk/client/api/agents/agents.py +0 -107
  768. cognite_toolkit/_cdf_tk/client/api/agents/api.py +0 -12
  769. cognite_toolkit/_cdf_tk/client/api/statistics.py +0 -72
  770. cognite_toolkit/_cdf_tk/client/data_classes/agent_tools.py +0 -92
  771. cognite_toolkit/_cdf_tk/client/data_classes/agents.py +0 -135
  772. cognite_toolkit/_cdf_tk/client/data_classes/statistics.py +0 -130
  773. cognite_toolkit/_cdf_tk/commands/_populate.py +0 -306
  774. cognite_toolkit/_cdf_tk/commands/dump_data.py +0 -487
  775. cognite_toolkit/_cdf_tk/commands/featureflag.py +0 -29
  776. cognite_toolkit/_cdf_tk/loaders/__init__.py +0 -204
  777. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/__init__.py +0 -90
  778. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/agent_loaders.py +0 -89
  779. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/fieldops_loaders.py +0 -260
  780. cognite_toolkit/_cdf_tk/loaders/_resource_loaders/timeseries_loaders.py +0 -356
  781. cognite_toolkit/_cdf_tk/prototypes/_packages/__init__.py +0 -1
  782. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/manifest.yaml +0 -4
  783. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.Group.yaml +0 -375
  784. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.SecurityCategory.yaml +0 -1
  785. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.DataModel.yaml +0 -19
  786. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.View.yaml +0 -8
  787. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_sets/reference.DataSet.yaml +0 -8
  788. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipeline.yaml +0 -27
  789. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipelineConfig.yaml +0 -3
  790. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.Function.yaml +0 -22
  791. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.FunctionSchedule.yaml +0 -6
  792. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/labels/reference.LabelDefinition.yaml +0 -4
  793. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/timeseries/reference.DataPointSubscription.yaml +0 -7
  794. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.Transformation.yaml +0 -51
  795. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationNotification.yaml +0 -3
  796. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationSchedule.yaml +0 -4
  797. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowUpsert.yaml +0 -2
  798. cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowVersionUpsert.yaml +0 -10
  799. cognite_toolkit/_cdf_tk/prototypes/_packages/update_references.py +0 -339
  800. cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
  801. cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
  802. cognite_toolkit/_cdf_tk/utils/table_writers.py +0 -433
  803. cognite_toolkit/_cdf_tk/utils/tarjan.py +0 -46
  804. cognite_toolkit-0.5.44.dist-info/RECORD +0 -695
  805. cognite_toolkit-0.5.44.dist-info/WHEEL +0 -4
  806. cognite_toolkit-0.5.44.dist-info/licenses/LICENSE +0 -18
  807. /cognite_toolkit/{_builtin_modules → _cdf_tk/commands/build_v2}/__init__.py +0 -0
@@ -1,185 +1,957 @@
1
+ import importlib.util
2
+ import itertools
1
3
  from abc import ABC, abstractmethod
2
- from concurrent.futures import ThreadPoolExecutor
3
- from typing import Literal
4
-
4
+ from collections import defaultdict
5
+ from collections.abc import Callable, Hashable, Iterable, Mapping
6
+ from concurrent.futures import ThreadPoolExecutor, as_completed
7
+ from dataclasses import dataclass
8
+ from functools import cached_property, partial
9
+ from itertools import zip_longest
10
+ from pathlib import Path
11
+ from typing import TYPE_CHECKING, ClassVar, Generic, Literal, TypeAlias, TypeVar, overload
12
+ from zipfile import BadZipFile
13
+
14
+ import questionary
15
+ from cognite.client.data_classes import Transformation
16
+ from cognite.client.exceptions import CogniteException
17
+ from rich import box
5
18
  from rich.console import Console
19
+ from rich.live import Live
20
+ from rich.spinner import Spinner
6
21
  from rich.table import Table
7
22
 
8
23
  from cognite_toolkit._cdf_tk.client import ToolkitClient
9
- from cognite_toolkit._cdf_tk.utils.cdf import (
10
- label_aggregate_count,
11
- label_count,
12
- metadata_key_counts,
13
- relationship_aggregate_count,
24
+ from cognite_toolkit._cdf_tk.client.data_classes.raw import RawProfileResults, RawTable
25
+ from cognite_toolkit._cdf_tk.constants import MAX_ROW_ITERATION_RUN_QUERY
26
+ from cognite_toolkit._cdf_tk.exceptions import ToolkitMissingDependencyError, ToolkitThrottledError, ToolkitValueError
27
+ from cognite_toolkit._cdf_tk.utils.aggregators import (
28
+ AssetAggregator,
29
+ AssetCentricAggregator,
30
+ EventAggregator,
31
+ FileAggregator,
32
+ LabelAggregator,
33
+ LabelCountAggregator,
34
+ MetadataAggregator,
35
+ RelationshipAggregator,
36
+ SequenceAggregator,
37
+ TimeSeriesAggregator,
14
38
  )
39
+ from cognite_toolkit._cdf_tk.utils.cdf import get_transformation_sources, raw_row_count
40
+ from cognite_toolkit._cdf_tk.utils.interactive_select import AssetCentricDestinationSelect, AssetInteractiveSelect
41
+ from cognite_toolkit._cdf_tk.utils.sql_parser import SQLParser, SQLTable
42
+ from cognite_toolkit._cdf_tk.utils.text import sanitize_spreadsheet_title
43
+ from cognite_toolkit._cdf_tk.utils.useful_types import AssetCentricDestinationType
15
44
 
16
45
  from ._base import ToolkitCommand
17
46
 
47
+ if TYPE_CHECKING:
48
+ from openpyxl.worksheet.worksheet import Worksheet
18
49
 
19
- class AssetCentricAggregator(ABC):
20
- def __init__(self, client: ToolkitClient) -> None:
21
- self.client = client
22
-
23
- @property
24
- @abstractmethod
25
- def display_name(self) -> str:
26
- raise NotImplementedError()
27
-
28
- @abstractmethod
29
- def count(self) -> int:
30
- raise NotImplementedError
31
-
32
-
33
- class MetadataAggregator(AssetCentricAggregator, ABC):
34
- def __init__(
35
- self, client: ToolkitClient, resource_name: Literal["assets", "events", "files", "timeseries", "sequences"]
36
- ) -> None:
37
- super().__init__(client)
38
- self.resource_name = resource_name
39
-
40
- def metadata_key_count(self) -> int:
41
- return len(metadata_key_counts(self.client, self.resource_name))
42
50
 
51
+ class WaitingAPICallClass:
52
+ def __bool__(self) -> bool:
53
+ return False
43
54
 
44
- class LabelAggregator(MetadataAggregator, ABC):
45
- def label_count(self) -> int:
46
- return len(label_count(self.client, self.resource_name))
47
55
 
56
+ WaitingAPICall = WaitingAPICallClass()
48
57
 
49
- class AssetAggregator(LabelAggregator):
50
- def __init__(self, client: ToolkitClient) -> None:
51
- super().__init__(client, "assets")
52
58
 
53
- @property
54
- def display_name(self) -> str:
55
- return "Assets"
59
+ PendingCellValue: TypeAlias = int | float | str | bool | None | WaitingAPICallClass
60
+ CellValue: TypeAlias = int | float | str | bool | None
56
61
 
57
- def count(self) -> int:
58
- return self.client.assets.aggregate_count()
62
+ T_Index = TypeVar("T_Index", bound=Hashable)
59
63
 
60
64
 
61
- class EventAggregator(MetadataAggregator):
62
- def __init__(self, client: ToolkitClient) -> None:
63
- super().__init__(client, "events")
65
+ class ProfileCommand(ToolkitCommand, ABC, Generic[T_Index]):
66
+ spreadsheet_max_column_width = 70.0
64
67
 
65
- @property
66
- def display_name(self) -> str:
67
- return "Events"
68
-
69
- def count(self) -> int:
70
- return self.client.events.aggregate_count()
71
-
72
-
73
- class FileAggregator(LabelAggregator):
74
- def __init__(self, client: ToolkitClient) -> None:
75
- super().__init__(client, "files")
76
-
77
- @property
78
- def display_name(self) -> str:
79
- return "Files"
80
-
81
- def count(self) -> int:
82
- response = self.client.files.aggregate()
83
- if response:
84
- return response[0].count
85
- else:
86
- return 0
87
-
88
-
89
- class TimeSeriesAggregator(MetadataAggregator):
90
- def __init__(self, client: ToolkitClient) -> None:
91
- super().__init__(client, "timeseries")
68
+ def __init__(
69
+ self,
70
+ output_spreadsheet: Path | None = None,
71
+ print_warning: bool = True,
72
+ skip_tracking: bool = False,
73
+ silent: bool = False,
74
+ ) -> None:
75
+ super().__init__(print_warning, skip_tracking, silent)
76
+ self.table_title = self.__class__.__name__.removesuffix("Command")
77
+ self.output_spreadsheet: Path | None = output_spreadsheet
78
+ if output_spreadsheet is not None:
79
+ self._validate_openpyxl_installed()
80
+
81
+ class Columns: # Placeholder for columns, subclasses should define their own Columns class
82
+ ...
83
+
84
+ spinner_args: ClassVar[Mapping] = dict(name="arc", text="loading...", style="bold green", speed=1.0)
85
+
86
+ max_workers = 8
87
+ is_dynamic_table = False
88
+
89
+ @cached_property
90
+ def columns(self) -> tuple[str, ...]:
91
+ return (
92
+ tuple([value for attr, value in self.Columns.__dict__.items() if not attr.startswith("_")])
93
+ if hasattr(self, "Columns")
94
+ else tuple()
95
+ )
92
96
 
93
- @property
94
- def display_name(self) -> str:
95
- return "TimeSeries"
97
+ @staticmethod
98
+ def _validate_openpyxl_installed() -> None:
99
+ """Ensure that openpyxl is installed if output_spreadsheet is set."""
100
+ if importlib.util.find_spec("openpyxl") is None:
101
+ raise ToolkitMissingDependencyError(
102
+ "Writing to a spreadsheet requires 'openpyxl'. Install with 'pip install \"cognite-toolkit[table]\"'"
103
+ )
104
+
105
+ def create_profile_table(self, client: ToolkitClient, sheet: str | None = None) -> list[dict[str, CellValue]]:
106
+ console = Console()
107
+ with console.status("Setting up", spinner="aesthetic", speed=0.4) as _:
108
+ table = self.create_initial_table(client)
109
+ with (
110
+ Live(self.draw_table(table), refresh_per_second=4, console=console) as live,
111
+ ThreadPoolExecutor(max_workers=self.max_workers) as executor,
112
+ ):
113
+ while True:
114
+ current_calls = {
115
+ #
116
+ executor.submit(self.create_api_callable(row, col, client)): (row, col)
117
+ for (row, col), cell in table.items()
118
+ if cell is WaitingAPICall
119
+ }
120
+ if not current_calls:
121
+ break
122
+ for future in as_completed(current_calls):
123
+ row, col = current_calls[future]
124
+ try:
125
+ result = future.result()
126
+ except CogniteException as e:
127
+ result = type(e).__name__
128
+ except ToolkitThrottledError as e:
129
+ result = f"Throttled: Wait {e.wait_time_seconds:.0f} seconds"
130
+ table[(row, col)] = self.format_result(result, row, col)
131
+ if self.is_dynamic_table:
132
+ table = self.update_table(table, result, row, col)
133
+ live.update(self.draw_table(table))
134
+ result = self.as_record_format(table, allow_waiting_api_call=False)
135
+ if self.output_spreadsheet is not None:
136
+ self._write_to_spreadsheet(result, list(self.columns), self.output_spreadsheet, sheet=sheet)
137
+ return result
96
138
 
97
- def count(self) -> int:
98
- return self.client.time_series.aggregate_count()
139
+ @abstractmethod
140
+ def create_initial_table(self, client: ToolkitClient) -> dict[tuple[T_Index, str], PendingCellValue]:
141
+ """
142
+ Create the initial table with placeholders for API calls.
143
+ Each cell that requires an API call should be initialized with WaitingAPICall.
144
+ """
145
+ raise NotImplementedError("Subclasses must implement create_initial_table.")
99
146
 
147
+ @abstractmethod
148
+ def create_api_callable(self, row: T_Index, col: str, client: ToolkitClient) -> Callable:
149
+ raise NotImplementedError("Subclasses must implement call_api.")
150
+
151
+ def format_result(self, result: object, row: T_Index, col: str) -> CellValue:
152
+ """
153
+ Format the result of an API call for display in the table.
154
+ This can be overridden by subclasses to customize formatting.
155
+ """
156
+ if isinstance(result, int | float | bool | str):
157
+ return result
158
+ raise NotImplementedError("Subclasses must implement format_result.")
159
+
160
+ def update_table(
161
+ self,
162
+ current_table: dict[tuple[T_Index, str], PendingCellValue],
163
+ result: object,
164
+ row: T_Index,
165
+ col: str,
166
+ ) -> dict[tuple[T_Index, str], PendingCellValue]:
167
+ raise NotImplementedError("Subclasses must implement update_table.")
168
+
169
+ def draw_table(self, table: dict[tuple[T_Index, str], PendingCellValue]) -> Table:
170
+ rich_table = Table(
171
+ title=self.table_title,
172
+ title_justify="left",
173
+ show_header=True,
174
+ header_style="bold magenta",
175
+ box=box.MINIMAL,
176
+ )
177
+ for col in self.columns:
178
+ rich_table.add_column(col)
100
179
 
101
- class SequenceAggregator(MetadataAggregator):
102
- def __init__(self, client: ToolkitClient) -> None:
103
- super().__init__(client, "sequences")
180
+ rows = self.as_record_format(table)
104
181
 
105
- @property
106
- def display_name(self) -> str:
107
- return "Sequences"
182
+ last_row: list[str | Spinner] = []
183
+ for row in rows:
184
+ this_row = [self._as_cell(value) for value in row.values()]
185
+ draw_row = self._create_draw_row(this_row, last_row)
186
+ rich_table.add_row(*draw_row)
187
+ last_row = this_row
188
+ return rich_table
108
189
 
109
- def count(self) -> int:
110
- return self.client.sequences.aggregate_count()
190
+ @classmethod
191
+ def _create_draw_row(cls, this_row: list[str | Spinner], last_row: list[str | Spinner]) -> list[str | Spinner]:
192
+ """Creates the row to be drawn. This skips sequential cells that have not changed
193
+ such that the table does not have too many repeated values and thus becomes easier to read.
194
+ """
195
+ draw_row: list[str | Spinner] = []
196
+ row_has_changed = False
197
+ for cell, last_cell in zip_longest(this_row, last_row, fillvalue=""):
198
+ if not row_has_changed and cls._should_skip_drawing(cell, last_cell):
199
+ cell = ""
200
+ else:
201
+ # If the first cell in the row has changed, all remaining cells in the row should be drawn.
202
+ row_has_changed = True
203
+ draw_row.append(cell)
204
+ return draw_row
111
205
 
206
+ @classmethod
207
+ def _should_skip_drawing(cls, cell: str | Spinner, last_cell: str | Spinner) -> bool:
208
+ return cell == last_cell or (isinstance(cell, Spinner) and isinstance(last_cell, Spinner))
112
209
 
113
- class RelationshipAggregator(AssetCentricAggregator):
114
- @property
115
- def display_name(self) -> str:
116
- return "Relationships"
210
+ @classmethod
211
+ @overload
212
+ def as_record_format(
213
+ cls, table: dict[tuple[T_Index, str], PendingCellValue], allow_waiting_api_call: Literal[True] = True
214
+ ) -> list[dict[str, PendingCellValue]]: ...
117
215
 
118
- def count(self) -> int:
119
- results = relationship_aggregate_count(self.client)
120
- return sum(result.count for result in results)
216
+ @classmethod
217
+ @overload
218
+ def as_record_format(
219
+ cls,
220
+ table: dict[tuple[T_Index, str], PendingCellValue],
221
+ allow_waiting_api_call: Literal[False],
222
+ ) -> list[dict[str, CellValue]]: ...
121
223
 
224
+ @classmethod
225
+ def as_record_format(
226
+ cls,
227
+ table: dict[tuple[T_Index, str], PendingCellValue],
228
+ allow_waiting_api_call: bool = True,
229
+ ) -> list[dict[str, PendingCellValue]] | list[dict[str, CellValue]]:
230
+ rows: list[dict[str, PendingCellValue]] = []
231
+ row_indices: dict[T_Index, int] = {}
232
+ for (row, col), value in table.items():
233
+ if value is WaitingAPICall and not allow_waiting_api_call:
234
+ value = None
235
+ if row not in row_indices:
236
+ row_indices[row] = len(rows)
237
+ rows.append({col: value})
238
+ else:
239
+ rows[row_indices[row]][col] = value
240
+ return rows
122
241
 
123
- class LabelCountAggregator(AssetCentricAggregator):
124
- @property
125
- def display_name(self) -> str:
126
- return "Labels"
242
+ def _as_cell(self, value: PendingCellValue) -> str | Spinner:
243
+ if isinstance(value, WaitingAPICallClass):
244
+ return Spinner(**self.spinner_args)
245
+ elif isinstance(value, int):
246
+ return f"{value:,}"
247
+ elif isinstance(value, float):
248
+ return f"{value:.2f}"
249
+ elif value is None:
250
+ return "-"
251
+ return str(value)
252
+
253
+ def _write_to_spreadsheet(
254
+ self, data: list[dict[str, CellValue]], columns: list[str], output_spreadsheet: Path, sheet: str | None = None
255
+ ) -> None:
256
+ """Write the profile data to a spreadsheet."""
257
+ # Local import as this is an optional dependency
258
+ from openpyxl import Workbook, load_workbook
259
+
260
+ sheet_name = sanitize_spreadsheet_title(sheet or self.table_title)[
261
+ :31
262
+ ] # Limit title to 31 characters for Excel compatibility
263
+ if output_spreadsheet.exists():
264
+ try:
265
+ workbook = load_workbook(output_spreadsheet)
266
+ except (OSError, BadZipFile) as e:
267
+ raise ToolkitValueError(
268
+ f"Failed to open {output_spreadsheet.as_posix()!r}. "
269
+ "Please ensure the file is not corrupted or open in another application."
270
+ ) from e
271
+ if sheet_name in workbook.sheetnames:
272
+ raise ToolkitValueError(f"Sheet '{sheet_name}' already exists in {output_spreadsheet.as_posix()}.")
273
+ worksheet = workbook.create_sheet(title=sheet_name)
274
+ else:
275
+ workbook = Workbook()
276
+ worksheet = workbook.active
277
+ worksheet.title = sheet_name
278
+
279
+ worksheet.append(columns)
280
+
281
+ for row in data:
282
+ worksheet.append(list(row.values()))
283
+
284
+ self._style_sheet(worksheet, columns)
285
+
286
+ try:
287
+ workbook.save(output_spreadsheet)
288
+ except OSError as e:
289
+ raise ToolkitValueError(
290
+ f"Failed to write to {output_spreadsheet.as_posix()!r}. "
291
+ "Please ensure the file is not open, and that you have sufficient permissions and disk space."
292
+ ) from e
293
+ self.console(f"Profile data written to sheet {sheet!r} in {output_spreadsheet.as_posix()!r}")
294
+
295
+ def _style_sheet(self, sheet: "Worksheet", columns: list[str]) -> None:
296
+ """Styles the sheet with the given headers.
297
+
298
+ Args:
299
+ sheet: The sheet to style.
300
+ headers: The headers to style.
301
+ """
302
+ # Local import as this is an optional dependency
303
+ from openpyxl.cell import MergedCell
304
+ from openpyxl.styles import Font, PatternFill
305
+
306
+ # This freezes all rows above the given row
307
+ sheet.freeze_panes = "A2"
308
+
309
+ # Make the header row bold, larger, and colored
310
+ for cell, *_ in sheet.iter_cols(min_row=1, max_row=1, min_col=1, max_col=len(columns)):
311
+ cell.font = Font(bold=True, size=15)
312
+ cell.fill = PatternFill(fgColor="A9DFBF", patternType="solid")
313
+ # Adjust columns width based on widest cell in each column
314
+ for column_cells in sheet.columns:
315
+ try:
316
+ max_length = max(len(str(cell.value)) for cell in column_cells if cell.value is not None)
317
+ except ValueError:
318
+ max_length = 0
319
+
320
+ # Find first non-merged cell to safely get column letter
321
+ safe_cell = next((c for c in column_cells if not isinstance(c, MergedCell)), None)
322
+ if safe_cell is None:
323
+ continue # Skip if no such cell is found
324
+
325
+ column_letter = safe_cell.column_letter
326
+ current = sheet.column_dimensions[column_letter].width or (max_length + 0.5)
327
+ sheet.column_dimensions[column_letter].width = min(
328
+ max(current, max_length + 0.5), self.spreadsheet_max_column_width
329
+ )
330
+
331
+ def _ask_store_file(self) -> None:
332
+ if file_path := questionary.path("Where do you want to save the profile?").ask():
333
+ self.output_spreadsheet = Path(file_path)
334
+
335
+
336
+ @dataclass(frozen=True)
337
+ class AssetIndex:
338
+ aggregator: str
339
+ data_set_external_id: str | None = None
340
+ source: RawTable | None = None
341
+
342
+
343
+ class ProfileAssetCommand(ProfileCommand[AssetIndex]):
344
+ def __init__(
345
+ self,
346
+ output_spreadsheet: Path | None = None,
347
+ print_warning: bool = True,
348
+ skip_tracking: bool = False,
349
+ silent: bool = False,
350
+ ) -> None:
351
+ super().__init__(output_spreadsheet, print_warning, skip_tracking, silent)
352
+ self.table_title = "Asset Profile for Hierarchy"
353
+ self.hierarchy: str | None = None
354
+ self.aggregators: dict[str, MetadataAggregator] = {}
355
+ self.profile_row_limit = self.max_profile_row_limit
356
+
357
+ class Columns:
358
+ Resource = "Resource"
359
+ Count = "Count"
360
+ DataSets = "DataSet"
361
+ DataSetCount = "DataSet Count"
362
+ Transformations = "Transformation"
363
+ RawTable = "Raw Table"
364
+ RowCount = "Rows"
365
+ ColumnCount = "Columns"
366
+
367
+ is_dynamic_table = True
368
+ max_profile_row_limit = 10_000 # The number of rows to profile to get the number of columns.
369
+ # The actual limit is 256 MB of data.
370
+ # Ref https://github.com/cognitedata/profiler-api/blob/main/src/main/scala/com/cognite/raw_profiler/Profile.scala#L37
371
+ profile_timeout_seconds = 60 * 4 # Timeout for the profiling operation in seconds,
372
+
373
+ def assets(
374
+ self,
375
+ client: ToolkitClient,
376
+ hierarchy: str | None = None,
377
+ profile_row_limit: int = max_profile_row_limit,
378
+ verbose: bool = False,
379
+ ) -> list[dict[str, CellValue]]:
380
+ """
381
+ Profile assets in the given hierarchy.
382
+ This method will create a table with the count of assets, events, files, timeseries, sequences,
383
+ relationships, and labels in the specified hierarchy.
384
+ """
385
+ if hierarchy is None:
386
+ self.hierarchy = AssetInteractiveSelect(client, "profile").select_hierarchy(allow_empty=False)
387
+ self._ask_store_file()
388
+ else:
389
+ self.hierarchy = hierarchy
390
+ if profile_row_limit <= 0 or profile_row_limit > self.max_profile_row_limit:
391
+ raise ToolkitValueError(
392
+ f"Profile row limit must be between 1 and {self.max_profile_row_limit}, got {profile_row_limit}."
393
+ )
394
+ self.table_title = f"Asset Profile for Hierarchy: {self.hierarchy}"
395
+ self.profile_row_limit = profile_row_limit
396
+ self.aggregators = {
397
+ agg.display_name: agg
398
+ for agg in [
399
+ AssetAggregator(client),
400
+ EventAggregator(client),
401
+ FileAggregator(client),
402
+ TimeSeriesAggregator(client),
403
+ SequenceAggregator(client),
404
+ ]
405
+ }
406
+ return self.create_profile_table(client, sheet=hierarchy)
407
+
408
+ def create_initial_table(self, client: ToolkitClient) -> dict[tuple[AssetIndex, str], PendingCellValue]:
409
+ table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
410
+ for index, aggregator in self.aggregators.items():
411
+ asset_index = AssetIndex(aggregator=index, data_set_external_id=None, source=None)
412
+ table[(asset_index, self.Columns.Resource)] = aggregator.display_name
413
+ table[(asset_index, self.Columns.Count)] = WaitingAPICall
414
+ table[(asset_index, self.Columns.DataSets)] = None
415
+ table[(asset_index, self.Columns.DataSetCount)] = None
416
+ table[(asset_index, self.Columns.Transformations)] = None
417
+ table[(asset_index, self.Columns.RawTable)] = None
418
+ table[(asset_index, self.Columns.RowCount)] = None
419
+ table[(asset_index, self.Columns.ColumnCount)] = None
420
+ return table
421
+
422
+ def create_api_callable(self, row: AssetIndex, col: str, client: ToolkitClient) -> Callable:
423
+ aggregator = self.aggregators[row.aggregator]
424
+ if col == self.Columns.Count:
425
+ return partial(aggregator.count, hierarchy=self.hierarchy)
426
+ elif col == self.Columns.DataSets:
427
+ return partial(aggregator.used_data_sets, hierarchy=self.hierarchy)
428
+ elif col == self.Columns.DataSetCount:
429
+ if row.data_set_external_id is None:
430
+ raise ValueError(f"DataSet external ID is required for {row!s} in column {col}.")
431
+ return partial(aggregator.count, data_set_external_id=row.data_set_external_id, hierarchy=self.hierarchy)
432
+ elif col == self.Columns.Transformations:
433
+ if row.data_set_external_id is None:
434
+ raise ValueError(f"DataSet external ID is required for {row!s} in column {col}.")
435
+ return partial(aggregator.used_transformations, data_set_external_ids=[row.data_set_external_id])
436
+ elif col == self.Columns.ColumnCount:
437
+ if row.source is None:
438
+ raise ValueError(f"Database and table name are required for {row!s} in column {col}.")
439
+ source = row.source
440
+ return partial(
441
+ client.raw.profile,
442
+ database=source.db_name,
443
+ table=source.table_name,
444
+ limit=self.profile_row_limit,
445
+ timeout_seconds=self.profile_timeout_seconds,
446
+ )
447
+ elif col == self.Columns.RowCount:
448
+ if row.source is None:
449
+ raise ValueError(f"Database and table name are required for {row!s} in column {col}.")
450
+ source = row.source
451
+ return partial(
452
+ raw_row_count,
453
+ client=client,
454
+ raw_table_id=source,
455
+ )
456
+ raise ValueError(f"Unexpected API Call for row {row} and column {col}.")
457
+
458
+ def format_result(self, result: object, row: AssetIndex, col: str) -> CellValue:
459
+ if col == self.Columns.RowCount:
460
+ if isinstance(result, int):
461
+ if result == MAX_ROW_ITERATION_RUN_QUERY:
462
+ return f"≥{result:,}"
463
+ else:
464
+ return result
465
+ elif isinstance(result, str):
466
+ return result
467
+ return None
468
+ elif isinstance(result, int | float | bool | str):
469
+ return result
470
+ elif col == self.Columns.DataSets:
471
+ return result[0] if isinstance(result, list) and result and isinstance(result[0], str) else None
472
+ elif col == self.Columns.Transformations:
473
+ if isinstance(result, list) and len(result) > 0 and isinstance(result[0], Transformation):
474
+ return f"{result[0].name} ({result[0].external_id})"
475
+ return None
476
+ elif col == self.Columns.ColumnCount:
477
+ if isinstance(result, RawProfileResults):
478
+ return result.column_count
479
+ return None
480
+ raise ValueError(f"unexpected result type {type(result)} for row {row!s} and column {col}.")
481
+
482
+ def update_table(
483
+ self,
484
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
485
+ result: object,
486
+ selected_row: AssetIndex,
487
+ selected_col: str,
488
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
489
+ handlers: Mapping[
490
+ str,
491
+ Callable[
492
+ [dict[tuple[AssetIndex, str], PendingCellValue], object, AssetIndex],
493
+ dict[tuple[AssetIndex, str], PendingCellValue],
494
+ ],
495
+ ] = {
496
+ self.Columns.Count: self._update_count,
497
+ self.Columns.DataSets: self._update_datasets,
498
+ self.Columns.DataSetCount: self._update_dataset_count,
499
+ self.Columns.Transformations: self._update_transformations,
500
+ self.Columns.ColumnCount: self._update_column_count,
501
+ }
502
+ handler = handlers.get(selected_col)
503
+ if handler:
504
+ return handler(current_table, result, selected_row)
505
+ return current_table
506
+
507
+ def _update_count(
508
+ self,
509
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
510
+ result: object,
511
+ selected_row: AssetIndex,
512
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
513
+ new_table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
514
+ for (row, col), value in current_table.items():
515
+ if row == selected_row and col == self.Columns.DataSets:
516
+ new_table[(row, col)] = WaitingAPICall
517
+ else:
518
+ new_table[(row, col)] = value
519
+ return new_table
520
+
521
+ def _update_datasets(
522
+ self,
523
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
524
+ result: object,
525
+ selected_row: AssetIndex,
526
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
527
+ if not (isinstance(result, list) and len(result) > 0 and all(isinstance(item, str) for item in result)):
528
+ return current_table
529
+ new_table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
530
+ for (row, col), value in current_table.items():
531
+ if row != selected_row:
532
+ new_table[(row, col)] = value
533
+ continue
534
+ for data_set in result:
535
+ new_index = AssetIndex(
536
+ aggregator=selected_row.aggregator, source=selected_row.source, data_set_external_id=data_set
537
+ )
538
+ if col == self.Columns.DataSetCount:
539
+ new_table[(new_index, col)] = WaitingAPICall
540
+ elif col == self.Columns.DataSets:
541
+ new_table[(new_index, col)] = data_set
542
+ else:
543
+ new_table[(new_index, col)] = value
544
+ return new_table
545
+
546
+ def _update_dataset_count(
547
+ self,
548
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
549
+ result: object,
550
+ selected_row: AssetIndex,
551
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
552
+ if not isinstance(result, int):
553
+ return current_table
554
+ new_table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
555
+ for (row, col), value in current_table.items():
556
+ if row != selected_row:
557
+ new_table[(row, col)] = value
558
+ continue
559
+ if col == self.Columns.Transformations:
560
+ new_table[(row, col)] = WaitingAPICall
561
+ else:
562
+ new_table[(row, col)] = value
563
+ return new_table
564
+
565
+ def _update_transformations(
566
+ self,
567
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
568
+ result: object,
569
+ selected_row: AssetIndex,
570
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
571
+ if not (
572
+ isinstance(result, list) and len(result) > 0 and all(isinstance(item, Transformation) for item in result)
573
+ ):
574
+ return current_table
575
+ sources_by_transformation_id = {
576
+ transformation.id: [
577
+ s for s in get_transformation_sources(transformation.query or "") if isinstance(s, RawTable)
578
+ ]
579
+ for transformation in result
580
+ }
581
+ new_table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
582
+ for (row, col), value in current_table.items():
583
+ if row != selected_row:
584
+ new_table[(row, col)] = value
585
+ continue
586
+ for transformation in result:
587
+ sources = sources_by_transformation_id[transformation.id]
588
+ if not sources:
589
+ new_table[(row, col)] = value
590
+ continue
591
+ for source in sources:
592
+ new_index = AssetIndex(
593
+ aggregator=selected_row.aggregator,
594
+ data_set_external_id=selected_row.data_set_external_id,
595
+ source=source,
596
+ )
597
+ if col == self.Columns.RawTable:
598
+ new_table[(new_index, col)] = str(source)
599
+ elif col == self.Columns.RowCount:
600
+ # This will be updated by the ColumnCount API call which equals the /profiler/raw endpoint.
601
+ # If the profiles is not complete, we set it to WaitingAPICall to get the
602
+ # row count from the transformation preview.
603
+ new_table[(new_index, col)] = None
604
+ elif col == self.Columns.ColumnCount:
605
+ new_table[(new_index, col)] = WaitingAPICall
606
+ elif col == self.Columns.Transformations:
607
+ new_table[(new_index, col)] = f"{transformation.name} ({transformation.external_id})"
608
+ else:
609
+ new_table[(new_index, col)] = value
610
+ return new_table
611
+
612
+ def _update_column_count(
613
+ self,
614
+ current_table: dict[tuple[AssetIndex, str], PendingCellValue],
615
+ result: object,
616
+ selected_row: AssetIndex,
617
+ ) -> dict[tuple[AssetIndex, str], PendingCellValue]:
618
+ if not isinstance(result, RawProfileResults):
619
+ return current_table
620
+ new_table: dict[tuple[AssetIndex, str], PendingCellValue] = {}
621
+ for (row, col), value in current_table.items():
622
+ if row != selected_row:
623
+ new_table[(row, col)] = value
624
+ continue
625
+ is_complete = result.is_complete and result.row_count < self.profile_row_limit
626
+ if col == self.Columns.RowCount:
627
+ # If the profile is complete, we can use the row count directly.
628
+ # If not we set it to WaitingAPICall to get the row count from the transformation preview.
629
+ new_table[(row, col)] = result.row_count if is_complete else WaitingAPICall
630
+ elif col == self.Columns.ColumnCount:
631
+ new_table[(row, col)] = result.column_count if is_complete else f"≥{result.column_count:,}"
632
+ else:
633
+ new_table[(row, col)] = value
634
+ return new_table
635
+
636
+
637
+ class ProfileAssetCentricCommand(ProfileCommand[str]):
638
+ def __init__(
639
+ self,
640
+ output_spreadsheet: Path | None = None,
641
+ print_warning: bool = True,
642
+ skip_tracking: bool = False,
643
+ silent: bool = False,
644
+ ) -> None:
645
+ super().__init__(output_spreadsheet, print_warning, skip_tracking, silent)
646
+ self.hierarchy: str | None = None
647
+ self.table_title = "Asset Centric Profile"
648
+ self.aggregators: dict[str, AssetCentricAggregator] = {}
649
+
650
+ class Columns:
651
+ Resource = "Resource"
652
+ Count = "Count"
653
+ MetadataKeyCount = "Metadata Key Count"
654
+ LabelCount = "Label Count"
655
+ Transformation = "Transformations"
127
656
 
128
- def count(self) -> int:
129
- return label_aggregate_count(self.client)
657
+ def asset_centric(
658
+ self, client: ToolkitClient, hierarchy: str | None = None, select_all: bool = False, verbose: bool = False
659
+ ) -> list[dict[str, CellValue]]:
660
+ if hierarchy is None and not select_all:
661
+ self.hierarchy = AssetInteractiveSelect(client, "profile").select_hierarchy(allow_empty=True)
662
+ self._ask_store_file()
663
+ else:
664
+ self.hierarchy = hierarchy
665
+ if self.hierarchy is not None:
666
+ self.table_title = f"Asset Centric Profile: {self.hierarchy}"
667
+ self.aggregators.update(
668
+ {
669
+ agg.display_name: agg
670
+ for agg in [
671
+ AssetAggregator(client),
672
+ EventAggregator(client),
673
+ FileAggregator(client),
674
+ TimeSeriesAggregator(client),
675
+ SequenceAggregator(client),
676
+ ]
677
+ }
678
+ )
679
+ if self.hierarchy is None:
680
+ # Relationship and Labels does not belong to a specific hierarchy
681
+ self.aggregators.update(
682
+ {
683
+ agg.display_name: agg
684
+ for agg in [
685
+ RelationshipAggregator(client),
686
+ LabelCountAggregator(client),
687
+ ]
688
+ }
689
+ )
690
+ result = self.create_profile_table(client, sheet=self.table_title)
691
+ if self.output_spreadsheet:
692
+ for aggregator in self.aggregators.values():
693
+ if isinstance(aggregator, AssetAggregator):
694
+ used_metadata_keys = aggregator.used_metadata_keys(hierarchy=self.hierarchy)
695
+ self._write_to_spreadsheet(
696
+ [{"Metadata Key": key, "Count": count} for key, count in used_metadata_keys],
697
+ ["Metadata Key", "Count"],
698
+ self.output_spreadsheet,
699
+ sheet=aggregator.display_name,
700
+ )
701
+ return result
702
+
703
+ def create_initial_table(self, client: ToolkitClient) -> dict[tuple[str, str], PendingCellValue]:
704
+ table: dict[tuple[str, str], str | int | float | bool | None | WaitingAPICallClass] = {}
705
+ for index, aggregator in self.aggregators.items():
706
+ table[(index, self.Columns.Resource)] = aggregator.display_name
707
+ table[(index, self.Columns.Count)] = WaitingAPICall
708
+ # Metadata Key count is only valid if we aggregate for all resources or assets.
709
+ # Events/Files/TimeSeries/Sequences do not have a rootId to filter on.
710
+ if isinstance(aggregator, MetadataAggregator) and (
711
+ isinstance(aggregator, AssetAggregator) or self.hierarchy is None
712
+ ):
713
+ table[(index, self.Columns.MetadataKeyCount)] = WaitingAPICall
714
+ else:
715
+ table[(index, self.Columns.MetadataKeyCount)] = None
716
+ if isinstance(aggregator, LabelAggregator) and (
717
+ isinstance(aggregator, AssetAggregator) or self.hierarchy is None
718
+ ):
719
+ table[(index, self.Columns.LabelCount)] = WaitingAPICall
720
+ else:
721
+ table[(index, self.Columns.LabelCount)] = None
722
+ table[(index, self.Columns.Transformation)] = WaitingAPICall if self.hierarchy is None else None
723
+ return table
724
+
725
+ def create_api_callable(self, row: str, col: str, client: ToolkitClient) -> Callable:
726
+ aggregator = self.aggregators[row]
727
+ if col == self.Columns.Count:
728
+ return partial(aggregator.count, hierarchy=self.hierarchy)
729
+ elif col == self.Columns.MetadataKeyCount and isinstance(aggregator, MetadataAggregator):
730
+ return aggregator.metadata_key_count
731
+ elif col == self.Columns.LabelCount and isinstance(aggregator, LabelAggregator):
732
+ return aggregator.label_count
733
+ elif col == self.Columns.Transformation:
734
+ return aggregator.transformation_count
735
+ raise ValueError(f"Unknown column: {col} for row: {row}")
736
+
737
+
738
+ class ProfileTransformationCommand(ProfileCommand[str]):
739
+ def __init__(
740
+ self,
741
+ output_spreadsheet: Path | None = None,
742
+ print_warning: bool = True,
743
+ skip_tracking: bool = False,
744
+ silent: bool = False,
745
+ ) -> None:
746
+ super().__init__(output_spreadsheet, print_warning, skip_tracking, silent)
747
+ self.table_title = "Transformation Profile"
748
+ self.destination_type: AssetCentricDestinationType | None = None
749
+
750
+ class Columns:
751
+ Transformation = "Transformation"
752
+ Source = "Sources"
753
+ DestinationColumns = "Destination Columns"
754
+ Destination = "Destination"
755
+ ConflictMode = "Conflict Mode"
756
+ IsPaused = "Is Paused"
757
+
758
+ def transformation(
759
+ self, client: ToolkitClient, destination_type: str | None = None, verbose: bool = False
760
+ ) -> list[dict[str, CellValue]]:
761
+ self.destination_type = AssetCentricDestinationSelect.get(destination_type)
762
+ self.table_title = f"Transformation Profile destination: {self.destination_type}"
763
+ return self.create_profile_table(client, sheet=self.destination_type)
764
+
765
+ def create_initial_table(self, client: ToolkitClient) -> dict[tuple[str, str], PendingCellValue]:
766
+ if self.destination_type is None:
767
+ raise ToolkitValueError("Destination type must be set before calling create_initial_table.")
768
+ iterable: Iterable[Transformation] = client.transformations.list(
769
+ destination_type=self.destination_type, limit=-1
770
+ )
771
+ if self.destination_type == "assets":
772
+ iterable = itertools.chain(iterable, client.transformations(destination_type="asset_hierarchy", limit=-1))
773
+ table: dict[tuple[str, str], PendingCellValue] = {}
774
+ for transformation in iterable:
775
+ sources: list[SQLTable] = []
776
+ destination_columns: list[str] = []
777
+ if transformation.query:
778
+ parser = SQLParser(transformation.query, operation="Profile transformations")
779
+ sources = parser.sources
780
+ destination_columns = parser.destination_columns
781
+ index = str(transformation.id)
782
+ table[(index, self.Columns.Transformation)] = transformation.name or transformation.external_id or "Unknown"
783
+ table[(index, self.Columns.Source)] = ", ".join(map(str, sources))
784
+ table[(index, self.Columns.DestinationColumns)] = (
785
+ ", ".join(destination_columns) or None if destination_columns else None
786
+ )
787
+ table[(index, self.Columns.Destination)] = (
788
+ transformation.destination.type or "Unknown" if transformation.destination else "Unknown"
789
+ )
790
+ table[(index, self.Columns.ConflictMode)] = transformation.conflict_mode or "Unknown"
791
+ table[(index, self.Columns.IsPaused)] = (
792
+ str(transformation.schedule.is_paused) if transformation.schedule else "No schedule"
793
+ )
794
+ return table
795
+
796
+ def create_api_callable(self, row: str, col: str, client: ToolkitClient) -> Callable:
797
+ raise NotImplementedError(f"{type(self).__name__} does not support API calls for {col} in row {row}.")
798
+
799
+
800
+ @dataclass(frozen=True)
801
+ class RawProfileIndex:
802
+ raw_table: RawTable
803
+ transformation_id: int | None = None
804
+
805
+
806
+ class ProfileRawCommand(ProfileCommand[RawProfileIndex]):
807
+ class Columns:
808
+ RAW = "Raw"
809
+ Rows = "Rows"
810
+ Columns = "Columns"
811
+ Transformation = "Transformation"
812
+ Destination = "Destination"
813
+ ConflictMode = "ConflictMode"
814
+
815
+ max_profile_raw_count = 10_000 # The number of rows to profile to get the number of columns.
816
+ # The actual limit is 256 MB of data.
817
+ # Ref https://github.com/cognitedata/profiler-api/blob/main/src/main/scala/com/cognite/raw_profiler/Profile.scala#L37
818
+ profile_timeout_seconds = 60 * 4 # Timeout for the profiling operation in seconds,
819
+ # This is the same ase the run/query maximum timeout.
820
+
821
+ is_dynamic_table = True
130
822
 
823
+ def __init__(
824
+ self,
825
+ output_spreadsheet: Path | None = None,
826
+ print_warning: bool = True,
827
+ skip_tracking: bool = False,
828
+ silent: bool = False,
829
+ ) -> None:
830
+ super().__init__(output_spreadsheet, print_warning, skip_tracking, silent)
831
+ self.table_title = "RAW Profile"
832
+ self.destination_type: AssetCentricDestinationType | None = None
833
+ self.client: ToolkitClient | None = None
131
834
 
132
- class ProfileCommand(ToolkitCommand):
133
- @classmethod
134
- def asset_centric(
135
- cls,
835
+ def raw(
836
+ self,
136
837
  client: ToolkitClient,
838
+ destination_type: str | None = None,
137
839
  verbose: bool = False,
138
- ) -> list[dict[str, str | int]]:
139
- aggregators: list[AssetCentricAggregator] = [
140
- AssetAggregator(client),
141
- EventAggregator(client),
142
- FileAggregator(client),
143
- TimeSeriesAggregator(client),
144
- SequenceAggregator(client),
145
- RelationshipAggregator(client),
146
- LabelCountAggregator(client),
147
- ]
148
- with Console().status("profiling asset-centric", spinner="aesthetic", speed=0.4) as _:
149
- with ThreadPoolExecutor() as executor:
150
- rows = list(executor.map(cls.process_aggregator, aggregators))
151
-
152
- table = Table(
153
- title="Asset Centric Profile",
154
- title_justify="left",
155
- show_header=True,
156
- header_style="bold magenta",
157
- )
158
- table.add_column("Resource")
159
- table.add_column("Count")
160
- table.add_column("Metadata Key Count*")
161
- table.add_column("Label Count*")
162
- for row in rows:
163
- table.add_row(*(f"{cell:,}" if isinstance(cell, int) else str(cell) for cell in row.values()))
164
- console = Console()
165
- console.print(table)
166
- console.print("* '-' indicates not applicable.")
167
- return rows
840
+ ) -> list[dict[str, CellValue]]:
841
+ self.destination_type = AssetCentricDestinationSelect.get(destination_type)
842
+ self.table_title = f"RAW Profile destination: {self.destination_type}"
843
+ return self.create_profile_table(client, sheet=self.destination_type)
844
+
845
+ def create_initial_table(self, client: ToolkitClient) -> dict[tuple[RawProfileIndex, str], PendingCellValue]:
846
+ if self.destination_type is None:
847
+ raise ToolkitValueError("Destination type must be set before calling create_initial_table.")
848
+ table: dict[tuple[RawProfileIndex, str], PendingCellValue] = {}
849
+ existing_tables = self._get_existing_tables(client)
850
+ transformations_by_raw_table = self._get_transformations_by_raw_table(client, self.destination_type)
851
+ for raw_id, transformations in transformations_by_raw_table.items():
852
+ is_missing = raw_id not in existing_tables
853
+ missing_str = " (missing)" if is_missing else ""
854
+ for transformation in transformations:
855
+ index = RawProfileIndex(raw_table=raw_id, transformation_id=transformation.id)
856
+ table[(index, self.Columns.RAW)] = f"{raw_id!s}{missing_str}"
857
+ if is_missing:
858
+ table[(index, self.Columns.Rows)] = "N/A"
859
+ table[(index, self.Columns.Columns)] = "N/A"
860
+ else:
861
+ # First, we request the API to get the column count. This uses the /profiler/raw endpoint,
862
+ # and if that is a complete profile, it will update the row count as well. If it is not complete,
863
+ # the raw count will be obtained from the transformation/preview endpoint by setting the
864
+ # table[(index, self.Columns.Rows)] to WaitingAPICall.
865
+ table[(index, self.Columns.Rows)] = None
866
+ table[(index, self.Columns.Columns)] = WaitingAPICall
867
+ table[(index, self.Columns.Transformation)] = f"{transformation.name} ({transformation.external_id})"
868
+ table[(index, self.Columns.Destination)] = (
869
+ transformation.destination.type if transformation.destination else "Unknown"
870
+ )
871
+ table[(index, self.Columns.ConflictMode)] = transformation.conflict_mode
872
+ return table
873
+
874
+ def create_api_callable(self, row: RawProfileIndex, col: str, client: ToolkitClient) -> Callable:
875
+ if col == self.Columns.Columns:
876
+ return partial(
877
+ client.raw.profile,
878
+ database=row.raw_table.db_name,
879
+ table=row.raw_table.table_name,
880
+ limit=self.max_profile_raw_count,
881
+ timeout_seconds=self.profile_timeout_seconds,
882
+ )
883
+ elif col == self.Columns.Rows:
884
+ return partial(
885
+ raw_row_count,
886
+ client=client,
887
+ raw_table_id=row.raw_table,
888
+ )
889
+ raise ValueError(f"There are no API calls for {row} in column {col}.")
890
+
891
+ def format_result(self, result: object, row: RawProfileIndex, col: str) -> CellValue:
892
+ if col == self.Columns.Rows:
893
+ if isinstance(result, int):
894
+ if result == MAX_ROW_ITERATION_RUN_QUERY:
895
+ return f"≥{result:,}"
896
+ else:
897
+ return result
898
+ elif isinstance(result, str):
899
+ return result
900
+ return None
901
+ if isinstance(result, int | float | bool | str) or result is None:
902
+ return result
903
+ elif isinstance(result, RawProfileResults) and col == self.Columns.Columns:
904
+ return result.column_count
905
+ raise ValueError(f"Unknown result type: {type(result)} for {row!s} in column {col}.")
906
+
907
+ def update_table(
908
+ self,
909
+ current_table: dict[tuple[RawProfileIndex, str], PendingCellValue],
910
+ result: object,
911
+ selected_row: RawProfileIndex,
912
+ selected_col: str,
913
+ ) -> dict[tuple[RawProfileIndex, str], PendingCellValue]:
914
+ if not isinstance(result, RawProfileResults) or selected_col != self.Columns.Columns:
915
+ return current_table
916
+ is_complete = result.is_complete and result.row_count < self.max_profile_raw_count
917
+ new_table: dict[tuple[RawProfileIndex, str], PendingCellValue] = {}
918
+ for (row, col), value in current_table.items():
919
+ if row == selected_row and col == self.Columns.Rows:
920
+ new_table[(row, col)] = result.row_count if is_complete else WaitingAPICall
921
+ elif row == selected_row and col == self.Columns.Columns:
922
+ new_table[(row, col)] = result.column_count if is_complete else f"≥{result.column_count:,}"
923
+ else:
924
+ new_table[(row, col)] = value
925
+ return new_table
168
926
 
169
- @staticmethod
170
- def process_aggregator(aggregator: AssetCentricAggregator) -> dict[str, str | int]:
171
- row: dict[str, str | int] = {
172
- "Resource": aggregator.display_name,
173
- "Count": aggregator.count(),
174
- }
175
- if isinstance(aggregator, MetadataAggregator):
176
- count: str | int = aggregator.metadata_key_count()
177
- else:
178
- count = "-"
179
- row["Metadata Key Count"] = count
180
- if isinstance(aggregator, LabelAggregator):
181
- count = aggregator.label_count()
182
- else:
183
- count = "-"
184
- row["Label Count"] = count
185
- return row
927
+ @classmethod
928
+ def _get_existing_tables(cls, client: ToolkitClient) -> set[RawTable]:
929
+ existing_tables: set[RawTable] = set()
930
+ databases = client.raw.databases.list(limit=-1)
931
+ for database in databases:
932
+ if database.name is None:
933
+ continue
934
+ tables = client.raw.tables.list(db_name=database.name, limit=-1)
935
+ for table in tables:
936
+ if table.name is None:
937
+ continue
938
+ existing_tables.add(RawTable(db_name=database.name, table_name=table.name))
939
+ return existing_tables
940
+
941
+ @classmethod
942
+ def _get_transformations_by_raw_table(
943
+ cls, client: ToolkitClient, destination_type: str
944
+ ) -> dict[RawTable, list[Transformation]]:
945
+ transformations = client.transformations.list(destination_type=destination_type)
946
+ if destination_type == "assets":
947
+ transformations.extend(client.transformations.list(destination_type="asset_hierarchy"))
948
+ transformations_by_raw_table: dict[RawTable, list[Transformation]] = defaultdict(list)
949
+ for transformation in transformations:
950
+ if transformation.query is None:
951
+ # No query means no source table.
952
+ continue
953
+ sources = get_transformation_sources(transformation.query)
954
+ for source in sources:
955
+ if isinstance(source, RawTable):
956
+ transformations_by_raw_table[source].append(transformation)
957
+ return transformations_by_raw_table