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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. cognite_toolkit/_cdf.py +5 -6
  2. cognite_toolkit/_cdf_tk/apps/__init__.py +2 -0
  3. cognite_toolkit/_cdf_tk/apps/_core_app.py +7 -1
  4. cognite_toolkit/_cdf_tk/apps/_download_app.py +2 -2
  5. cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
  6. cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
  7. cognite_toolkit/_cdf_tk/apps/_migrate_app.py +183 -8
  8. cognite_toolkit/_cdf_tk/builders/_function.py +81 -9
  9. cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
  10. cognite_toolkit/_cdf_tk/client/_resource_base.py +187 -0
  11. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +44 -12
  12. cognite_toolkit/_cdf_tk/client/api/agents.py +107 -0
  13. cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
  14. cognite_toolkit/_cdf_tk/client/api/assets.py +130 -0
  15. cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
  16. cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
  17. cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
  18. cognite_toolkit/_cdf_tk/client/api/events.py +129 -0
  19. cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
  20. cognite_toolkit/_cdf_tk/client/api/filemetadata.py +176 -0
  21. cognite_toolkit/_cdf_tk/client/api/function_schedules.py +115 -0
  22. cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
  23. cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
  24. cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
  25. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
  26. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
  27. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
  28. cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
  29. cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
  30. cognite_toolkit/_cdf_tk/client/api/infield.py +40 -35
  31. cognite_toolkit/_cdf_tk/client/api/instances.py +139 -0
  32. cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
  33. cognite_toolkit/_cdf_tk/client/api/{canvas.py → legacy/canvas.py} +16 -8
  34. cognite_toolkit/_cdf_tk/client/api/{charts.py → legacy/charts.py} +1 -1
  35. cognite_toolkit/_cdf_tk/client/api/{extended_data_modeling.py → legacy/extended_data_modeling.py} +1 -1
  36. cognite_toolkit/_cdf_tk/client/api/{extended_files.py → legacy/extended_files.py} +2 -2
  37. cognite_toolkit/_cdf_tk/client/api/{extended_functions.py → legacy/extended_functions.py} +9 -9
  38. cognite_toolkit/_cdf_tk/client/api/{extended_raw.py → legacy/extended_raw.py} +1 -1
  39. cognite_toolkit/_cdf_tk/client/api/{extended_timeseries.py → legacy/extended_timeseries.py} +5 -2
  40. cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +112 -0
  41. cognite_toolkit/_cdf_tk/client/api/legacy/robotics/__init__.py +8 -0
  42. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/capabilities.py +1 -1
  43. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/data_postprocessing.py +1 -1
  44. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/frames.py +1 -1
  45. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/locations.py +1 -1
  46. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/maps.py +1 -1
  47. cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/robots.py +2 -2
  48. cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +53 -0
  49. cognite_toolkit/_cdf_tk/client/api/location_filters.py +140 -75
  50. cognite_toolkit/_cdf_tk/client/api/migration.py +2 -3
  51. cognite_toolkit/_cdf_tk/client/api/project.py +9 -8
  52. cognite_toolkit/_cdf_tk/client/api/raw.py +204 -0
  53. cognite_toolkit/_cdf_tk/client/api/relationships.py +133 -0
  54. cognite_toolkit/_cdf_tk/client/api/robotics.py +19 -0
  55. cognite_toolkit/_cdf_tk/client/api/robotics_capabilities.py +127 -0
  56. cognite_toolkit/_cdf_tk/client/api/robotics_data_postprocessing.py +138 -0
  57. cognite_toolkit/_cdf_tk/client/api/robotics_frames.py +122 -0
  58. cognite_toolkit/_cdf_tk/client/api/robotics_locations.py +127 -0
  59. cognite_toolkit/_cdf_tk/client/api/robotics_maps.py +122 -0
  60. cognite_toolkit/_cdf_tk/client/api/robotics_robots.py +122 -0
  61. cognite_toolkit/_cdf_tk/client/api/search.py +2 -2
  62. cognite_toolkit/_cdf_tk/client/api/search_config.py +83 -31
  63. cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
  64. cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
  65. cognite_toolkit/_cdf_tk/client/api/simulator_models.py +154 -0
  66. cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
  67. cognite_toolkit/_cdf_tk/client/api/spaces.py +117 -0
  68. cognite_toolkit/_cdf_tk/client/api/streams.py +68 -56
  69. cognite_toolkit/_cdf_tk/client/api/three_d.py +385 -34
  70. cognite_toolkit/_cdf_tk/client/api/timeseries.py +137 -0
  71. cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
  72. cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
  73. cognite_toolkit/_cdf_tk/client/api/views.py +139 -0
  74. cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
  75. cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
  76. cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
  77. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +10 -0
  78. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +358 -0
  79. cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +38 -0
  80. cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +30 -0
  81. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +26 -16
  82. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +18 -2
  83. cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +151 -0
  84. cognite_toolkit/_cdf_tk/client/http_client/_exception.py +13 -0
  85. cognite_toolkit/_cdf_tk/client/http_client/_item_classes.py +118 -0
  86. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +5 -2
  87. cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
  88. cognite_toolkit/_cdf_tk/client/request_classes/filters.py +113 -0
  89. cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
  90. cognite_toolkit/_cdf_tk/client/resource_classes/__init__.py +0 -0
  91. cognite_toolkit/_cdf_tk/client/resource_classes/agent.py +130 -0
  92. cognite_toolkit/_cdf_tk/client/resource_classes/annotation.py +79 -0
  93. cognite_toolkit/_cdf_tk/client/resource_classes/apm_config.py +128 -0
  94. cognite_toolkit/_cdf_tk/client/resource_classes/asset.py +47 -0
  95. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +1 -1
  96. cognite_toolkit/_cdf_tk/client/resource_classes/cognite_file.py +53 -0
  97. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/__init__.py +168 -0
  98. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_constraints.py +37 -0
  99. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_container.py +50 -0
  100. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_model.py +73 -0
  101. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_types.py +116 -0
  102. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_indexes.py +26 -0
  103. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_instance.py +154 -0
  104. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_references.py +86 -0
  105. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_space.py +26 -0
  106. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view.py +143 -0
  107. cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view_property.py +152 -0
  108. cognite_toolkit/_cdf_tk/client/resource_classes/dataset.py +35 -0
  109. cognite_toolkit/_cdf_tk/client/resource_classes/event.py +40 -0
  110. cognite_toolkit/_cdf_tk/client/resource_classes/extraction_pipeline.py +59 -0
  111. cognite_toolkit/_cdf_tk/client/resource_classes/filemetadata.py +52 -0
  112. cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
  113. cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +65 -0
  114. cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
  115. cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
  116. cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
  117. cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
  118. cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
  119. cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +63 -0
  120. cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
  121. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_destination.py +34 -0
  122. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_job.py +134 -0
  123. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_mapping.py +72 -0
  124. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/__init__.py +63 -0
  125. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_auth.py +63 -0
  126. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_base.py +26 -0
  127. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_certificate.py +20 -0
  128. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_eventhub.py +31 -0
  129. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_kafka.py +53 -0
  130. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_mqtt.py +36 -0
  131. cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_rest.py +49 -0
  132. cognite_toolkit/_cdf_tk/client/resource_classes/identifiers.py +59 -0
  133. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +1 -1
  134. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +53 -14
  135. cognite_toolkit/_cdf_tk/client/resource_classes/label.py +27 -0
  136. cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
  137. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/canvas.py +48 -15
  138. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/charts.py +1 -1
  139. cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +84 -0
  140. cognite_toolkit/_cdf_tk/client/resource_classes/raw.py +44 -0
  141. cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +49 -0
  142. cognite_toolkit/_cdf_tk/client/resource_classes/resource_view_mapping.py +38 -0
  143. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
  144. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
  145. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
  146. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
  147. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
  148. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
  149. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +65 -0
  150. cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +58 -0
  151. cognite_toolkit/_cdf_tk/client/resource_classes/search_config.py +54 -0
  152. cognite_toolkit/_cdf_tk/client/resource_classes/securitycategory.py +24 -0
  153. cognite_toolkit/_cdf_tk/client/resource_classes/sequence.py +45 -0
  154. cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
  155. cognite_toolkit/_cdf_tk/client/resource_classes/simulator_model.py +50 -0
  156. cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
  157. cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +9 -26
  158. cognite_toolkit/_cdf_tk/client/resource_classes/three_d.py +135 -0
  159. cognite_toolkit/_cdf_tk/client/resource_classes/timeseries.py +52 -0
  160. cognite_toolkit/_cdf_tk/client/resource_classes/transformation.py +140 -0
  161. cognite_toolkit/_cdf_tk/client/resource_classes/workflow.py +27 -0
  162. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_trigger.py +63 -0
  163. cognite_toolkit/_cdf_tk/client/resource_classes/workflow_version.py +155 -0
  164. cognite_toolkit/_cdf_tk/client/testing.py +54 -17
  165. cognite_toolkit/_cdf_tk/commands/__init__.py +1 -0
  166. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +103 -108
  167. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +29 -16
  168. cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
  169. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +38 -6
  170. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +262 -36
  171. cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +1 -0
  172. cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
  173. cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +39 -38
  174. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +227 -8
  175. cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
  176. cognite_toolkit/_cdf_tk/commands/_purge.py +14 -16
  177. cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
  178. cognite_toolkit/_cdf_tk/commands/build_cmd.py +12 -2
  179. cognite_toolkit/_cdf_tk/commands/build_v2/__init__.py +0 -0
  180. cognite_toolkit/_cdf_tk/commands/build_v2/_module_parser.py +138 -0
  181. cognite_toolkit/_cdf_tk/commands/build_v2/_modules_parser.py +163 -0
  182. cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +228 -0
  183. cognite_toolkit/_cdf_tk/commands/build_v2/build_parameters.py +71 -0
  184. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_modules.py +27 -0
  185. cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_resource.py +22 -0
  186. cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
  187. cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
  188. cognite_toolkit/_cdf_tk/commands/run.py +1 -1
  189. cognite_toolkit/_cdf_tk/cruds/__init__.py +16 -6
  190. cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +9 -5
  191. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
  192. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +6 -2
  193. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +70 -89
  194. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
  195. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
  196. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
  197. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +34 -25
  198. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +50 -59
  199. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +14 -2
  200. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
  201. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +4 -3
  202. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
  203. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
  204. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +5 -4
  205. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
  206. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
  207. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +15 -31
  208. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +42 -47
  209. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +49 -14
  210. cognite_toolkit/_cdf_tk/data_classes/__init__.py +3 -0
  211. cognite_toolkit/_cdf_tk/data_classes/_issues.py +36 -0
  212. cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +2 -1
  213. cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +1 -0
  214. cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +4 -0
  215. cognite_toolkit/_cdf_tk/feature_flags.py +8 -0
  216. cognite_toolkit/_cdf_tk/resource_classes/__init__.py +2 -0
  217. cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
  218. cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
  219. cognite_toolkit/_cdf_tk/resource_classes/simulator_model.py +17 -0
  220. cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +173 -5
  221. cognite_toolkit/_cdf_tk/storageio/_applications.py +53 -15
  222. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +117 -107
  223. cognite_toolkit/_cdf_tk/storageio/_base.py +3 -1
  224. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
  225. cognite_toolkit/_cdf_tk/storageio/_file_content.py +65 -56
  226. cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
  227. cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
  228. cognite_toolkit/_cdf_tk/storageio/logger.py +162 -0
  229. cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +10 -1
  230. cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
  231. cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
  232. cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +20 -0
  233. cognite_toolkit/_cdf_tk/utils/__init__.py +11 -1
  234. cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
  235. cognite_toolkit/_cdf_tk/utils/interactive_select.py +53 -4
  236. cognite_toolkit/_cdf_tk/utils/modules.py +7 -0
  237. cognite_toolkit/_cdf_tk/utils/pip_validator.py +96 -0
  238. cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
  239. cognite_toolkit/_cdf_tk/utils/useful_types2.py +14 -0
  240. cognite_toolkit/_cdf_tk/validation.py +4 -0
  241. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  242. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  243. cognite_toolkit/_resources/cdf.toml +1 -1
  244. cognite_toolkit/_version.py +1 -1
  245. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/METADATA +13 -3
  246. cognite_toolkit-0.7.51.dist-info/RECORD +445 -0
  247. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/WHEEL +2 -2
  248. cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -3
  249. cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -17
  250. cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -87
  251. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -47
  252. cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
  253. cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -187
  254. cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -4
  255. cognite_toolkit-0.7.30.dist-info/RECORD +0 -316
  256. /cognite_toolkit/_cdf_tk/client/{data_classes → api/legacy}/__init__.py +0 -0
  257. /cognite_toolkit/_cdf_tk/client/api/{dml.py → legacy/dml.py} +0 -0
  258. /cognite_toolkit/_cdf_tk/client/api/{fixed_transformations.py → legacy/fixed_transformations.py} +0 -0
  259. /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/api.py +0 -0
  260. /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/utlis.py +0 -0
  261. /cognite_toolkit/_cdf_tk/{prototypes/commands → client/request_classes}/__init__.py +0 -0
  262. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
  263. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/apm_config_v1.py +0 -0
  264. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extendable_cognite_file.py +0 -0
  265. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetadata.py +0 -0
  266. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetdata.py +0 -0
  267. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_timeseries.py +0 -0
  268. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/functions.py +0 -0
  269. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/graphql_data_models.py +0 -0
  270. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/instances.py +0 -0
  271. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/location_filters.py +0 -0
  272. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/migration.py +0 -0
  273. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/pending_instances_ids.py +0 -0
  274. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/project.py +0 -0
  275. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/raw.py +0 -0
  276. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/robotics.py +0 -0
  277. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/search_config.py +0 -0
  278. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/sequences.py +0 -0
  279. /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/streamlit_.py +0 -0
  280. /cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -0
  281. {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,26 @@
1
+ from abc import ABC
2
+ from typing import Annotated, Literal
3
+
4
+ from pydantic import Field, TypeAdapter
5
+
6
+ from cognite_toolkit._cdf_tk.client._resource_base import BaseModelObject
7
+
8
+
9
+ class IndexDefinition(BaseModelObject, ABC):
10
+ index_type: str
11
+ properties: list[str]
12
+
13
+
14
+ class BtreeIndex(IndexDefinition):
15
+ index_type: Literal["btree"] = "btree"
16
+ by_space: bool | None = None
17
+ cursorable: bool | None = None
18
+
19
+
20
+ class InvertedIndex(IndexDefinition):
21
+ index_type: Literal["inverted"] = "inverted"
22
+
23
+
24
+ Index = Annotated[BtreeIndex | InvertedIndex, Field(discriminator="index_type")]
25
+
26
+ IndexAdapter: TypeAdapter[Index] = TypeAdapter(Index)
@@ -0,0 +1,154 @@
1
+ from abc import ABC
2
+ from typing import Annotated, Any, Generic, Literal, TypeAlias
3
+
4
+ from pydantic import Field, JsonValue, field_serializer, field_validator
5
+
6
+ from cognite_toolkit._cdf_tk.client._resource_base import (
7
+ BaseModelObject,
8
+ RequestResource,
9
+ ResponseResource,
10
+ T_RequestResource,
11
+ )
12
+ from cognite_toolkit._cdf_tk.client.resource_classes.instance_api import TypedEdgeIdentifier, TypedNodeIdentifier
13
+
14
+ from ._references import ContainerReference, NodeReference, ViewReference
15
+
16
+
17
+ class InstanceDefinition(BaseModelObject, ABC):
18
+ """Base class for node and edge instances."""
19
+
20
+ instance_type: str # "node" | "edge"
21
+ space: str
22
+ external_id: str
23
+
24
+
25
+ class InstanceSource(BaseModelObject):
26
+ source: ViewReference | ContainerReference
27
+ properties: dict[str, JsonValue] | None = None
28
+
29
+
30
+ class InstanceRequestDefinition(InstanceDefinition, RequestResource, ABC):
31
+ existing_version: int | None = None
32
+ sources: list[InstanceSource]
33
+
34
+
35
+ class InstanceResponseDefinition(InstanceDefinition, ResponseResource, Generic[T_RequestResource], ABC):
36
+ version: int
37
+ created_time: int
38
+ last_updated_time: int
39
+ deleted_time: int | None = None
40
+ properties: dict[ViewReference | ContainerReference, dict[str, JsonValue]] | None = None
41
+
42
+ @field_validator("properties", mode="before")
43
+ def parse_reference(cls, value: Any) -> Any:
44
+ if not isinstance(value, dict):
45
+ return value
46
+ parsed: dict[ViewReference | ContainerReference, dict[str, Any]] = {}
47
+ for space, inner_dict in value.items():
48
+ if not isinstance(inner_dict, dict) or not isinstance(space, str):
49
+ raise ValueError(
50
+ f"Invalid properties format expected dict[str, dict[...]], got: dict[{type(space).__name__}, {type(inner_dict).__name__}]"
51
+ )
52
+ for view_or_container_identifier, prop in inner_dict.items():
53
+ if not isinstance(view_or_container_identifier, str):
54
+ raise ValueError(
55
+ "Invalid properties format expected dict[str, dict[str, ...]]], "
56
+ f"got: dict[{type(space).__name__}, "
57
+ f"dict[{type(view_or_container_identifier).__name__}, ...]]"
58
+ )
59
+ source_ref: ViewReference | ContainerReference
60
+ if "/" in view_or_container_identifier:
61
+ external_id, version = view_or_container_identifier.split("/", 1)
62
+ source_ref = ViewReference(space=space, external_id=external_id, version=version)
63
+ else:
64
+ source_ref = ContainerReference(space=space, external_id=view_or_container_identifier)
65
+ parsed[source_ref] = prop
66
+ return parsed
67
+
68
+ @field_serializer("properties", mode="plain")
69
+ def serialize_properties(self, value: dict[ViewReference | ContainerReference, dict[str, Any]] | None) -> Any:
70
+ if value is None:
71
+ return None
72
+ serialized: dict[str, dict[str, Any]] = {}
73
+ for source_ref, props in value.items():
74
+ space = source_ref.space
75
+ if space not in serialized:
76
+ serialized[space] = {}
77
+ if isinstance(source_ref, ViewReference):
78
+ identifier = f"{source_ref.external_id}/{source_ref.version}"
79
+ else:
80
+ identifier = source_ref.external_id
81
+ serialized[space][identifier] = props
82
+ return serialized
83
+
84
+
85
+ class NodeRequest(InstanceRequestDefinition):
86
+ """A node request resource."""
87
+
88
+ instance_type: Literal["node"] = "node"
89
+ type: NodeReference | None = None
90
+
91
+ def as_id(self) -> TypedNodeIdentifier:
92
+ return TypedNodeIdentifier(space=self.space, external_id=self.external_id)
93
+
94
+
95
+ class EdgeRequest(InstanceRequestDefinition):
96
+ """An edge request resource."""
97
+
98
+ instance_type: Literal["edge"] = "edge"
99
+ type: NodeReference
100
+ start_node: NodeReference
101
+ end_node: NodeReference
102
+
103
+ def as_id(self) -> TypedEdgeIdentifier:
104
+ return TypedEdgeIdentifier(space=self.space, external_id=self.external_id)
105
+
106
+
107
+ class NodeResponse(InstanceResponseDefinition[NodeRequest]):
108
+ """A node response from the API."""
109
+
110
+ instance_type: Literal["node"] = "node"
111
+ type: NodeReference | None = None
112
+
113
+ def as_id(self) -> TypedNodeIdentifier:
114
+ return TypedNodeIdentifier(space=self.space, external_id=self.external_id)
115
+
116
+ def as_request_resource(self) -> NodeRequest:
117
+ dumped = self.dump()
118
+ if self.properties:
119
+ dumped["sources"] = [
120
+ InstanceSource(source=source_ref, properties=props) for source_ref, props in self.properties.items()
121
+ ]
122
+ dumped["existingVersion"] = dumped.pop("version", None)
123
+ return NodeRequest.model_validate(dumped, extra="ignore")
124
+
125
+
126
+ class EdgeResponse(InstanceResponseDefinition[EdgeRequest]):
127
+ """An edge response from the API."""
128
+
129
+ instance_type: Literal["edge"] = "edge"
130
+ type: NodeReference
131
+ start_node: NodeReference
132
+ end_node: NodeReference
133
+
134
+ def as_id(self) -> TypedEdgeIdentifier:
135
+ return TypedEdgeIdentifier(space=self.space, external_id=self.external_id)
136
+
137
+ def as_request_resource(self) -> EdgeRequest:
138
+ dumped = self.dump()
139
+ if self.properties:
140
+ dumped["sources"] = [
141
+ InstanceSource(source=source_ref, properties=props) for source_ref, props in self.properties.items()
142
+ ]
143
+ dumped["existingVersion"] = dumped.pop("version", None)
144
+ return EdgeRequest.model_validate(dumped, extra="ignore")
145
+
146
+
147
+ InstanceRequest: TypeAlias = Annotated[
148
+ NodeRequest | EdgeRequest,
149
+ Field(discriminator="instance_type"),
150
+ ]
151
+ InstanceResponse: TypeAlias = Annotated[
152
+ NodeResponse | EdgeResponse,
153
+ Field(discriminator="instance_type"),
154
+ ]
@@ -0,0 +1,86 @@
1
+ from typing import Literal
2
+
3
+ from pydantic import Field
4
+
5
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import Identifier
6
+
7
+
8
+ class SpaceReference(Identifier):
9
+ space: str
10
+
11
+ def __str__(self) -> str:
12
+ return self.space
13
+
14
+
15
+ class ContainerReference(Identifier):
16
+ type: Literal["container"] = Field("container", exclude=True)
17
+ space: str
18
+ external_id: str
19
+
20
+ def __str__(self) -> str:
21
+ return f"{self.space}:{self.external_id}"
22
+
23
+
24
+ class ViewReference(Identifier):
25
+ type: Literal["view"] = Field("view", exclude=True)
26
+ space: str
27
+ external_id: str
28
+ version: str
29
+
30
+ def __str__(self) -> str:
31
+ return f"{self.space}:{self.external_id}(version={self.version})"
32
+
33
+
34
+ class DataModelReference(Identifier):
35
+ space: str
36
+ external_id: str
37
+ version: str
38
+
39
+ def __str__(self) -> str:
40
+ return f"{self.space}:{self.external_id}(version={self.version})"
41
+
42
+
43
+ class NodeReference(Identifier):
44
+ space: str
45
+ external_id: str
46
+
47
+ def __str__(self) -> str:
48
+ return f"{self.space}:{self.external_id}"
49
+
50
+
51
+ class EdgeReference(Identifier):
52
+ space: str
53
+ external_id: str
54
+
55
+ def __str__(self) -> str:
56
+ return f"{self.space}:{self.external_id}"
57
+
58
+
59
+ class ContainerDirectReference(Identifier):
60
+ source: ContainerReference
61
+ identifier: str
62
+
63
+ def __str__(self) -> str:
64
+ return f"{self.source!s}.{self.identifier}"
65
+
66
+
67
+ class ViewDirectReference(Identifier):
68
+ source: ViewReference
69
+ identifier: str
70
+
71
+ def __str__(self) -> str:
72
+ return f"{self.source!s}.{self.identifier}"
73
+
74
+
75
+ class ContainerIndexReference(ContainerReference):
76
+ identifier: str
77
+
78
+ def __str__(self) -> str:
79
+ return f"{self.space}:{self.external_id}(index={self.identifier})"
80
+
81
+
82
+ class ContainerConstraintReference(ContainerReference):
83
+ identifier: str
84
+
85
+ def __str__(self) -> str:
86
+ return f"{self.space}:{self.external_id}(constraint={self.identifier})"
@@ -0,0 +1,26 @@
1
+ from abc import ABC
2
+
3
+ from cognite_toolkit._cdf_tk.client._resource_base import BaseModelObject, RequestResource, ResponseResource
4
+
5
+ from ._references import SpaceReference
6
+
7
+
8
+ class Space(BaseModelObject, ABC):
9
+ space: str
10
+ name: str | None = None
11
+ description: str | None = None
12
+
13
+ def as_id(self) -> SpaceReference:
14
+ return SpaceReference(space=self.space)
15
+
16
+
17
+ class SpaceRequest(Space, RequestResource): ...
18
+
19
+
20
+ class SpaceResponse(Space, ResponseResource[SpaceRequest]):
21
+ created_time: int
22
+ last_updated_time: int
23
+ is_global: bool
24
+
25
+ def as_request_resource(self) -> SpaceRequest:
26
+ return SpaceRequest.model_validate(self.model_dump(by_alias=True), extra="ignore")
@@ -0,0 +1,143 @@
1
+ from abc import ABC
2
+ from typing import Any, Literal
3
+
4
+ from pydantic import Field, JsonValue, field_serializer, model_validator
5
+ from pydantic_core.core_schema import FieldSerializationInfo
6
+
7
+ from cognite_toolkit._cdf_tk.client._resource_base import BaseModelObject, RequestResource, ResponseResource
8
+
9
+ from ._data_types import DirectNodeRelation
10
+ from ._references import ContainerReference, ViewReference
11
+ from ._view_property import (
12
+ MultiReverseDirectRelationPropertyResponse,
13
+ SingleReverseDirectRelationPropertyResponse,
14
+ ViewCorePropertyRequest,
15
+ ViewCorePropertyResponse,
16
+ ViewRequestProperty,
17
+ ViewResponseProperty,
18
+ )
19
+
20
+
21
+ class View(BaseModelObject, ABC):
22
+ space: str
23
+ external_id: str
24
+ version: str
25
+ name: str | None = None
26
+ description: str | None = None
27
+ filter: JsonValue | None
28
+ implements: list[ViewReference] | None = None
29
+
30
+ def as_id(self) -> ViewReference:
31
+ return ViewReference(space=self.space, external_id=self.external_id, version=self.version)
32
+
33
+ @model_validator(mode="before")
34
+ def set_connection_type_on_primary_properties(cls, data: dict[str, Any]) -> dict[str, Any]:
35
+ if "properties" not in data:
36
+ return data
37
+ properties = data["properties"]
38
+ if not isinstance(properties, dict):
39
+ return data
40
+ # We assume all properties without connectionType are core properties.
41
+ # The reason we set connectionType is to make it easy for pydantic to discriminate the union.
42
+ # This also leads to better error messages, as if there is a union and pydantic does not know which
43
+ # type to pick it will give errors from all type in the union.
44
+ new_properties: dict[str, Any] = {}
45
+ for prop_id, prop in properties.items():
46
+ if isinstance(prop, dict) and "connectionType" not in prop:
47
+ prop_copy = prop.copy()
48
+ prop_copy["connectionType"] = "primary_property"
49
+ new_properties[prop_id] = prop_copy
50
+ else:
51
+ new_properties[prop_id] = prop
52
+ if new_properties:
53
+ new_data = data.copy()
54
+ new_data["properties"] = new_properties
55
+ return new_data
56
+
57
+ return data
58
+
59
+ @field_serializer("implements", mode="plain")
60
+ @classmethod
61
+ def serialize_implements(
62
+ cls, implements: list[ViewReference] | None, info: FieldSerializationInfo
63
+ ) -> list[dict[str, Any]] | None:
64
+ if implements is None:
65
+ return None
66
+ output: list[dict[str, Any]] = []
67
+ for view in implements:
68
+ dumped = view.model_dump(**vars(info))
69
+ dumped["type"] = "view"
70
+ output.append(dumped)
71
+ return output
72
+
73
+
74
+ class ViewRequest(View, RequestResource):
75
+ properties: dict[str, ViewRequestProperty] = Field(
76
+ description="View with included properties and expected edges, indexed by a unique space-local identifier."
77
+ )
78
+
79
+ @property
80
+ def used_containers(self) -> set[ContainerReference]:
81
+ """Get all containers referenced by this view."""
82
+ return {prop.container for prop in self.properties.values() if isinstance(prop, ViewCorePropertyRequest)}
83
+
84
+
85
+ class ViewResponse(View, ResponseResource[ViewRequest]):
86
+ properties: dict[str, ViewResponseProperty]
87
+
88
+ created_time: int
89
+ last_updated_time: int
90
+ writable: bool
91
+ queryable: bool
92
+ used_for: Literal["node", "edge", "all"]
93
+ is_global: bool
94
+ mapped_containers: list[ContainerReference]
95
+
96
+ def as_request_resource(self) -> ViewRequest:
97
+ dumped = self.model_dump(by_alias=True, exclude={"properties"})
98
+ properties: dict[str, Any] = {}
99
+ for key, value in self.properties.items():
100
+ if isinstance(value, ViewCorePropertyResponse) and isinstance(value.type, DirectNodeRelation):
101
+ # Special case. In the request the source of DirectNodeRelation is set on the Property object,
102
+ # while in the response it is set on the DirectNodeRelation object.
103
+ request_object = value.as_request().model_dump(by_alias=True)
104
+ request_object["source"] = value.type.source.model_dump(by_alias=True) if value.type.source else None
105
+ properties[key] = request_object
106
+ elif isinstance(
107
+ value,
108
+ ViewCorePropertyResponse
109
+ | SingleReverseDirectRelationPropertyResponse
110
+ | MultiReverseDirectRelationPropertyResponse,
111
+ ):
112
+ properties[key] = value.as_request().model_dump(by_alias=True)
113
+ else:
114
+ properties[key] = value.model_dump(by_alias=True)
115
+
116
+ dumped["properties"] = properties
117
+ return ViewRequest.model_validate(dumped, extra="ignore")
118
+
119
+ @field_serializer("mapped_containers", mode="plain")
120
+ @classmethod
121
+ def serialize_mapped_containers(
122
+ cls, mapped_containers: list[ContainerReference], info: FieldSerializationInfo
123
+ ) -> list[dict[str, Any]]:
124
+ return [container.model_dump(**vars(info)) | {"type": "container"} for container in mapped_containers]
125
+
126
+ @field_serializer("properties", mode="plain")
127
+ @classmethod
128
+ def serialize_properties_special_handling_direct_relation_with_source(
129
+ cls, properties: dict[str, ViewResponseProperty], info: FieldSerializationInfo
130
+ ) -> dict[str, dict[str, Any]]:
131
+ output: dict[str, dict[str, Any]] = {}
132
+ for prop_id, prop in properties.items():
133
+ output[prop_id] = prop.model_dump(**vars(info))
134
+ if (
135
+ isinstance(prop, ViewCorePropertyResponse)
136
+ and isinstance(prop.type, DirectNodeRelation)
137
+ and prop.type.source
138
+ ):
139
+ # We manually include the source as this is excluded by default. The reason why this is excluded
140
+ # is that the DirectNodeRelation is used for both request and response, and in the request the source
141
+ # does not exist on the DirectNodeRelation, but on the Property object.
142
+ output[prop_id]["type"]["source"] = prop.type.source.model_dump(**vars(info)) | {"type": "view"}
143
+ return output
@@ -0,0 +1,152 @@
1
+ from abc import ABC
2
+ from typing import Annotated, Any, Literal
3
+
4
+ from pydantic import Field, JsonValue, TypeAdapter, field_serializer
5
+ from pydantic_core.core_schema import FieldSerializationInfo
6
+
7
+ from cognite_toolkit._cdf_tk.client._resource_base import BaseModelObject
8
+
9
+ from ._data_types import DataType
10
+ from ._references import ContainerDirectReference, ContainerReference, NodeReference, ViewDirectReference, ViewReference
11
+
12
+
13
+ class ViewPropertyDefinition(BaseModelObject, ABC):
14
+ connection_type: str
15
+
16
+
17
+ class ViewCoreProperty(ViewPropertyDefinition, ABC):
18
+ # Core properties do not have connection type in the API, but we add it here such that
19
+ # we can use it as a discriminator in unions. The exclude=True ensures that it is not
20
+ # sent to the API.
21
+ connection_type: Literal["primary_property"] = Field(default="primary_property", exclude=True)
22
+ name: str | None = None
23
+ description: str | None = None
24
+ container: ContainerReference
25
+ container_property_identifier: str
26
+
27
+ @field_serializer("container", mode="plain")
28
+ @classmethod
29
+ def serialize_container(cls, container: ContainerReference, info: FieldSerializationInfo) -> dict[str, Any]:
30
+ return {**container.model_dump(**vars(info)), "type": "container"}
31
+
32
+
33
+ class ViewCorePropertyRequest(ViewCoreProperty):
34
+ source: ViewReference | None = None
35
+
36
+ @field_serializer("source", mode="plain")
37
+ @classmethod
38
+ def serialize_source(cls, source: ViewReference | None, info: FieldSerializationInfo) -> dict[str, Any] | None:
39
+ if source is None:
40
+ return None
41
+ return {**source.model_dump(**vars(info)), "type": "view"}
42
+
43
+
44
+ class ConstraintOrIndexState(BaseModelObject):
45
+ nullability: Literal["current", "pending", "failed"] | None = None
46
+ max_list_size: Literal["current", "pending", "failed"] | None = None
47
+ max_text_size: Literal["current", "pending", "failed"] | None = None
48
+
49
+
50
+ class ViewCorePropertyResponse(ViewCoreProperty):
51
+ immutable: bool | None = None
52
+ nullable: bool | None = None
53
+ auto_increment: bool | None = None
54
+ default_value: str | int | bool | dict[str, JsonValue] | None = None
55
+ constraint_state: ConstraintOrIndexState
56
+ type: DataType
57
+
58
+ def as_request(self) -> ViewCorePropertyRequest:
59
+ return ViewCorePropertyRequest.model_validate(self.model_dump(by_alias=True))
60
+
61
+
62
+ class ConnectionPropertyDefinition(ViewPropertyDefinition, ABC):
63
+ name: str | None = None
64
+ description: str | None = None
65
+
66
+
67
+ class EdgeProperty(ConnectionPropertyDefinition, ABC):
68
+ source: ViewReference
69
+ type: NodeReference
70
+ edge_source: ViewReference | None = None
71
+ direction: Literal["outwards", "inwards"] = "outwards"
72
+
73
+ @field_serializer("source", "edge_source", mode="plain")
74
+ @classmethod
75
+ def serialize_source(cls, source: ViewReference | None, info: FieldSerializationInfo) -> dict[str, Any] | None:
76
+ if source is None:
77
+ return None
78
+ return {**source.model_dump(**vars(info)), "type": "view"}
79
+
80
+
81
+ class SingleEdgeProperty(EdgeProperty):
82
+ connection_type: Literal["single_edge_connection"] = "single_edge_connection"
83
+
84
+
85
+ class MultiEdgeProperty(EdgeProperty):
86
+ connection_type: Literal["multi_edge_connection"] = "multi_edge_connection"
87
+
88
+
89
+ class ReverseDirectRelationProperty(ConnectionPropertyDefinition, ABC):
90
+ source: ViewReference
91
+ through: ContainerDirectReference | ViewDirectReference
92
+
93
+ @field_serializer("source", mode="plain")
94
+ @classmethod
95
+ def serialize_source(cls, source: ViewReference, info: FieldSerializationInfo) -> dict[str, Any]:
96
+ return {**source.model_dump(**vars(info)), "type": "view"}
97
+
98
+ @field_serializer("through", mode="plain")
99
+ @classmethod
100
+ def serialize_through(
101
+ cls, through: ContainerDirectReference | ViewDirectReference, info: FieldSerializationInfo
102
+ ) -> dict[str, Any]:
103
+ output = through.model_dump(**vars(info))
104
+ if isinstance(through, ContainerDirectReference):
105
+ output["source"]["type"] = "container"
106
+ else:
107
+ output["source"]["type"] = "view"
108
+ return output
109
+
110
+
111
+ class SingleReverseDirectRelationPropertyRequest(ReverseDirectRelationProperty):
112
+ connection_type: Literal["single_reverse_direct_relation"] = "single_reverse_direct_relation"
113
+
114
+
115
+ class MultiReverseDirectRelationPropertyRequest(ReverseDirectRelationProperty):
116
+ connection_type: Literal["multi_reverse_direct_relation"] = "multi_reverse_direct_relation"
117
+
118
+
119
+ class SingleReverseDirectRelationPropertyResponse(ReverseDirectRelationProperty):
120
+ connection_type: Literal["single_reverse_direct_relation"] = "single_reverse_direct_relation"
121
+ targets_list: bool
122
+
123
+ def as_request(self) -> SingleReverseDirectRelationPropertyRequest:
124
+ return SingleReverseDirectRelationPropertyRequest.model_validate(self.model_dump(by_alias=True))
125
+
126
+
127
+ class MultiReverseDirectRelationPropertyResponse(ReverseDirectRelationProperty):
128
+ connection_type: Literal["multi_reverse_direct_relation"] = "multi_reverse_direct_relation"
129
+ targets_list: bool
130
+
131
+ def as_request(self) -> MultiReverseDirectRelationPropertyRequest:
132
+ return MultiReverseDirectRelationPropertyRequest.model_validate(self.model_dump(by_alias=True))
133
+
134
+
135
+ ViewRequestProperty = Annotated[
136
+ SingleEdgeProperty
137
+ | MultiEdgeProperty
138
+ | SingleReverseDirectRelationPropertyRequest
139
+ | MultiReverseDirectRelationPropertyRequest
140
+ | ViewCorePropertyRequest,
141
+ Field(discriminator="connection_type"),
142
+ ]
143
+ ViewResponseProperty = Annotated[
144
+ SingleEdgeProperty
145
+ | MultiEdgeProperty
146
+ | SingleReverseDirectRelationPropertyResponse
147
+ | MultiReverseDirectRelationPropertyResponse
148
+ | ViewCorePropertyResponse,
149
+ Field(discriminator="connection_type"),
150
+ ]
151
+
152
+ ViewRequestPropertyAdapter: TypeAdapter[ViewRequestProperty] = TypeAdapter(ViewRequestProperty)
@@ -0,0 +1,35 @@
1
+ from typing import ClassVar
2
+
3
+ from cognite_toolkit._cdf_tk.client._resource_base import (
4
+ BaseModelObject,
5
+ ResponseResource,
6
+ UpdatableRequestResource,
7
+ )
8
+
9
+ from .identifiers import ExternalId
10
+
11
+
12
+ class DataSet(BaseModelObject):
13
+ external_id: str | None = None
14
+ name: str | None = None
15
+ description: str | None = None
16
+ metadata: dict[str, str] | None = None
17
+ write_protected: bool = False
18
+
19
+ def as_id(self) -> ExternalId:
20
+ if self.external_id is None:
21
+ raise ValueError("Cannot convert DataSet to ExternalId when external_id is None")
22
+ return ExternalId(external_id=self.external_id)
23
+
24
+
25
+ class DataSetRequest(DataSet, UpdatableRequestResource):
26
+ container_fields: ClassVar[frozenset[str]] = frozenset({"metadata"})
27
+
28
+
29
+ class DataSetResponse(DataSet, ResponseResource[DataSetRequest]):
30
+ id: int
31
+ created_time: int
32
+ last_updated_time: int
33
+
34
+ def as_request_resource(self) -> DataSetRequest:
35
+ return DataSetRequest.model_validate(self.dump(), extra="ignore")
@@ -0,0 +1,40 @@
1
+ from typing import ClassVar
2
+
3
+ from cognite_toolkit._cdf_tk.client._resource_base import (
4
+ BaseModelObject,
5
+ ResponseResource,
6
+ UpdatableRequestResource,
7
+ )
8
+
9
+ from .identifiers import ExternalId, InternalOrExternalId
10
+
11
+
12
+ class Event(BaseModelObject):
13
+ external_id: str | None = None
14
+ data_set_id: int | None = None
15
+ start_time: int | None = None
16
+ end_time: int | None = None
17
+ type: str | None = None
18
+ subtype: str | None = None
19
+ description: str | None = None
20
+ metadata: dict[str, str] | None = None
21
+ asset_ids: list[int] | None = None
22
+ source: str | None = None
23
+
24
+ def as_id(self) -> InternalOrExternalId:
25
+ if self.external_id is None:
26
+ raise ValueError("Cannot convert EventRequest to ExternalId when external_id is None")
27
+ return ExternalId(external_id=self.external_id)
28
+
29
+
30
+ class EventRequest(Event, UpdatableRequestResource):
31
+ container_fields: ClassVar[frozenset[str]] = frozenset({"metadata", "asset_ids"})
32
+
33
+
34
+ class EventResponse(Event, ResponseResource[EventRequest]):
35
+ id: int
36
+ created_time: int
37
+ last_updated_time: int
38
+
39
+ def as_request_resource(self) -> EventRequest:
40
+ return EventRequest.model_validate(self.dump(), extra="ignore")