cognite-toolkit 0.7.26__tar.gz → 0.7.28__tar.gz

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 (317) hide show
  1. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/PKG-INFO +1 -1
  2. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_migrate_app.py +38 -11
  3. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/charts.py +3 -3
  4. cognite_toolkit-0.7.28/cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +184 -0
  5. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/__init__.py +2 -2
  6. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +0 -2
  7. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +147 -9
  8. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +12 -0
  9. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_applications.py +22 -1
  10. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  11. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  12. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_resources/cdf.toml +1 -1
  13. cognite_toolkit-0.7.28/cognite_toolkit/_version.py +1 -0
  14. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/pyproject.toml +1 -1
  15. cognite_toolkit-0.7.26/cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +0 -322
  16. cognite_toolkit-0.7.26/cognite_toolkit/_cdf_tk/commands/_migrate/canvas.py +0 -201
  17. cognite_toolkit-0.7.26/cognite_toolkit/_version.py +0 -1
  18. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/README.md +0 -0
  19. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/__init__.py +0 -0
  20. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf.py +0 -0
  21. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/__init__.py +0 -0
  22. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/__init__.py +0 -0
  23. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_auth_app.py +0 -0
  24. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_core_app.py +0 -0
  25. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_data_app.py +0 -0
  26. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_dev_app.py +0 -0
  27. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_download_app.py +0 -0
  28. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_dump_app.py +0 -0
  29. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_landing_app.py +0 -0
  30. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_modules_app.py +0 -0
  31. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_profile_app.py +0 -0
  32. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_purge.py +0 -0
  33. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_repo_app.py +0 -0
  34. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_run.py +0 -0
  35. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/apps/_upload_app.py +0 -0
  36. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/__init__.py +0 -0
  37. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_base.py +0 -0
  38. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_datamodels.py +0 -0
  39. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_file.py +0 -0
  40. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_function.py +0 -0
  41. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_location.py +0 -0
  42. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_raw.py +0 -0
  43. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_streamlit.py +0 -0
  44. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/builders/_transformation.py +0 -0
  45. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cdf_toml.py +0 -0
  46. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/__init__.py +0 -0
  47. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/_constants.py +0 -0
  48. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/_toolkit_client.py +0 -0
  49. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/__init__.py +0 -0
  50. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/canvas.py +0 -0
  51. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/charts.py +0 -0
  52. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/dml.py +0 -0
  53. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +0 -0
  54. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/extended_files.py +0 -0
  55. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/extended_functions.py +0 -0
  56. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/extended_raw.py +0 -0
  57. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +0 -0
  58. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/fixed_transformations.py +0 -0
  59. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/infield.py +0 -0
  60. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/location_filters.py +0 -0
  61. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/lookup.py +0 -0
  62. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/migration.py +0 -0
  63. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/project.py +0 -0
  64. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -0
  65. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/api.py +0 -0
  66. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/capabilities.py +0 -0
  67. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/data_postprocessing.py +0 -0
  68. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/frames.py +0 -0
  69. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/locations.py +0 -0
  70. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/maps.py +0 -0
  71. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/robots.py +0 -0
  72. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/robotics/utlis.py +0 -0
  73. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/search.py +0 -0
  74. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/search_config.py +0 -0
  75. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/streams.py +0 -0
  76. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/three_d.py +0 -0
  77. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/token.py +0 -0
  78. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api/verify.py +0 -0
  79. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/api_client.py +0 -0
  80. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/config.py +0 -0
  81. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/__init__.py +0 -0
  82. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -0
  83. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/apm_config_v1.py +0 -0
  84. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -0
  85. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +0 -0
  86. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/capabilities.py +0 -0
  87. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/extendable_cognite_file.py +0 -0
  88. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetadata.py +0 -0
  89. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetdata.py +0 -0
  90. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/extended_timeseries.py +0 -0
  91. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/functions.py +0 -0
  92. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/graphql_data_models.py +0 -0
  93. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/infield.py +0 -0
  94. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +0 -0
  95. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/instances.py +0 -0
  96. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/location_filters.py +0 -0
  97. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/migration.py +0 -0
  98. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/pending_instances_ids.py +0 -0
  99. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/project.py +0 -0
  100. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/raw.py +0 -0
  101. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/robotics.py +0 -0
  102. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +0 -0
  103. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/sequences.py +0 -0
  104. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +0 -0
  105. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/streams.py +0 -0
  106. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -0
  107. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/testing.py +0 -0
  108. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/utils/__init__.py +0 -0
  109. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/utils/_concurrency.py +0 -0
  110. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/client/utils/_http_client.py +0 -0
  111. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_base.py +0 -0
  112. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_changes.py +0 -0
  113. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_cli_commands.py +0 -0
  114. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_download.py +0 -0
  115. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/command.py +0 -0
  116. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +0 -0
  117. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +0 -0
  118. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +0 -0
  119. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +0 -0
  120. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +0 -0
  121. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +0 -0
  122. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +0 -0
  123. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +0 -0
  124. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_profile.py +0 -0
  125. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_purge.py +0 -0
  126. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_questionary_style.py +0 -0
  127. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_upload.py +0 -0
  128. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_utils.py +0 -0
  129. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/_virtual_env.py +0 -0
  130. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/about.py +0 -0
  131. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/auth.py +0 -0
  132. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/build_cmd.py +0 -0
  133. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/clean.py +0 -0
  134. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/collect.py +0 -0
  135. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/deploy.py +0 -0
  136. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/dump_resource.py +0 -0
  137. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/init.py +0 -0
  138. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/modules.py +0 -0
  139. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/pull.py +0 -0
  140. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/repo.py +0 -0
  141. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/resources.py +0 -0
  142. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/commands/run.py +0 -0
  143. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/constants.py +0 -0
  144. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/__init__.py +0 -0
  145. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_base_cruds.py +0 -0
  146. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +0 -0
  147. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +0 -0
  148. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +0 -0
  149. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +0 -0
  150. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +0 -0
  151. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +0 -0
  152. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/data_organization.py +0 -0
  153. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +0 -0
  154. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +0 -0
  155. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +0 -0
  156. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +0 -0
  157. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +0 -0
  158. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/group_scoped.py +0 -0
  159. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/hosted_extractors.py +0 -0
  160. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +0 -0
  161. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +0 -0
  162. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +0 -0
  163. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +0 -0
  164. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +0 -0
  165. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +0 -0
  166. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +0 -0
  167. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py +0 -0
  168. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +0 -0
  169. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +0 -0
  170. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py +0 -0
  171. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/cruds/_worker.py +0 -0
  172. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/__init__.py +0 -0
  173. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_base.py +0 -0
  174. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_build_files.py +0 -0
  175. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +0 -0
  176. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +0 -0
  177. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +0 -0
  178. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +0 -0
  179. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_deploy_results.py +0 -0
  180. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +0 -0
  181. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +0 -0
  182. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +0 -0
  183. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_packages.py +0 -0
  184. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +0 -0
  185. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/data_classes/_yaml_comments.py +0 -0
  186. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/exceptions.py +0 -0
  187. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/feature_flags.py +0 -0
  188. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/hints.py +0 -0
  189. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/plugins.py +0 -0
  190. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/protocols.py +0 -0
  191. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
  192. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/prototypes/commands/import_.py +0 -0
  193. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -0
  194. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/__init__.py +0 -0
  195. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/agent.py +0 -0
  196. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +0 -0
  197. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/asset.py +0 -0
  198. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/authentication.py +0 -0
  199. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/base.py +0 -0
  200. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +0 -0
  201. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +0 -0
  202. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +0 -0
  203. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/containers.py +0 -0
  204. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/data_model.py +0 -0
  205. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +0 -0
  206. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/dataset.py +0 -0
  207. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/event.py +0 -0
  208. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +0 -0
  209. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +0 -0
  210. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/filemetadata.py +0 -0
  211. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +0 -0
  212. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/functions.py +0 -0
  213. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +0 -0
  214. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/groups.py +0 -0
  215. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +0 -0
  216. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +0 -0
  217. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +0 -0
  218. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +0 -0
  219. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +0 -0
  220. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +0 -0
  221. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +0 -0
  222. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/instance.py +0 -0
  223. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/labels.py +0 -0
  224. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/location.py +0 -0
  225. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/migration.py +0 -0
  226. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +0 -0
  227. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/relationship.py +0 -0
  228. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +0 -0
  229. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +0 -0
  230. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +0 -0
  231. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +0 -0
  232. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +0 -0
  233. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +0 -0
  234. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/search_config.py +0 -0
  235. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/securitycategories.py +0 -0
  236. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/sequence.py +0 -0
  237. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/space.py +0 -0
  238. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +0 -0
  239. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/streams.py +0 -0
  240. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/threedmodels.py +0 -0
  241. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/timeseries.py +0 -0
  242. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/transformation_destination.py +0 -0
  243. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +0 -0
  244. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/transformation_schedule.py +0 -0
  245. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/transformations.py +0 -0
  246. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +0 -0
  247. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/views.py +0 -0
  248. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/workflow.py +0 -0
  249. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +0 -0
  250. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +0 -0
  251. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/__init__.py +0 -0
  252. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_annotations.py +0 -0
  253. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +0 -0
  254. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_base.py +0 -0
  255. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_data_classes.py +0 -0
  256. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_datapoints.py +0 -0
  257. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_file_content.py +0 -0
  258. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_instances.py +0 -0
  259. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/_raw.py +0 -0
  260. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +0 -0
  261. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +0 -0
  262. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +0 -0
  263. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +0 -0
  264. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +0 -0
  265. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +0 -0
  266. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +0 -0
  267. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +0 -0
  268. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +0 -0
  269. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +0 -0
  270. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/tk_warnings/base.py +0 -0
  271. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +0 -0
  272. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/tk_warnings/other.py +0 -0
  273. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/tracker.py +0 -0
  274. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/__init__.py +0 -0
  275. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/_auxiliary.py +0 -0
  276. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/aggregators.py +0 -0
  277. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/auth.py +0 -0
  278. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/auxiliary.py +0 -0
  279. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/cdf.py +0 -0
  280. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/cicd.py +0 -0
  281. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/cli_args.py +0 -0
  282. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/collection.py +0 -0
  283. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/diff_list.py +0 -0
  284. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +0 -0
  285. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/file.py +0 -0
  286. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +0 -0
  287. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/fileio/_base.py +0 -0
  288. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +0 -0
  289. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +0 -0
  290. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +0 -0
  291. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/graphql_parser.py +0 -0
  292. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/hashing.py +0 -0
  293. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +0 -0
  294. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/http_client/_client.py +0 -0
  295. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +0 -0
  296. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -0
  297. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +0 -0
  298. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/interactive_select.py +0 -0
  299. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/modules.py +0 -0
  300. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/producer_worker.py +0 -0
  301. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/progress_tracker.py +0 -0
  302. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/repository.py +0 -0
  303. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/sentry_utils.py +0 -0
  304. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/sql_parser.py +0 -0
  305. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/text.py +0 -0
  306. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +0 -0
  307. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/useful_types.py +0 -0
  308. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/utils/validate_access.py +0 -0
  309. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_cdf_tk/validation.py +0 -0
  310. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/.env.tmpl +0 -0
  311. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/.gitignore +0 -0
  312. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md +0 -0
  313. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +0 -0
  314. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +0 -0
  315. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/config.dev.yaml +0 -0
  316. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/demo/__init__.py +0 -0
  317. {cognite_toolkit-0.7.26 → cognite_toolkit-0.7.28}/cognite_toolkit/demo/_base.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite_toolkit
