cognite-toolkit 0.7.39__py3-none-any.whl → 0.7.51__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. cognite_toolkit/_cdf_tk/apps/_download_app.py +1 -1
  2. cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
  3. cognite_toolkit/_cdf_tk/apps/_migrate_app.py +6 -6
  4. cognite_toolkit/_cdf_tk/builders/_function.py +81 -9
  5. cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
  6. cognite_toolkit/_cdf_tk/client/_resource_base.py +187 -0
  7. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +37 -5
  8. cognite_toolkit/_cdf_tk/client/api/agents.py +107 -0
  9. cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
  10. cognite_toolkit/_cdf_tk/client/api/assets.py +130 -0
  11. cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
  12. cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
  13. cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
  14. cognite_toolkit/_cdf_tk/client/api/events.py +129 -0
  15. cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
  16. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +176 -0
  17. cognite_toolkit/_cdf_tk/client/api/function_schedules.py +115 -0
  18. cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
  19. cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
  20. cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
  21. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
  22. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
  23. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
  24. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
  25. cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
  26. cognite_toolkit/_cdf_tk/client/api/infield.py +8 -8
  27. cognite_toolkit/_cdf_tk/client/api/instances.py +139 -0
  28. cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
  29. cognite_toolkit/_cdf_tk/client/api/legacy/canvas.py +3 -3
  30. cognite_toolkit/_cdf_tk/client/api/legacy/charts.py +1 -1
  31. cognite_toolkit/_cdf_tk/client/api/legacy/extended_data_modeling.py +1 -1
  32. cognite_toolkit/_cdf_tk/client/api/legacy/extended_files.py +2 -2
  33. cognite_toolkit/_cdf_tk/client/api/legacy/extended_functions.py +1 -1
  34. cognite_toolkit/_cdf_tk/client/api/legacy/extended_raw.py +1 -1
  35. cognite_toolkit/_cdf_tk/client/api/legacy/extended_timeseries.py +2 -2
  36. cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +1 -1
  37. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/capabilities.py +1 -1
  38. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/data_postprocessing.py +1 -1
  39. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/frames.py +1 -1
  40. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/locations.py +1 -1
  41. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/maps.py +1 -1
  42. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/robots.py +1 -1
  43. cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +1 -1
  44. cognite_toolkit/_cdf_tk/client/api/location_filters.py +177 -0
  45. cognite_toolkit/_cdf_tk/client/api/migration.py +1 -1
  46. cognite_toolkit/_cdf_tk/client/api/project.py +2 -2
  47. cognite_toolkit/_cdf_tk/client/api/raw.py +204 -0
  48. cognite_toolkit/_cdf_tk/client/api/relationships.py +133 -0
  49. cognite_toolkit/_cdf_tk/client/api/robotics.py +19 -0
  50. cognite_toolkit/_cdf_tk/client/api/robotics_capabilities.py +127 -0
  51. cognite_toolkit/_cdf_tk/client/api/robotics_data_postprocessing.py +138 -0
  52. cognite_toolkit/_cdf_tk/client/api/robotics_frames.py +122 -0
  53. cognite_toolkit/_cdf_tk/client/api/robotics_locations.py +127 -0
  54. cognite_toolkit/_cdf_tk/client/api/robotics_maps.py +122 -0
  55. cognite_toolkit/_cdf_tk/client/api/robotics_robots.py +122 -0
  56. cognite_toolkit/_cdf_tk/client/api/search_config.py +101 -0
  57. cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
  58. cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
  59. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +154 -0
  60. cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
  61. cognite_toolkit/_cdf_tk/client/api/spaces.py +117 -0
  62. cognite_toolkit/_cdf_tk/client/api/streams.py +65 -57
  63. cognite_toolkit/_cdf_tk/client/api/three_d.py +300 -283
  64. cognite_toolkit/_cdf_tk/client/api/timeseries.py +137 -0
  65. cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
  66. cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
  67. cognite_toolkit/_cdf_tk/client/api/views.py +139 -0
  68. cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
  69. cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
  70. cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
  71. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +10 -0
  72. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +358 -0
  73. cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +38 -0
  74. cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +9 -7
  75. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +23 -14
  76. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +12 -2
  77. cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +151 -0
  78. cognite_toolkit/_cdf_tk/client/http_client/_exception.py +13 -0
  79. cognite_toolkit/_cdf_tk/client/http_client/_item_classes.py +118 -0
  80. cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
  81. cognite_toolkit/_cdf_tk/client/request_classes/filters.py +113 -0
  82. cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
  83. cognite_toolkit/_cdf_tk/client/resource_classes/agent.py +130 -0
  84. cognite_toolkit/_cdf_tk/client/resource_classes/annotation.py +79 -0
  85. cognite_toolkit/_cdf_tk/client/resource_classes/apm_config.py +128 -0
  86. cognite_toolkit/_cdf_tk/client/resource_classes/asset.py +47 -0
  87. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +1 -1
  88. cognite_toolkit/_cdf_tk/client/resource_classes/cognite_file.py +53 -0
  89. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/__init__.py +168 -0
  90. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_constraints.py +37 -0
  91. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_container.py +50 -0
  92. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_model.py +73 -0
  93. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_types.py +116 -0
  94. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_indexes.py +26 -0
  95. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_instance.py +154 -0
  96. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_references.py +86 -0
  97. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_space.py +26 -0
  98. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view.py +143 -0
  99. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view_property.py +152 -0
  100. cognite_toolkit/_cdf_tk/client/resource_classes/dataset.py +35 -0
  101. cognite_toolkit/_cdf_tk/client/resource_classes/event.py +40 -0
  102. cognite_toolkit/_cdf_tk/client/resource_classes/extraction_pipeline.py +59 -0
  103. cognite_toolkit/_cdf_tk/client/resource_classes/filemetadata.py +52 -0
  104. cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
  105. cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +65 -0
  106. cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
  107. cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
  108. cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
  109. cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
  110. cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
  111. cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +63 -0
  112. cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
  113. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_destination.py +34 -0
  114. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_job.py +134 -0
  115. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_mapping.py +72 -0
  116. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/__init__.py +63 -0
  117. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_auth.py +63 -0
  118. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_base.py +26 -0
  119. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_certificate.py +20 -0
  120. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_eventhub.py +31 -0
  121. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_kafka.py +53 -0
  122. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_mqtt.py +36 -0
  123. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_rest.py +49 -0
  124. cognite_toolkit/_cdf_tk/client/resource_classes/identifiers.py +59 -0
  125. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +1 -1
  126. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +35 -1
  127. cognite_toolkit/_cdf_tk/client/resource_classes/label.py +27 -0
  128. cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
  129. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/canvas.py +48 -15
  130. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/charts.py +1 -1
  131. cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +84 -0
  132. cognite_toolkit/_cdf_tk/client/resource_classes/raw.py +44 -0
  133. cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +49 -0
  134. cognite_toolkit/_cdf_tk/client/resource_classes/resource_view_mapping.py +38 -0
  135. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
  136. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
  137. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
  138. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
  139. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
  140. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
  141. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +65 -0
  142. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +58 -0
  143. cognite_toolkit/_cdf_tk/client/resource_classes/search_config.py +54 -0
  144. cognite_toolkit/_cdf_tk/client/resource_classes/securitycategory.py +24 -0
  145. cognite_toolkit/_cdf_tk/client/resource_classes/sequence.py +45 -0
  146. cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
  147. cognite_toolkit/_cdf_tk/client/resource_classes/simulator_model.py +50 -0
  148. cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
  149. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +9 -26
  150. cognite_toolkit/_cdf_tk/client/resource_classes/three_d.py +135 -0
  151. cognite_toolkit/_cdf_tk/client/resource_classes/timeseries.py +52 -0
  152. cognite_toolkit/_cdf_tk/client/resource_classes/transformation.py +140 -0
  153. cognite_toolkit/_cdf_tk/client/resource_classes/workflow.py +27 -0
  154. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_trigger.py +63 -0
  155. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_version.py +155 -0
  156. cognite_toolkit/_cdf_tk/client/testing.py +31 -2
  157. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +103 -108
  158. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +22 -15
  159. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
  160. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +11 -10
  161. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +148 -57
  162. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
  163. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +22 -39
  164. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +29 -27
  165. cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
  166. cognite_toolkit/_cdf_tk/commands/_purge.py +8 -8
  167. cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
  168. cognite_toolkit/_cdf_tk/commands/build_cmd.py +12 -2
  169. cognite_toolkit/_cdf_tk/commands/build_v2/_module_parser.py +138 -0
  170. cognite_toolkit/_cdf_tk/commands/build_v2/_modules_parser.py +163 -0
  171. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +83 -96
  172. cognite_toolkit/_cdf_tk/commands/build_v2/{build_input.py → build_parameters.py} +8 -22
  173. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_modules.py +27 -0
  174. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_resource.py +22 -0
  175. cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
  176. cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
  177. cognite_toolkit/_cdf_tk/commands/run.py +1 -1
  178. cognite_toolkit/_cdf_tk/cruds/__init__.py +16 -6
  179. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +9 -5
  180. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  181. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +6 -2
  182. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +70 -89
  183. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
  184. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
  185. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
  186. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +14 -7
  187. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +50 -59
  188. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +1 -1
  189. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
  190. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +4 -3
  191. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
  192. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
  193. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +5 -4
  194. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
  195. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
  196. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +15 -31
  197. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +42 -47
  198. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +1 -1
  199. cognite_toolkit/_cdf_tk/data_classes/__init__.py +3 -0
  200. cognite_toolkit/_cdf_tk/data_classes/_issues.py +36 -0
  201. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +2 -1
  202. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +4 -0
  203. cognite_toolkit/_cdf_tk/feature_flags.py +8 -0
  204. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +2 -0
  205. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
  206. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  207. cognite_toolkit/_cdf_tk/resource_classes/simulator_model.py +17 -0
  208. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +13 -4
  209. cognite_toolkit/_cdf_tk/storageio/_applications.py +53 -15
  210. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +117 -107
  211. cognite_toolkit/_cdf_tk/storageio/_base.py +3 -1
  212. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
  213. cognite_toolkit/_cdf_tk/storageio/_file_content.py +64 -54
  214. cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
  215. cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
  216. cognite_toolkit/_cdf_tk/storageio/logger.py +162 -0
  217. cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
  218. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +20 -0
  219. cognite_toolkit/_cdf_tk/utils/__init__.py +11 -1
  220. cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
  221. cognite_toolkit/_cdf_tk/utils/interactive_select.py +8 -6
  222. cognite_toolkit/_cdf_tk/utils/modules.py +7 -0
  223. cognite_toolkit/_cdf_tk/utils/pip_validator.py +96 -0
  224. cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
  225. cognite_toolkit/_cdf_tk/utils/useful_types2.py +14 -0
  226. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  227. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  228. cognite_toolkit/_resources/cdf.toml +1 -1
  229. cognite_toolkit/_version.py +1 -1
  230. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/METADATA +13 -3
  231. cognite_toolkit-0.7.51.dist-info/RECORD +445 -0
  232. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/WHEEL +2 -2
  233. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -30
  234. cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -67
  235. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -112
  236. cognite_toolkit/_cdf_tk/commands/build_v2/build_issues.py +0 -27
  237. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -247
  238. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -4
  239. cognite_toolkit-0.7.39.dist-info/RECORD +0 -322
  240. /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +0 -0
  241. /cognite_toolkit/_cdf_tk/client/{data_classes → request_classes}/__init__.py +0 -0
  242. /cognite_toolkit/_cdf_tk/client/{data_classes/legacy → resource_classes}/__init__.py +0 -0
  243. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
  244. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/apm_config_v1.py +0 -0
  245. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extendable_cognite_file.py +0 -0
  246. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetadata.py +0 -0
  247. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetdata.py +0 -0
  248. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_timeseries.py +0 -0
  249. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/functions.py +0 -0
  250. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/graphql_data_models.py +0 -0
  251. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/instances.py +0 -0
  252. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/location_filters.py +0 -0
  253. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/migration.py +0 -0
  254. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/pending_instances_ids.py +0 -0
  255. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/project.py +0 -0
  256. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/raw.py +0 -0
  257. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/robotics.py +0 -0
  258. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/search_config.py +0 -0
  259. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/sequences.py +0 -0
  260. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/streamlit_.py +0 -0
  261. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.51.dist-info}/entry_points.txt +0 -0