3
- Version: 0.7.26
3
+ Version: 0.7.28
4
4
  Summary: Official Cognite Data Fusion tool for project templates and configuration deployment
5
5
  Author: Cognite AS
6
6
  Author-email: Cognite AS <support@cognite.com>
@@ -8,17 +8,14 @@ from cognite.client.data_classes import Annotation
8
8
  from cognite.client.data_classes.data_modeling import ContainerId
9
9
 
10
10
  from cognite_toolkit._cdf_tk.client import ToolkitClient
11
- from cognite_toolkit._cdf_tk.commands import (
12
- MigrationCanvasCommand,
13
- MigrationPrepareCommand,
14
- )
11
+ from cognite_toolkit._cdf_tk.commands import MigrationPrepareCommand
15
12
  from cognite_toolkit._cdf_tk.commands._migrate import MigrationCommand
16
13
  from cognite_toolkit._cdf_tk.commands._migrate.creators import (
17
14
  InfieldV2ConfigCreator,
18
15
  InstanceSpaceCreator,
19
16
  SourceSystemCreator,
20
17
  )
21
- from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import AssetCentricMapper, ChartMapper
18
+ from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import AssetCentricMapper, CanvasMapper, ChartMapper
22
19
  from cognite_toolkit._cdf_tk.commands._migrate.migration_io import (
23
20
  AnnotationMigrationIO,
24
21
  AssetCentricMigrationIO,
@@ -28,14 +25,15 @@ from cognite_toolkit._cdf_tk.commands._migrate.selectors import (
28
25
  MigrateDataSetSelector,
29
26
  MigrationCSVFileSelector,
30
27
  )
31
- from cognite_toolkit._cdf_tk.storageio import ChartIO
32
- from cognite_toolkit._cdf_tk.storageio.selectors import ChartExternalIdSelector
28
+ from cognite_toolkit._cdf_tk.storageio import CanvasIO, ChartIO
29
+ from cognite_toolkit._cdf_tk.storageio.selectors import CanvasExternalIdSelector, ChartExternalIdSelector
33
30
  from cognite_toolkit._cdf_tk.utils.auth import EnvironmentVariables
34
31
  from cognite_toolkit._cdf_tk.utils.cli_args import parse_view_str
35
32
  from cognite_toolkit._cdf_tk.utils.interactive_select import (
36
33
  AssetInteractiveSelect,
37
34
  DataModelingSelect,
38
35
  FileMetadataInteractiveSelect,
36
+ InteractiveCanvasSelect,
39
37
  InteractiveChartSelect,
40
38
  ResourceViewMappingInteractiveSelect,
41
39
  )
@@ -855,6 +853,23 @@ class MigrateApp(typer.Typer):
855
853
  "performed to select the Canvas to migrate."
856
854
  ),
857
855
  ] = None,
856
+ skip_on_missing_ref: Annotated[
857
+ bool,
858
+ typer.Option(
859
+ "--skip-on-missing-ref",
860
+ "-s",
861
+ help="If set, the migration will skip Canvases that reference resources that have not been migrated to data modeling. "
862
+ "If not set, the migration will continue but the result will exclude the missing references.",
863
+ ),
864
+ ] = False,
865
+ log_dir: Annotated[
866
+ Path,
867
+ typer.Option(
868
+ "--log-dir",
869
+ "-l",
870
+ help="Path to the directory where migration logs will be stored.",
871
+ ),
872
+ ] = Path(f"migration_logs_{TODAY}"),
858
873
  dry_run: Annotated[
859
874
  bool,
860
875
  typer.Option(
@@ -880,12 +895,24 @@ class MigrateApp(typer.Typer):
880
895
  is populated with the mapping from Asset-Centric resources to the new data modeling resources.
881
896
  """
882
897
  client = EnvironmentVariables.create_from_environment().get_client()
898
+ if external_id is None:
899
+ interactive = InteractiveCanvasSelect(client)
900
+ external_id = interactive.select_external_ids()
901
+ log_dir = questionary.path("Specify log directory for migration logs:", default=str(log_dir)).ask()
902
+ dry_run = questionary.confirm("Do you want to perform a dry run?", default=dry_run).ask()
903
+ verbose = questionary.confirm("Do you want verbose output?", default=verbose).ask()
904
+ if any(res is None for res in [log_dir, dry_run, verbose]):
905
+ raise typer.Abort()
906
+ log_dir = Path(log_dir)
883
907
 
884
- cmd = MigrationCanvasCommand()
908
+ cmd = MigrationCommand()
909
+ selector = CanvasExternalIdSelector(external_ids=tuple(external_id))
885
910
  cmd.run(
886
- lambda: cmd.migrate_canvas(
887
- client,
888
- external_ids=external_id,
911
+ lambda: cmd.migrate(
912
+ selected=selector,
913
+ data=CanvasIO(client, exclude_existing_version=True),
914
+ mapper=CanvasMapper(client, dry_run=dry_run, skip_on_missing_ref=skip_on_missing_ref),
915
+ log_dir=log_dir,
889
916
  dry_run=dry_run,
890
917
  verbose=verbose,
891
918
  )
@@ -36,7 +36,7 @@ class ChartCore(WriteableCogniteResource["ChartWrite"], ABC):
36
36
  def dump(self, camel_case: bool = True) -> dict[str, Any]:
37
37
  """Convert the chart to a dictionary representation."""
38
38
  output = super().dump(camel_case=camel_case)
39
- output["data"] = self.data.dump(camel_case=camel_case)
39
+ output["data"] = self.data.model_dump(mode="json", by_alias=camel_case, exclude_unset=True)
40
40
  return output
41
41
 
42
42
 
@@ -58,7 +58,7 @@ class ChartWrite(ChartCore):
58
58
  return cls(
59
59
  external_id=resource["externalId"],
60
60
  visibility=resource["visibility"],
61
- data=ChartData._load(resource["data"], cognite_client=cognite_client),
61
+ data=ChartData._load(resource["data"]),
62
62
  )
63
63
 
64
64
 
@@ -98,7 +98,7 @@ class Chart(ChartCore):
98
98
  created_time=resource["createdTime"],
99
99
  last_updated_time=resource["lastUpdatedTime"],
100
100
  visibility=resource["visibility"],
101
- data=ChartData._load(resource["data"], cognite_client=cognite_client),
101
+ data=ChartData._load(resource["data"]),
102
102
  owner_id=resource["ownerId"],
103
103
  )
104
104
 
@@ -0,0 +1,184 @@
1
+ from typing import Any
2
+
3
+ from cognite.client.data_classes.data_modeling import NodeId, ViewId
4
+ from pydantic import JsonValue, field_serializer, field_validator
5
+
6
+ from .base import BaseModelObject
7
+
8
+
9
+ class UserInfo(BaseModelObject):
10
+ id: str | None = None
11
+ email: str | None = None
12
+ display_name: str | None = None
13
+
14
+
15
+ class ChartSettings(BaseModelObject):
16
+ show_y_axis: bool = True
17
+ show_min_max: bool = True
18
+ show_gridlines: bool = True
19
+ merge_units: bool = False
20
+
21
+
22
+ class ThresholdFilter(BaseModelObject):
23
+ min_unit: str | None = None
24
+ max_unit: str | None = None
25
+
26
+
27
+ class ChartCall(BaseModelObject):
28
+ id: str | None = None
29
+ hash: int | None = None
30
+ call_id: str | None = None
31
+ call_date: int | None = None
32
+ status: str | None = None
33
+
34
+
35
+ class SubSetting(BaseModelObject):
36
+ auto_align: bool | None = None
37
+
38
+
39
+ class ChartPosition(BaseModelObject):
40
+ x: float | None = None
41
+ y: float | None = None
42
+
43
+
44
+ class FlowElement(BaseModelObject):
45
+ id: str | None = None
46
+ type: str | None = None
47
+ position: ChartPosition | None = None
48
+ data: JsonValue | None = None
49
+ source: str | None = None
50
+ target: str | None = None
51
+ source_handle: str | None = None
52
+ target_handle: str | None = None
53
+
54
+
55
+ class Flow(BaseModelObject):
56
+ zoom: float | None = None
57
+ elements: list[FlowElement] | None = None
58
+ position: tuple[float | None, float | None] | None = None
59
+
60
+
61
+ class ChartElement(BaseModelObject):
62
+ id: str | None = None
63
+ type: str | None = None
64
+
65
+
66
+ class ChartSource(ChartElement): ...
67
+
68
+
69
+ class ChartCoreTimeseries(ChartElement):
70
+ node_reference: NodeId | None = None
71
+ view_reference: ViewId | None = None
72
+ display_mode: str | None = None
73
+ color: str | None = None
74
+ created_at: int | None = None
75
+ enabled: bool | None = None
76
+ interpolation: str | None = None
77
+ line_style: str | None = None
78
+ line_weight: float | None = None
79
+ name: str | None = None
80
+ preferred_unit: str | None = None
81
+ range: list[float | None] | None = None
82
+
83
+ @field_serializer("node_reference", when_used="always")
84
+ def serialize_node_reference(self, node_reference: NodeId | None) -> dict[str, Any] | None:
85
+ if node_reference:
86
+ return node_reference.dump(include_instance_type=False)
87
+ return None
88
+
89
+ @field_serializer("view_reference", when_used="always")
90
+ def serialize_view_reference(self, view_reference: ViewId | None) -> dict[str, Any] | None:
91
+ if view_reference:
92
+ return view_reference.dump(include_type=False)
93
+ return None
94
+
95
+ @field_validator("node_reference", mode="before")
96
+ @classmethod
97
+ def validate_node_reference(cls, value: Any) -> NodeId | None:
98
+ if value is None or isinstance(value, NodeId):
99
+ return value
100
+ return NodeId.load(value)
101
+
102
+ @field_validator("view_reference", mode="before")
103
+ @classmethod
104
+ def validate_view_reference(cls, value: Any) -> ViewId | None:
105
+ if value is None or isinstance(value, ViewId):
106
+ return value
107
+ return ViewId.load(value)
108
+
109
+
110
+ class ChartTimeseries(ChartElement):
111
+ color: str | None = None
112
+ created_at: int | None = None
113
+ enabled: bool | None = None
114
+ interpolation: str | None = None
115
+ line_style: str | None = None
116
+ line_weight: float | None = None
117
+ name: str | None = None
118
+ preferred_unit: str | None = None
119
+ range: list[float | None] | None = None
120
+ unit: str | None = None
121
+ ts_id: int | None = None
122
+ ts_external_id: str | None = None
123
+ display_mode: str | None = None
124
+ original_unit: str | None = None
125
+ description: str | None = None
126
+
127
+
128
+ class ChartWorkflow(ChartElement):
129
+ version: str | None = None
130
+ name: str | None = None
131
+ color: str | None = None
132
+ enabled: bool | None = None
133
+ line_weight: float | None = None
134
+ line_style: str | None = None
135
+ interpolation: str | None = None
136
+ unit: str | None = None
137
+ preferred_unit: str | None = None
138
+ range: list[float | None] | None = None
139
+ created_at: int | None = None
140
+ settings: SubSetting | None = None
141
+ flow: Flow | None = None
142
+ calls: list[ChartCall] | None = None
143
+
144
+
145
+ class ChartThreshold(ChartElement):
146
+ visible: bool | None = None
147
+ name: str | None = None
148
+ source_id: str | None = None
149
+ upper_limit: float | None = None
150
+ filter: ThresholdFilter | None = None
151
+ calls: list[ChartCall] | None = None
152
+
153
+
154
+ class ChartScheduledCalculation(ChartElement):
155
+ color: str | None = None
156
+ created_at: int | None = None
157
+ description: str | None = None
158
+ enabled: bool | None = None
159
+ interpolation: str | None = None
160
+ line_style: str | None = None
161
+ line_weight: float | None = None
162
+ name: str | None = None
163
+ preferred_unit: str | None = None
164
+ range: list[float | None] | None = None
165
+ unit: str | None = None
166
+ version: str | None = None
167
+ settings: SubSetting | None = None
168
+ flow: Flow | None = None
169
+
170
+
171
+ class ChartData(BaseModelObject):
172
+ version: int | None = None
173
+ name: str | None = None
174
+ date_from: str | None = None
175
+ date_to: str | None = None
176
+ user_info: UserInfo | None = None
177
+ live_mode: bool | None = None
178
+ time_series_collection: list[ChartTimeseries] | None = None
179
+ core_timeseries_collection: list[ChartCoreTimeseries] | None = None
180
+ workflow_collection: list[ChartWorkflow] | None = None
181
+ source_collection: list[ChartSource] | None = None
182
+ threshold_collection: list[ChartThreshold] | None = None
183
+ scheduled_calculation_collection: list[ChartScheduledCalculation] | None = None
184
+ settings: ChartSettings | None = None
@@ -1,6 +1,6 @@
1
1
  from ._download import DownloadCommand
2
2
  from ._migrate import (
3
- MigrationCanvasCommand,
3
+ MigrationCommand,
4
4
  MigrationPrepareCommand,
5
5
  )
6
6
  from ._profile import ProfileAssetCentricCommand, ProfileAssetCommand, ProfileRawCommand, ProfileTransformationCommand
@@ -30,7 +30,7 @@ __all__ = [
30
30
  "DownloadCommand",
31
31
  "DumpResourceCommand",
32
32
  "InitCommand",
33
- "MigrationCanvasCommand",
33
+ "MigrationCommand",
34
34
  "MigrationPrepareCommand",
35
35
  "ModulesCommand",
36
36
  "ProfileAssetCentricCommand",
@@ -1,9 +1,7 @@
1
- from .canvas import MigrationCanvasCommand
2
1
  from .command import MigrationCommand
3
2
  from .prepare import MigrationPrepareCommand
4
3
 
5
4
  __all__ = [
6
- "MigrationCanvasCommand",
7
5
  "MigrationCommand",
8
6
  "MigrationPrepareCommand",
9
7
  ]
@@ -1,5 +1,6 @@
1
1
  from abc import ABC, abstractmethod
2
- from collections.abc import Sequence
2
+ from collections import defaultdict
3
+ from collections.abc import Callable, Sequence
3
4
  from typing import Generic, cast
4
5
  from uuid import uuid4
5
6
 
@@ -11,8 +12,15 @@ from cognite.client.data_classes.data_modeling import (
11
12
  View,
12
13
  ViewId,
13
14
  )
15
+ from cognite.client.exceptions import CogniteException
14
16
 
15
17
  from cognite_toolkit._cdf_tk.client import ToolkitClient
18
+ from cognite_toolkit._cdf_tk.client.data_classes.canvas import (
19
+ ContainerReferenceApply,
20
+ FdmInstanceContainerReferenceApply,
21
+ IndustrialCanvas,
22
+ IndustrialCanvasApply,
23
+ )
16
24
  from cognite_toolkit._cdf_tk.client.data_classes.charts import Chart, ChartWrite
17
25
  from cognite_toolkit._cdf_tk.client.data_classes.charts_data import (
18
26
  ChartCoreTimeseries,
@@ -23,13 +31,18 @@ from cognite_toolkit._cdf_tk.client.data_classes.migration import ResourceViewMa
23
31
  from cognite_toolkit._cdf_tk.commands._migrate.conversion import DirectRelationCache, asset_centric_to_dm
24
32
  from cognite_toolkit._cdf_tk.commands._migrate.data_classes import AssetCentricMapping
25
33
  from cognite_toolkit._cdf_tk.commands._migrate.default_mappings import create_default_mappings
26
- from cognite_toolkit._cdf_tk.commands._migrate.issues import ChartMigrationIssue, ConversionIssue, MigrationIssue
34
+ from cognite_toolkit._cdf_tk.commands._migrate.issues import (
35
+ CanvasMigrationIssue,
36
+ ChartMigrationIssue,
37
+ ConversionIssue,
38
+ MigrationIssue,
39
+ )
27
40
  from cognite_toolkit._cdf_tk.commands._migrate.selectors import AssetCentricMigrationSelector
28
41
  from cognite_toolkit._cdf_tk.constants import MISSING_INSTANCE_SPACE
29
- from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
42
+ from cognite_toolkit._cdf_tk.exceptions import ToolkitMigrationError, ToolkitValueError
30
43
  from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
31
44
  from cognite_toolkit._cdf_tk.storageio._base import T_Selector
32
- from cognite_toolkit._cdf_tk.storageio.selectors import ChartSelector
45
+ from cognite_toolkit._cdf_tk.storageio.selectors import CanvasSelector, ChartSelector
33
46
  from cognite_toolkit._cdf_tk.utils import humanize_collection
34
47
  from cognite_toolkit._cdf_tk.utils.useful_types import (
35
48
  T_AssetCentricResourceExtended,
@@ -197,16 +210,14 @@ class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
197
210
  def _create_new_timeseries_core(
198
211
  self, ts_item: ChartTimeseries, node_id: NodeId, consumer_view_id: ViewId | None
199
212
  ) -> ChartCoreTimeseries:
200
- dumped = ts_item.dump(camel_case=True)
201
- for asset_centric_key in ["tsId", "tsExternalId", "originalUnit"]:
202
- dumped.pop(asset_centric_key, None)
203
-
213
+ dumped = ts_item.model_dump(mode="json", by_alias=True, exclude_unset=True)
204
214
  dumped["nodeReference"] = node_id
205
215
  dumped["viewReference"] = consumer_view_id
206
216
  new_uuid = str(uuid4())
207
217
  dumped["id"] = new_uuid
208
218
  dumped["type"] = "coreTimeseries"
209
- core_timeseries = ChartCoreTimeseries._load(dumped)
219
+ # We ignore extra here to only include the fields that are shared between ChartTimeseries and ChartCoreTimeseries
220
+ core_timeseries = ChartCoreTimeseries.model_validate(dumped, extra="ignore")
210
221
  return core_timeseries
211
222
 
212
223
  def _get_node_id_consumer_view_id(self, ts_item: ChartTimeseries) -> tuple[NodeId | None, ViewId | None]:
@@ -245,3 +256,130 @@ class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
245
256
  new_source_item = ChartSource(id=cast(str, core_ts_item.id), type=cast(str, core_ts_item.type))
246
257
  updated_source_collection.append(new_source_item)
247
258
  return updated_source_collection
259
+
260
+
261
+ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvasApply]):
262
+ # Note sequences are not supported in Canvas, so we do not include them here.
263
+ asset_centric_resource_types = tuple(("asset", "event", "timeseries", "file"))
264
+ DEFAULT_ASSET_VIEW = ViewId("cdf_cdm", "CogniteAsset", "v1")
265
+ DEFAULT_EVENT_VIEW = ViewId("cdf_cdm", "CogniteActivity", "v1")
266
+ DEFAULT_FILE_VIEW = ViewId("cdf_cdm", "CogniteFile", "v1")
267
+ DEFAULT_TIMESERIES_VIEW = ViewId("cdf_cdm", "CogniteTimeSeries", "v1")
268
+
269
+ def __init__(self, client: ToolkitClient, dry_run: bool, skip_on_missing_ref: bool = False) -> None:
270
+ self.client = client
271
+ self.dry_run = dry_run
272
+ self.skip_on_missing_ref = skip_on_missing_ref
273
+
274
+ def map(self, source: Sequence[IndustrialCanvas]) -> Sequence[tuple[IndustrialCanvasApply | None, MigrationIssue]]:
275
+ self._populate_cache(source)
276
+ output: list[tuple[IndustrialCanvasApply | None, MigrationIssue]] = []
277
+ for item in source:
278
+ mapped_item, issue = self._map_single_item(item)
279
+ output.append((mapped_item, issue))
280
+ return output
281
+
282
+ @property
283
+ def lookup_methods(self) -> dict[str, Callable]:
284
+ return {
285
+ "asset": self.client.migration.lookup.assets,
286
+ "event": self.client.migration.lookup.events,
287
+ "timeseries": self.client.migration.lookup.time_series,
288
+ "file": self.client.migration.lookup.files,
289
+ }
290
+
291
+ def _populate_cache(self, source: Sequence[IndustrialCanvas]) -> None:
292
+ """Populate the internal cache with references from the source canvases.
293
+
294
+ Note that the consumption views are also cached as part of the timeseries lookup.
295
+ """
296
+ ids_by_type: dict[str, set[int]] = defaultdict(set)
297
+ for canvas in source:
298
+ for ref in canvas.container_references or []:
299
+ if ref.container_reference_type in self.asset_centric_resource_types:
300
+ ids_by_type[ref.container_reference_type].add(ref.resource_id)
301
+
302
+ for resource_type, lookup_method in self.lookup_methods.items():
303
+ ids = ids_by_type.get(resource_type)
304
+ if ids:
305
+ lookup_method(list(ids))
306
+
307
+ def _get_node_id(self, resource_id: int, resource_type: str) -> NodeId | None:
308
+ """Look up the node ID for a given resource ID and type."""
309
+ try:
310
+ return self.lookup_methods[resource_type](resource_id)
311
+ except KeyError:
312
+ raise ToolkitValueError(f"Unsupported resource type '{resource_type}' for container reference migration.")
313
+
314
+ def _get_consumer_view_id(self, resource_id: int, resource_type: str) -> ViewId:
315
+ """Look up the consumer view ID for a given resource ID and type."""
316
+ lookup_map = {
317
+ "asset": (self.client.migration.lookup.assets.consumer_view, self.DEFAULT_ASSET_VIEW),
318
+ "event": (self.client.migration.lookup.events.consumer_view, self.DEFAULT_EVENT_VIEW),
319
+ "timeseries": (self.client.migration.lookup.time_series.consumer_view, self.DEFAULT_TIMESERIES_VIEW),
320
+ "file": (self.client.migration.lookup.files.consumer_view, self.DEFAULT_FILE_VIEW),
321
+ }
322
+ if lookup_tuple := lookup_map.get(resource_type):
323
+ method, fallback = lookup_tuple
324
+ return method(resource_id) or fallback
325
+
326
+ raise ToolkitValueError(f"Unsupported resource type '{resource_type}' for container reference migration.")
327
+
328
+ def _map_single_item(self, canvas: IndustrialCanvas) -> tuple[IndustrialCanvasApply | None, CanvasMigrationIssue]:
329
+ update = canvas.as_write()
330
+ issue = CanvasMigrationIssue(canvas_external_id=canvas.canvas.external_id, canvas_name=canvas.canvas.name)
331
+
332
+ remaining_container_references: list[ContainerReferenceApply] = []
333
+ new_fdm_references: list[FdmInstanceContainerReferenceApply] = []
334
+ for ref in update.container_references or []:
335
+ if ref.container_reference_type not in self.asset_centric_resource_types:
336
+ remaining_container_references.append(ref)
337
+ continue
338
+ node_id = self._get_node_id(ref.resource_id, ref.container_reference_type)
339
+ if node_id is None:
340
+ issue.missing_reference_ids.append(ref.as_asset_centric_id())
341
+ else:
342
+ consumer_view = self._get_consumer_view_id(ref.resource_id, ref.container_reference_type)
343
+ fdm_ref = self.migrate_container_reference(ref, canvas.canvas.external_id, node_id, consumer_view)
344
+ new_fdm_references.append(fdm_ref)
345
+ if issue.missing_reference_ids and self.skip_on_missing_ref:
346
+ return None, issue
347
+
348
+ update.container_references = remaining_container_references
349
+ update.fdm_instance_container_references.extend(new_fdm_references)
350
+ if not self.dry_run:
351
+ backup = canvas.as_write().create_backup()
352
+ try:
353
+ self.client.canvas.industrial.create(backup)
354
+ except CogniteException as e:
355
+ raise ToolkitMigrationError(
356
+ f"Failed to create backup for canvas '{canvas.canvas.name}': {e!s}. "
357
+ ) from e
358
+
359
+ return update, issue
360
+
361
+ @classmethod
362
+ def migrate_container_reference(
363
+ cls, reference: ContainerReferenceApply, canvas_external_id: str, instance_id: NodeId, consumer_view: ViewId
364
+ ) -> FdmInstanceContainerReferenceApply:
365
+ """Migrate a single container reference by replacing the asset-centric ID with the data model instance ID."""
366
+ new_id = str(uuid4())
367
+ new_external_id = f"{canvas_external_id}_{new_id}"
368
+ return FdmInstanceContainerReferenceApply(
369
+ external_id=new_external_id,
370
+ id_=new_id,
371
+ container_reference_type="fdmInstance",
372
+ instance_space=instance_id.space,
373
+ instance_external_id=instance_id.external_id,
374
+ view_space=consumer_view.space,
375
+ view_external_id=consumer_view.external_id,
376
+ view_version=consumer_view.version,
377
+ label=reference.label,
378
+ properties_=reference.properties_,
379
+ x=reference.x,
380
+ y=reference.y,
381
+ width=reference.width,
382
+ height=reference.height,
383
+ max_width=reference.max_width,
384
+ max_height=reference.max_height,
385
+ )
@@ -51,6 +51,18 @@ class ChartMigrationIssue(MigrationIssue):
51
51
  )
52
52
 
53
53
 
54
+ class CanvasMigrationIssue(MigrationIssue):
55
+ type: ClassVar[str] = "canvasMigration"
56
+ canvas_external_id: str
57
+ canvas_name: str
58
+ missing_reference_ids: list[AssetCentricId] = Field(default_factory=list)
59
+
60
+ @property
61
+ def has_issues(self) -> bool:
62
+ """Check if there are any issues recorded in this CanvasMigrationIssue."""
63
+ return bool(self.missing_reference_ids)
64
+
65
+
54
66
  class ReadIssue(MigrationIssue):
55
67
  """Represents a read issue encountered during migration."""
56
68
 
@@ -1,6 +1,7 @@
1
1
  from collections.abc import Iterable, Sequence
2
2
  from typing import Any
3
3
 
4
+ from cognite_toolkit._cdf_tk.client import ToolkitClient
4
5
  from cognite_toolkit._cdf_tk.client.data_classes.canvas import (
5
6
  IndustrialCanvas,
6
7
  IndustrialCanvasApply,
@@ -127,6 +128,15 @@ class ChartIO(UploadableStorageIO[ChartSelector, Chart, ChartWrite]):
127
128
 
128
129
 
129
130
  class CanvasIO(UploadableStorageIO[CanvasSelector, IndustrialCanvas, IndustrialCanvasApply]):
131
+ """Download and upload Industrial Canvases to/from CDF.
132
+
133
+ Args:
134
+ client (ToolkitClient): The Cognite Toolkit client to use for API interactions.
135
+ exclude_existing_version (bool): Whether to exclude the 'existingVersion' field when uploading canvases.
136
+ Defaults to True. If you set this to False, the upload may fail if the existing version in CDF is
137
+ lower or equal to the one in the uploaded data.
138
+ """
139
+
130
140
  KIND = "IndustrialCanvas"
131
141
  SUPPORTED_DOWNLOAD_FORMATS = frozenset({".ndjson"})
132
142
  SUPPORTED_COMPRESSIONS = frozenset({".gz"})
@@ -134,6 +144,10 @@ class CanvasIO(UploadableStorageIO[CanvasSelector, IndustrialCanvas, IndustrialC
134
144
  CHUNK_SIZE = 10
135
145
  BASE_SELECTOR = CanvasSelector
136
146
 
147
+ def __init__(self, client: ToolkitClient, exclude_existing_version: bool = True) -> None:
148
+ super().__init__(client)
149
+ self.exclude_existing_version = exclude_existing_version
150
+
137
151
  def as_id(self, item: IndustrialCanvas) -> str:
138
152
  return item.as_id()
139
153
 
@@ -171,12 +185,19 @@ class CanvasIO(UploadableStorageIO[CanvasSelector, IndustrialCanvas, IndustrialC
171
185
  results: list[HTTPMessage] = []
172
186
  for item in data_chunk:
173
187
  instances = item.item.as_instances()
188
+ items: list[dict[str, JsonVal]] = []
189
+ for instance in instances:
190
+ dumped = instance.dump()
191
+ if self.exclude_existing_version:
192
+ dumped.pop("existingVersion", None)
193
+ items.append(dumped)
194
+
174
195
  responses = http_client.request_with_retries(
175
196
  message=SimpleBodyRequest(
176
197
  endpoint_url=config.create_api_url("/models/instances"),
177
198
  method="POST",
178
199
  # MyPy does not understand that .dump is valid json
179
- body_content={"items": [instance.dump() for instance in instances]},
200
+ body_content={"items": items}, # type: ignore[dict-item]
180
201
  )
181
202
  )
182
203
  results.extend(responses.as_item_responses(item.source_id))
@@ -12,7 +12,7 @@ jobs:
12
12
  environment: dev
13
13
  name: Deploy
14
14
  container:
15
- image: cognite/toolkit:0.7.26
15
+ image: cognite/toolkit:0.7.28
16
16
  env:
17
17
  CDF_CLUSTER: ${{ vars.CDF_CLUSTER }}
18
18
  CDF_PROJECT: ${{ vars.CDF_PROJECT }}
@@ -10,7 +10,7 @@ jobs:
10
10
  environment: dev
11
11
  name: Deploy Dry Run
12
12
  container:
13
- image: cognite/toolkit:0.7.26
13
+ image: cognite/toolkit:0.7.28
14
14
  env:
15
15
  CDF_CLUSTER: ${{ vars.CDF_CLUSTER }}
16
16
  CDF_PROJECT: ${{ vars.CDF_PROJECT }}
@@ -4,7 +4,7 @@ default_env = "<DEFAULT_ENV_PLACEHOLDER>"
4
4
  [modules]
5
5
  # This is the version of the modules. It should not be changed manually.
6
6
  # It will be updated by the 'cdf modules upgrade' command.
7
- version = "0.7.26"
7
+ version = "0.7.28"
8
8
 
9
9
 
10
10
  [plugins]
@@ -0,0 +1 @@
1
+ __version__ = "0.7.28"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cognite_toolkit"
3
- version = "0.7.26"
3
+ version = "0.7.28"
4
4
  description = "Official Cognite Data Fusion tool for project templates and configuration deployment"
5
5
  authors = [
6
6
  {name ="Cognite AS", email="support@cognite.com"}