@@ -15,24 +15,23 @@ from cognite.client.data_classes.data_modeling import (
15
15
  from cognite.client.exceptions import CogniteException
16
16
 
17
17
  from cognite_toolkit._cdf_tk.client import ToolkitClient
18
- from cognite_toolkit._cdf_tk.client.data_classes.charts_data import (
18
+ from cognite_toolkit._cdf_tk.client.resource_classes.charts_data import (
19
19
  ChartCoreTimeseries,
20
20
  ChartSource,
21
21
  ChartTimeseries,
22
22
  )
23
- from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceIdentifier
24
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.canvas import (
23
+ from cognite_toolkit._cdf_tk.client.resource_classes.instance_api import InstanceIdentifier, NodeReference
24
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.canvas import (
25
25
  ContainerReferenceApply,
26
26
  FdmInstanceContainerReferenceApply,
27
27
  IndustrialCanvas,
28
28
  IndustrialCanvasApply,
29
29
  )
30
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.charts import Chart, ChartWrite
31
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import ResourceViewMappingApply
32
- from cognite_toolkit._cdf_tk.client.data_classes.three_d import (
30
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.charts import Chart, ChartWrite
31
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import ResourceViewMappingApply
32
+ from cognite_toolkit._cdf_tk.client.resource_classes.three_d import (
33
+ AssetMappingClassicResponse,
33
34
  AssetMappingDMRequest,
34
- AssetMappingResponse,
35
- NodeReference,
36
35
  RevisionStatus,
37
36
  ThreeDModelResponse,
38
37
  )
@@ -47,22 +46,26 @@ from cognite_toolkit._cdf_tk.commands._migrate.issues import (
47
46
  CanvasMigrationIssue,
48
47
  ChartMigrationIssue,
49
48
  ConversionIssue,
50
- MigrationIssue,
51
49
  ThreeDModelMigrationIssue,
52
50
  )
53
51
  from cognite_toolkit._cdf_tk.constants import MISSING_INSTANCE_SPACE
54
52
  from cognite_toolkit._cdf_tk.exceptions import ToolkitMigrationError, ToolkitValueError
55
53
  from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
56
54
  from cognite_toolkit._cdf_tk.storageio._base import T_Selector
55
+ from cognite_toolkit._cdf_tk.storageio.logger import DataLogger, NoOpLogger
57
56
  from cognite_toolkit._cdf_tk.storageio.selectors import CanvasSelector, ChartSelector, ThreeDSelector
58
57
  from cognite_toolkit._cdf_tk.utils import humanize_collection
59
- from cognite_toolkit._cdf_tk.utils.useful_types import T_AssetCentricResourceExtended
58
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import T_AssetCentricResourceExtended
60
59
 
61
60
  from .data_classes import AssetCentricMapping
62
61
  from .selectors import AssetCentricMigrationSelector
63
62
 
64
63
 
65
64
  class DataMapper(Generic[T_Selector, T_ResourceResponse, T_ResourceRequest], ABC):
65
+ def __init__(self, client: ToolkitClient) -> None:
66
+ self.client = client
67
+ self.logger: DataLogger = NoOpLogger()
68
+
66
69
  def prepare(self, source_selector: T_Selector) -> None:
67
70
  """Prepare the data mapper with the given source selector.
68
71
 
@@ -74,14 +77,14 @@ class DataMapper(Generic[T_Selector, T_ResourceResponse, T_ResourceRequest], ABC
74
77
  pass
75
78
 
76
79
  @abstractmethod
77
- def map(self, source: Sequence[T_ResourceResponse]) -> Sequence[tuple[T_ResourceRequest | None, MigrationIssue]]:
80
+ def map(self, source: Sequence[T_ResourceResponse]) -> Sequence[T_ResourceRequest | None]:
78
81
  """Map a chunk of source data to the target format.
79
82
 
80
83
  Args:
81
84
  source: The source data chunk to be mapped.
82
85
 
83
86
  Returns:
84
- A tuple containing the mapped data and a list of any issues encountered during mapping.
87
+ A sequence of mapped target data.
85
88
 
86
89
  """
87
90
  raise NotImplementedError("Subclasses must implement this method.")
@@ -91,7 +94,7 @@ class AssetCentricMapper(
91
94
  DataMapper[AssetCentricMigrationSelector, AssetCentricMapping[T_AssetCentricResourceExtended], InstanceApply]
92
95
  ):
93
96
  def __init__(self, client: ToolkitClient) -> None:
94
- self.client = client
97
+ super().__init__(client)
95
98
  self._ingestion_view_by_id: dict[ViewId, View] = {}
96
99
  self._view_mapping_by_id: dict[str, ResourceViewMappingApply] = {}
97
100
  self._direct_relation_cache = DirectRelationCache(client)
@@ -119,14 +122,37 @@ class AssetCentricMapper(
119
122
 
120
123
  def map(
121
124
  self, source: Sequence[AssetCentricMapping[T_AssetCentricResourceExtended]]
122
- ) -> Sequence[tuple[InstanceApply | None, ConversionIssue]]:
125
+ ) -> Sequence[InstanceApply | None]:
123
126
  """Map a chunk of asset-centric data to InstanceApplyList format."""
124
127
  # We update the direct relation cache in bulk for all resources in the chunk.
125
128
  self._direct_relation_cache.update(item.resource for item in source)
126
- output: list[tuple[InstanceApply | None, ConversionIssue]] = []
129
+ output: list[InstanceApply | None] = []
130
+ issues: list[ConversionIssue] = []
127
131
  for item in source:
128
132
  instance, conversion_issue = self._map_single_item(item)
129
- output.append((instance, conversion_issue))
133
+ identifier = str(item.mapping.as_asset_centric_id())
134
+
135
+ if conversion_issue.missing_instance_space:
136
+ self.logger.tracker.add_issue(identifier, "Missing instance space")
137
+ if conversion_issue.failed_conversions:
138
+ self.logger.tracker.add_issue(identifier, "Failed conversions")
139
+ if conversion_issue.invalid_instance_property_types:
140
+ self.logger.tracker.add_issue(identifier, "Invalid instance property types")
141
+ if conversion_issue.missing_asset_centric_properties:
142
+ self.logger.tracker.add_issue(identifier, "Missing asset-centric properties")
143
+ if conversion_issue.missing_instance_properties:
144
+ self.logger.tracker.add_issue(identifier, "Missing instance properties")
145
+ if conversion_issue.ignored_asset_centric_properties:
146
+ self.logger.tracker.add_issue(identifier, "Ignored asset-centric properties")
147
+
148
+ if conversion_issue.has_issues:
149
+ issues.append(conversion_issue)
150
+
151
+ if instance is None:
152
+ self.logger.tracker.finalize_item(identifier, "failure")
153
+ output.append(instance)
154
+ if issues:
155
+ self.logger.log(issues)
130
156
  return output
131
157
 
132
158
  def _map_single_item(
@@ -155,15 +181,29 @@ class AssetCentricMapper(
155
181
 
156
182
 
157
183
  class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
158
- def __init__(self, client: ToolkitClient) -> None:
159
- self.client = client
160
-
161
- def map(self, source: Sequence[Chart]) -> Sequence[tuple[ChartWrite | None, MigrationIssue]]:
184
+ def map(self, source: Sequence[Chart]) -> Sequence[ChartWrite | None]:
162
185
  self._populate_cache(source)
163
- output: list[tuple[ChartWrite | None, MigrationIssue]] = []
186
+ output: list[ChartWrite | None] = []
187
+ issues: list[ChartMigrationIssue] = []
164
188
  for item in source:
165
189
  mapped_item, issue = self._map_single_item(item)
166
- output.append((mapped_item, issue))
190
+ identifier = item.external_id
191
+
192
+ if issue.missing_timeseries_ids:
193
+ self.logger.tracker.add_issue(identifier, "Missing timeseries IDs")
194
+ if issue.missing_timeseries_external_ids:
195
+ self.logger.tracker.add_issue(identifier, "Missing timeseries external IDs")
196
+ if issue.missing_timeseries_identifier:
197
+ self.logger.tracker.add_issue(identifier, "Missing timeseries identifier")
198
+
199
+ if issue.has_issues:
200
+ issues.append(issue)
201
+
202
+ if mapped_item is None:
203
+ self.logger.tracker.finalize_item(identifier, "failure")
204
+ output.append(mapped_item)
205
+ if issues:
206
+ self.logger.log(issues)
167
207
  return output
168
208
 
169
209
  def _populate_cache(self, source: Sequence[Chart]) -> None:
@@ -185,7 +225,7 @@ class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
185
225
  self.client.migration.lookup.time_series(external_id=list(timeseries_external_ids))
186
226
 
187
227
  def _map_single_item(self, item: Chart) -> tuple[ChartWrite | None, ChartMigrationIssue]:
188
- issue = ChartMigrationIssue(chart_external_id=item.external_id)
228
+ issue = ChartMigrationIssue(chart_external_id=item.external_id, id=item.external_id)
189
229
  time_series_collection = item.data.time_series_collection or []
190
230
  timeseries_core_collection = self._create_timeseries_core_collection(time_series_collection, issue)
191
231
  if issue.has_issues:
@@ -281,16 +321,30 @@ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvas
281
321
  DEFAULT_TIMESERIES_VIEW = ViewId("cdf_cdm", "CogniteTimeSeries", "v1")
282
322
 
283
323
  def __init__(self, client: ToolkitClient, dry_run: bool, skip_on_missing_ref: bool = False) -> None:
284
- self.client = client
324
+ super().__init__(client)
285
325
  self.dry_run = dry_run
286
326
  self.skip_on_missing_ref = skip_on_missing_ref
287
327
 
288
- def map(self, source: Sequence[IndustrialCanvas]) -> Sequence[tuple[IndustrialCanvasApply | None, MigrationIssue]]:
328
+ def map(self, source: Sequence[IndustrialCanvas]) -> Sequence[IndustrialCanvasApply | None]:
289
329
  self._populate_cache(source)
290
- output: list[tuple[IndustrialCanvasApply | None, MigrationIssue]] = []
330
+ output: list[IndustrialCanvasApply | None] = []
331
+ issues: list[CanvasMigrationIssue] = []
291
332
  for item in source:
292
333
  mapped_item, issue = self._map_single_item(item)
293
- output.append((mapped_item, issue))
334
+ identifier = item.as_id()
335
+
336
+ if issue.missing_reference_ids:
337
+ self.logger.tracker.add_issue(identifier, "Missing reference IDs")
338
+
339
+ if issue.has_issues:
340
+ issues.append(issue)
341
+
342
+ if mapped_item is None:
343
+ self.logger.tracker.finalize_item(identifier, "failure")
344
+
345
+ output.append(mapped_item)
346
+ if issues:
347
+ self.logger.log(issues)
294
348
  return output
295
349
 
296
350
  @property
@@ -341,10 +395,13 @@ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvas
341
395
 
342
396
  def _map_single_item(self, canvas: IndustrialCanvas) -> tuple[IndustrialCanvasApply | None, CanvasMigrationIssue]:
343
397
  update = canvas.as_write()
344
- issue = CanvasMigrationIssue(canvas_external_id=canvas.canvas.external_id, canvas_name=canvas.canvas.name)
398
+ issue = CanvasMigrationIssue(
399
+ canvas_external_id=canvas.canvas.external_id, canvas_name=canvas.canvas.name, id=canvas.canvas.name
400
+ )
345
401
 
346
402
  remaining_container_references: list[ContainerReferenceApply] = []
347
403
  new_fdm_references: list[FdmInstanceContainerReferenceApply] = []
404
+ uuid_generator: dict[str, str] = defaultdict(lambda: str(uuid4()))
348
405
  for ref in update.container_references or []:
349
406
  if ref.container_reference_type not in self.asset_centric_resource_types:
350
407
  remaining_container_references.append(ref)
@@ -354,7 +411,9 @@ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvas
354
411
  issue.missing_reference_ids.append(ref.as_asset_centric_id())
355
412
  else:
356
413
  consumer_view = self._get_consumer_view_id(ref.resource_id, ref.container_reference_type)
357
- fdm_ref = self.migrate_container_reference(ref, canvas.canvas.external_id, node_id, consumer_view)
414
+ fdm_ref = self.migrate_container_reference(
415
+ ref, canvas.canvas.external_id, node_id, consumer_view, uuid_generator
416
+ )
358
417
  new_fdm_references.append(fdm_ref)
359
418
  if issue.missing_reference_ids and self.skip_on_missing_ref:
360
419
  return None, issue
@@ -370,14 +429,22 @@ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvas
370
429
  f"Failed to create backup for canvas '{canvas.canvas.name}': {e!s}. "
371
430
  ) from e
372
431
 
432
+ # There might annotations or other components that reference the old IDs, so we need to update those as well.
433
+ update = update.replace_ids(uuid_generator)
434
+
373
435
  return update, issue
374
436
 
375
437
  @classmethod
376
438
  def migrate_container_reference(
377
- cls, reference: ContainerReferenceApply, canvas_external_id: str, instance_id: NodeId, consumer_view: ViewId
439
+ cls,
440
+ reference: ContainerReferenceApply,
441
+ canvas_external_id: str,
442
+ instance_id: NodeId,
443
+ consumer_view: ViewId,
444
+ uuid_generator: dict[str, str],
378
445
  ) -> FdmInstanceContainerReferenceApply:
379
446
  """Migrate a single container reference by replacing the asset-centric ID with the data model instance ID."""
380
- new_id = str(uuid4())
447
+ new_id = uuid_generator[reference.id_]
381
448
  new_external_id = f"{canvas_external_id}_{new_id}"
382
449
  return FdmInstanceContainerReferenceApply(
383
450
  external_id=new_external_id,
@@ -400,17 +467,26 @@ class CanvasMapper(DataMapper[CanvasSelector, IndustrialCanvas, IndustrialCanvas
400
467
 
401
468
 
402
469
  class ThreeDMapper(DataMapper[ThreeDSelector, ThreeDModelResponse, ThreeDMigrationRequest]):
403
- def __init__(self, client: ToolkitClient) -> None:
404
- self.client = client
405
-
406
- def map(
407
- self, source: Sequence[ThreeDModelResponse]
408
- ) -> Sequence[tuple[ThreeDMigrationRequest | None, MigrationIssue]]:
470
+ def map(self, source: Sequence[ThreeDModelResponse]) -> Sequence[ThreeDMigrationRequest | None]:
409
471
  self._populate_cache(source)
410
- output: list[tuple[ThreeDMigrationRequest | None, MigrationIssue]] = []
472
+ output: list[ThreeDMigrationRequest | None] = []
473
+ issues: list[ThreeDModelMigrationIssue] = []
411
474
  for item in source:
412
475
  mapped_item, issue = self._map_single_item(item)
413
- output.append((mapped_item, issue))
476
+ identifier = item.name
477
+
478
+ if issue.error_message:
479
+ for error in issue.error_message:
480
+ self.logger.tracker.add_issue(identifier, error)
481
+
482
+ if issue.has_issues:
483
+ issues.append(issue)
484
+
485
+ if mapped_item is None:
486
+ self.logger.tracker.finalize_item(identifier, "failure")
487
+ output.append(mapped_item)
488
+ if issues:
489
+ self.logger.log(issues)
414
490
  return output
415
491
 
416
492
  def _populate_cache(self, source: Sequence[ThreeDModelResponse]) -> None:
@@ -423,7 +499,7 @@ class ThreeDMapper(DataMapper[ThreeDSelector, ThreeDModelResponse, ThreeDMigrati
423
499
  def _map_single_item(
424
500
  self, item: ThreeDModelResponse
425
501
  ) -> tuple[ThreeDMigrationRequest | None, ThreeDModelMigrationIssue]:
426
- issue = ThreeDModelMigrationIssue(model_name=item.name, model_id=item.id)
502
+ issue = ThreeDModelMigrationIssue(model_name=item.name, model_id=item.id, id=item.name)
427
503
  instance_space: str | None = None
428
504
  last_revision_id: int | None = None
429
505
  model_type: Literal["CAD", "PointCloud", "Image360"] | None = None
@@ -450,15 +526,15 @@ class ThreeDMapper(DataMapper[ThreeDSelector, ThreeDModelResponse, ThreeDMigrati
450
526
  return None, issue
451
527
 
452
528
  mapped_request = ThreeDMigrationRequest(
453
- modelId=item.id,
529
+ model_id=item.id,
454
530
  type=model_type,
455
531
  space=instance_space,
456
532
  revision=ThreeDRevisionMigrationRequest(
457
533
  space=instance_space,
458
534
  type=model_type,
459
- revisionId=last_revision_id,
535
+ revision_id=last_revision_id,
460
536
  model=Model(
461
- instanceId=InstanceIdentifier(
537
+ instance_id=InstanceIdentifier(
462
538
  space=instance_space,
463
539
  external_id=f"cog_3d_model_{item.id!s}",
464
540
  )
@@ -478,21 +554,31 @@ class ThreeDMapper(DataMapper[ThreeDSelector, ThreeDModelResponse, ThreeDMigrati
478
554
  return None
479
555
 
480
556
 
481
- class ThreeDAssetMapper(DataMapper[ThreeDSelector, AssetMappingResponse, AssetMappingDMRequest]):
482
- def __init__(self, client: ToolkitClient) -> None:
483
- self.client = client
484
-
485
- def map(
486
- self, source: Sequence[AssetMappingResponse]
487
- ) -> Sequence[tuple[AssetMappingDMRequest | None, MigrationIssue]]:
488
- output: list[tuple[AssetMappingDMRequest | None, MigrationIssue]] = []
557
+ class ThreeDAssetMapper(DataMapper[ThreeDSelector, AssetMappingClassicResponse, AssetMappingDMRequest]):
558
+ def map(self, source: Sequence[AssetMappingClassicResponse]) -> Sequence[AssetMappingDMRequest | None]:
559
+ output: list[AssetMappingDMRequest | None] = []
560
+ issues: list[ThreeDModelMigrationIssue] = []
489
561
  self._populate_cache(source)
490
562
  for item in source:
491
563
  mapped_item, issue = self._map_single_item(item)
492
- output.append((mapped_item, issue))
564
+ identifier = f"AssetMapping_{item.model_id!s}_{item.revision_id!s}_{item.asset_id!s}"
565
+
566
+ if issue.error_message:
567
+ for error in issue.error_message:
568
+ self.logger.tracker.add_issue(identifier, error)
569
+
570
+ if issue.has_issues:
571
+ issues.append(issue)
572
+
573
+ if mapped_item is None:
574
+ self.logger.tracker.finalize_item(identifier, "failure")
575
+
576
+ output.append(mapped_item)
577
+ if issues:
578
+ self.logger.log(issues)
493
579
  return output
494
580
 
495
- def _populate_cache(self, source: Sequence[AssetMappingResponse]) -> None:
581
+ def _populate_cache(self, source: Sequence[AssetMappingClassicResponse]) -> None:
496
582
  asset_ids: set[int] = set()
497
583
  for mapping in source:
498
584
  if mapping.asset_id is not None:
@@ -500,21 +586,26 @@ class ThreeDAssetMapper(DataMapper[ThreeDSelector, AssetMappingResponse, AssetMa
500
586
  self.client.migration.lookup.assets(list(asset_ids))
501
587
 
502
588
  def _map_single_item(
503
- self, item: AssetMappingResponse
589
+ self, item: AssetMappingClassicResponse
504
590
  ) -> tuple[AssetMappingDMRequest | None, ThreeDModelMigrationIssue]:
505
- issue = ThreeDModelMigrationIssue(model_name=f"AssetMapping_{item.model_id}", model_id=item.model_id)
591
+ issue = ThreeDModelMigrationIssue(
592
+ model_name=f"AssetMapping_{item.model_id}", model_id=item.model_id, id=f"AssetMapping_{item.model_id}"
593
+ )
506
594
  asset_instance_id = item.asset_instance_id
507
595
  if item.asset_id and asset_instance_id is None:
508
596
  asset_node_id = self.client.migration.lookup.assets(item.asset_id)
509
597
  if asset_node_id is None:
510
598
  issue.error_message.append(f"Missing asset instance for asset ID {item.asset_id!r}")
511
599
  return None, issue
512
- asset_instance_id = NodeReference(space=asset_node_id.space, externalId=asset_node_id.external_id)
600
+ asset_instance_id = NodeReference(space=asset_node_id.space, external_id=asset_node_id.external_id)
513
601
 
514
602
  if asset_instance_id is None:
515
603
  issue.error_message.append("Neither assetInstanceId nor assetId provided for mapping.")
516
604
  return None, issue
517
605
  mapped_request = AssetMappingDMRequest(
518
- modelId=item.model_id, revisionId=item.revision_id, nodeId=item.node_id, assetInstanceId=asset_instance_id
606
+ model_id=item.model_id,
607
+ revision_id=item.revision_id,
608
+ node_id=item.node_id,
609
+ asset_instance_id=asset_instance_id,
519
610
  )
520
611
  return mapped_request, issue
@@ -2,7 +2,7 @@ from functools import lru_cache
2
2
 
3
3
  from cognite.client.data_classes.data_modeling import ViewId
4
4
 
5
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import ResourceViewMappingApply
5
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import ResourceViewMappingApply
6
6
 
7
7
  ASSET_ID = "cdf_asset_mapping"
8
8
  EVENT_ID = "cdf_event_mapping"
@@ -1,34 +1,27 @@
1
- import json
2
- from typing import Any, ClassVar
1
+ from typing import Any, Literal
3
2
 
4
- from cognite.client.data_classes.data_modeling import NodeId
5
- from cognite.client.utils._identifier import InstanceId
6
- from cognite.client.utils._text import to_camel_case
7
3
  from pydantic import BaseModel, Field, field_serializer
4
+ from pydantic.alias_generators import to_camel
8
5
 
9
- from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import AssetCentricId
10
- from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
6
+ from cognite_toolkit._cdf_tk.client.resource_classes.data_modeling import NodeReference
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.legacy.migration import AssetCentricId
8
+ from cognite_toolkit._cdf_tk.storageio.logger import LogEntry
11
9
 
12
10
 
13
- class MigrationObject(BaseModel, alias_generator=to_camel_case, extra="ignore", populate_by_name=True): ...
14
-
15
-
16
- class MigrationIssue(MigrationObject):
11
+ class MigrationIssue(LogEntry):
17
12
  """Represents an issue encountered during migration."""
18
13
 
19
- type: ClassVar[str]
20
-
21
- def dump(self) -> dict[str, JsonVal]:
22
- # Dump json to ensure it is serializable
23
- dumped = json.loads(self.model_dump_json(by_alias=True))
24
- dumped["type"] = self.type
25
- return dumped
14
+ type: str
26
15
 
27
16
  @property
28
17
  def has_issues(self) -> bool:
29
18
  """Check if there are any issues recorded in this MigrationIssue."""
30
19
  return True
31
20
 
21
+ def dump(self) -> dict[str, Any]:
22
+ """Serialize the MigrationIssue to a dictionary."""
23
+ return self.model_dump(by_alias=True)
24
+
32
25
 
33
26
  class ThreeDModelMigrationIssue(MigrationIssue):
34
27
  """Represents a 3D model migration issue encountered during migration.
@@ -37,7 +30,7 @@ class ThreeDModelMigrationIssue(MigrationIssue):
37
30
  model_external_id (str): The external ID of the 3D model that could not be migrated.
38
31
  """
39
32
 
40
- type: ClassVar[str] = "threeDModelMigration"
33
+ type: Literal["threeDModelMigration"] = "threeDModelMigration"
41
34
  model_name: str
42
35
  model_id: int
43
36
  error_message: list[str] = Field(default_factory=list)
@@ -55,7 +48,7 @@ class ChartMigrationIssue(MigrationIssue):
55
48
  chart_external_id (str): The external ID of the chart that could not be migrated.
56
49
  """
57
50
 
58
- type: ClassVar[str] = "chartMigration"
51
+ type: Literal["chartMigration"] = "chartMigration"
59
52
  chart_external_id: str
60
53
  missing_timeseries_ids: list[int] = Field(default_factory=list)
61
54
  missing_timeseries_external_ids: list[str] = Field(default_factory=list)
@@ -70,7 +63,7 @@ class ChartMigrationIssue(MigrationIssue):
70
63
 
71
64
 
72
65
  class CanvasMigrationIssue(MigrationIssue):
73
- type: ClassVar[str] = "canvasMigration"
66
+ type: Literal["canvasMigration"] = "canvasMigration"
74
67
  canvas_external_id: str
75
68
  canvas_name: str
76
69
  missing_reference_ids: list[AssetCentricId] = Field(default_factory=list)
@@ -84,7 +77,7 @@ class CanvasMigrationIssue(MigrationIssue):
84
77
  class ReadIssue(MigrationIssue):
85
78
  """Represents a read issue encountered during migration."""
86
79
 
87
- type: ClassVar[str] = "read"
80
+ ...
88
81
 
89
82
 
90
83
  class ReadFileIssue(ReadIssue):
@@ -95,7 +88,7 @@ class ReadFileIssue(ReadIssue):
95
88
  error (str | None): An optional error message providing additional details about the read issue.
96
89
  """
97
90
 
98
- type: ClassVar[str] = "fileRead"
91
+ type: Literal["fileRead"] = "fileRead"
99
92
 
100
93
  row_no: int
101
94
  error: str | None = None
@@ -109,7 +102,7 @@ class ReadAPIIssue(ReadIssue):
109
102
  error (str | None): An optional error message providing additional details about the read issue.
110
103
  """
111
104
 
112
- type: ClassVar[str] = "apiRead"
105
+ type: Literal["apiRead"] = "apiRead"
113
106
  asset_centric_id: AssetCentricId
114
107
  error: str | None = None
115
108
 
@@ -121,7 +114,7 @@ class ReadAPIIssue(ReadIssue):
121
114
  }
122
115
 
123
116
 
124
- class FailedConversion(MigrationObject):
117
+ class FailedConversion(BaseModel, alias_generator=to_camel, extra="ignore", populate_by_name=True):
125
118
  """Represents a property that failed to convert during migration.
126
119
 
127
120
  Attributes:
@@ -135,7 +128,7 @@ class FailedConversion(MigrationObject):
135
128
  error: str
136
129
 
137
130
 
138
- class InvalidPropertyDataType(MigrationObject):
131
+ class InvalidPropertyDataType(BaseModel, alias_generator=to_camel, extra="ignore", populate_by_name=True):
139
132
  """Represents a property with an invalid type during migration.
140
133
 
141
134
  Attributes:
@@ -160,9 +153,9 @@ class ConversionIssue(MigrationIssue):
160
153
  failed_conversions (list[FailedConversion]): List of properties that failed to convert with reasons.
161
154
  """
162
155
 
163
- type: ClassVar[str] = "conversion"
156
+ type: Literal["conversion"] = "conversion"
164
157
  asset_centric_id: AssetCentricId
165
- instance_id: InstanceId
158
+ instance_id: NodeReference
166
159
  missing_asset_centric_properties: list[str] = Field(default_factory=list)
167
160
  missing_instance_properties: list[str] = Field(default_factory=list)
168
161
  invalid_instance_property_types: list[InvalidPropertyDataType] = Field(default_factory=list)
@@ -181,10 +174,6 @@ class ConversionIssue(MigrationIssue):
181
174
  or self.missing_instance_space
182
175
  )
183
176
 
184
- @field_serializer("instance_id")
185
- def serialize_instance_id(self, instance_id: NodeId) -> dict[str, str]:
186
- return instance_id.dump(include_instance_type=True)
187
-
188
177
  @field_serializer("asset_centric_id")
189
178
  def serialize_asset_centric_id(self, asset_centric_id: AssetCentricId) -> dict[str, Any]:
190
179
  return {
@@ -197,16 +186,10 @@ class WriteIssue(MigrationIssue):
197
186
  """Represents a write issue encountered during migration.
198
187
 
199
188
  Attributes:
200
- instance_id (InstanceId): The InstanceId of the data model instance that could not be written.
201
189
  status_code (int): The HTTP status code returned during the write operation.
202
190
  message (str | None): An optional message providing additional details about the write issue.
203
191
  """
204
192
 
205
- type: ClassVar[str] = "write"
206
- instance_id: InstanceId
193
+ type: Literal["write"] = "write"
207
194
  status_code: int
208
195
  message: str | None = None
209
-
210
- @field_serializer("instance_id")
211
- def serialize_instance_id(self, instance_id: NodeId) -> dict[str, str]:
212
- return instance_id.dump(include_instance_type=True)