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
@@ -1,50 +1,401 @@
1
- from rich.console import Console
1
+ from collections.abc import Iterable, Sequence
2
+ from typing import TypeVar
2
3
 
3
- from cognite_toolkit._cdf_tk.client.data_classes.api_classes import PagedResponse
4
- from cognite_toolkit._cdf_tk.client.data_classes.three_d import ThreeDModelResponse
5
- from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, ParamRequest
6
- from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
4
+ from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse
5
+ from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
+ from cognite_toolkit._cdf_tk.client.http_client import (
7
+ HTTPClient,
8
+ ItemsSuccessResponse2,
9
+ SuccessResponse2,
10
+ )
11
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ThreeDAssetMappingFilter
12
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalId
13
+ from cognite_toolkit._cdf_tk.client.resource_classes.three_d import (
14
+ AssetMappingClassicRequest,
15
+ AssetMappingClassicResponse,
16
+ AssetMappingDMRequest,
17
+ AssetMappingDMResponse,
18
+ ThreeDModelClassicRequest,
19
+ ThreeDModelResponse,
20
+ )
7
21
 
8
22
 
9
- class ThreeDModelAPI:
10
- ENDPOINT = "/3d/models"
11
-
12
- def __init__(self, http_client: HTTPClient, console: Console) -> None:
13
- self._http_client = http_client
14
- self._console = console
15
- self._config = http_client.config
23
+ class ThreeDClassicModelsAPI(CDFResourceAPI[InternalId, ThreeDModelClassicRequest, ThreeDModelResponse]):
24
+ def __init__(self, http_client: HTTPClient) -> None:
25
+ super().__init__(
26
+ http_client=http_client,
27
+ method_endpoint_map={
28
+ "create": Endpoint(method="POST", path="/3d/models", item_limit=1000),
29
+ "delete": Endpoint(method="POST", path="/3d/models/delete", item_limit=1000),
30
+ "update": Endpoint(method="POST", path="/3d/models/update", item_limit=1000),
31
+ "retrieve": Endpoint(method="GET", path="/3d/models/{modelId}", item_limit=1000),
32
+ "list": Endpoint(method="GET", path="/3d/models", item_limit=1000),
33
+ },
34
+ )
16
35
 
17
- def iterate(
18
- self,
19
- published: bool | None = None,
20
- include_revision_info: bool = False,
21
- limit: int = 100,
22
- cursor: str | None = None,
36
+ def _validate_page_response(
37
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
23
38
  ) -> PagedResponse[ThreeDModelResponse]:
24
- if not (0 < limit <= 1000):
25
- raise ValueError("Limit must be between 1 and 1000.")
26
- parameters: dict[str, PrimitiveType] = {
39
+ return PagedResponse[ThreeDModelResponse].model_validate_json(response.body)
40
+
41
+ def create(self, items: Sequence[ThreeDModelClassicRequest]) -> list[ThreeDModelResponse]:
42
+ """Create 3D models in classic format.
43
+
44
+ Args:
45
+ items (Sequence[ThreeDModelClassicRequest]): The 3D model(s) to create.
46
+
47
+ Returns:
48
+ list[ThreeDModelResponse]: The created 3D model(s).
49
+ """
50
+ return self._request_item_response(items, "create")
51
+
52
+ def retrieve(self, ids: Sequence[InternalId]) -> list[ThreeDModelResponse]:
53
+ """Retrieve 3D models by their IDs.
54
+
55
+ Args:
56
+ ids (Sequence[int]): The IDs of the 3D models to retrieve.
57
+
58
+ Returns:
59
+ list[ThreeDModelResponse]: The retrieved 3D model(s).
60
+ """
61
+ return self._request_item_response(ids, "retrieve")
62
+
63
+ def update(self, items: Sequence[ThreeDModelClassicRequest]) -> list[ThreeDModelResponse]:
64
+ """Update 3D models in classic format.
65
+
66
+ Args:
67
+ items (Sequence[ThreeDModelClassicRequest]): The 3D model(s) to update.
68
+
69
+ Returns:
70
+ list[ThreeDModelResponse]: The updated 3D model(s).
71
+ """
72
+ return self._request_item_response(items, "update")
73
+
74
+ def delete(self, ids: Sequence[InternalId]) -> None:
75
+ """Delete 3D models by their IDs.
76
+
77
+ Args:
78
+ ids (Sequence[int]): The IDs of the 3D models to delete.
79
+ """
80
+ self._request_no_response(ids, "delete")
81
+
82
+ @staticmethod
83
+ def _create_list_filter(include_revision_info: bool, published: bool | None) -> dict[str, bool]:
84
+ params = {
27
85
  # There is a bug in the API. The parameter includeRevisionInfo is expected to be lower case and not
28
86
  # camel case as documented. You get error message: Unrecognized query parameter includeRevisionInfo,
29
87
  # did you mean includerevisioninfo?
30
88
  "includerevisioninfo": include_revision_info,
31
- "limit": limit,
32
89
  }
33
90
  if published is not None:
34
- parameters["published"] = published
35
- if cursor is not None:
36
- parameters["cursor"] = cursor
37
- responses = self._http_client.request_with_retries(
38
- ParamRequest(
39
- endpoint_url=self._config.create_api_url(self.ENDPOINT),
40
- method="GET",
41
- parameters=parameters,
91
+ params["published"] = published
92
+ return params
93
+
94
+ def paginate(
95
+ self,
96
+ published: bool | None = None,
97
+ include_revision_info: bool = False,
98
+ limit: int = 100,
99
+ cursor: str | None = None,
100
+ ) -> PagedResponse[ThreeDModelResponse]:
101
+ params = self._create_list_filter(include_revision_info, published)
102
+ return self._paginate(limit=limit, cursor=cursor, params=params)
103
+
104
+ def iterate(
105
+ self,
106
+ published: bool | None = None,
107
+ include_revision_info: bool = False,
108
+ limit: int = 100,
109
+ cursor: str | None = None,
110
+ ) -> Iterable[list[ThreeDModelResponse]]:
111
+ params = self._create_list_filter(include_revision_info, published)
112
+ return self._iterate(limit=limit, cursor=cursor, params=params)
113
+
114
+ def list(
115
+ self,
116
+ published: bool | None = None,
117
+ include_revision_info: bool = False,
118
+ limit: int | None = 100,
119
+ ) -> list[ThreeDModelResponse]:
120
+ params = self._create_list_filter(include_revision_info, published)
121
+ return self._list(limit=limit, params=params)
122
+
123
+
124
+ T_RequestMapping = TypeVar("T_RequestMapping", bound=AssetMappingClassicRequest | AssetMappingDMRequest)
125
+
126
+
127
+ class ThreeDClassicAssetMappingAPI(
128
+ CDFResourceAPI[AssetMappingClassicRequest, AssetMappingClassicRequest, AssetMappingClassicResponse]
129
+ ):
130
+ ENDPOINT = "/3d/models/{modelId}/revisions/{revisionId}/mappings"
131
+
132
+ def __init__(self, http_client: HTTPClient) -> None:
133
+ super().__init__(
134
+ http_client=http_client,
135
+ method_endpoint_map={
136
+ # These endpoints are parameterized, so the paths are templates
137
+ "create": Endpoint(method="POST", path=self.ENDPOINT, item_limit=1000),
138
+ "delete": Endpoint(method="POST", path=f"{self.ENDPOINT}/delete", item_limit=1000),
139
+ "list": Endpoint(method="POST", path=f"{self.ENDPOINT}/list", item_limit=1000),
140
+ },
141
+ )
142
+
143
+ def _validate_page_response(
144
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
145
+ ) -> PagedResponse[AssetMappingClassicResponse]:
146
+ return PagedResponse[AssetMappingClassicResponse].model_validate_json(response.body)
147
+
148
+ def create(self, mappings: Sequence[AssetMappingClassicRequest]) -> list[AssetMappingClassicResponse]:
149
+ """Create 3D asset mappings.
150
+
151
+ Args:
152
+ mappings (Sequence[AssetMappingClassicRequest]):
153
+ The 3D asset mapping(s) to create.
154
+
155
+ Returns:
156
+ list[AssetMappingClassicResponse]: The created 3D asset mapping(s).
157
+ """
158
+ results: list[AssetMappingClassicResponse] = []
159
+ endpoint = self._method_endpoint_map["create"]
160
+ for (model_id, revision_id), group in self._group_items_by_text_field(
161
+ mappings, "model_id", "revision_id"
162
+ ).items():
163
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
164
+ result = self._request_item_response(group, "create", endpoint=path)
165
+ for item in result:
166
+ # We append modelId and revisionId to each item since the API does not return them
167
+ # this is needed to fully populate the AssetMappingResponse data class
168
+ object.__setattr__(item, "model_id", int(model_id))
169
+ object.__setattr__(item, "revision_id", int(revision_id))
170
+ results.extend(result)
171
+ return results
172
+
173
+ def delete(self, mappings: Sequence[AssetMappingClassicRequest]) -> None:
174
+ """Delete 3D asset mappings.
175
+
176
+ Args:
177
+ mappings (Sequence[AssetMappingClassicRequest]):
178
+ The 3D asset mapping(s) to delete.
179
+ """
180
+ endpoint = self._method_endpoint_map["delete"]
181
+ for (model_id, revision_id), group in self._group_items_by_text_field(
182
+ mappings, "model_id", "revision_id"
183
+ ).items():
184
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
185
+ self._request_no_response(group, "delete", endpoint=path)
186
+ return None
187
+
188
+ def paginate(
189
+ self,
190
+ model_id: int,
191
+ revision_id: int,
192
+ filter: ThreeDAssetMappingFilter | None = None,
193
+ limit: int = 100,
194
+ cursor: str | None = None,
195
+ ) -> PagedResponse[AssetMappingClassicResponse]:
196
+ endpoint = self._method_endpoint_map["list"]
197
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
198
+ page = self._paginate(
199
+ limit=limit,
200
+ cursor=cursor,
201
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": False},
202
+ endpoint_path=path,
203
+ )
204
+ # Add modelId and revisionId to items since the API does not return them
205
+ for item in page.items:
206
+ object.__setattr__(item, "model_id", model_id)
207
+ object.__setattr__(item, "revision_id", revision_id)
208
+ return page
209
+
210
+ def iterate(
211
+ self,
212
+ model_id: int,
213
+ revision_id: int,
214
+ filter: ThreeDAssetMappingFilter | None = None,
215
+ limit: int = 100,
216
+ ) -> Iterable[list[AssetMappingClassicResponse]]:
217
+ endpoint = self._method_endpoint_map["list"]
218
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
219
+ for items in self._iterate(
220
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": False},
221
+ limit=limit,
222
+ endpoint_path=path,
223
+ ):
224
+ # Add modelId and revisionId to items since the API does not return them
225
+ for item in items:
226
+ object.__setattr__(item, "model_id", model_id)
227
+ object.__setattr__(item, "revision_id", revision_id)
228
+ yield items
229
+
230
+ def list(
231
+ self,
232
+ model_id: int,
233
+ revision_id: int,
234
+ filter: ThreeDAssetMappingFilter | None = None,
235
+ limit: int | None = 100,
236
+ ) -> list[AssetMappingClassicResponse]:
237
+ endpoint = self._method_endpoint_map["list"]
238
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
239
+ items = self._list(
240
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": False},
241
+ limit=limit,
242
+ endpoint_path=path,
243
+ )
244
+ # Add modelId and revisionId to items since the API does not return them
245
+ for item in items:
246
+ object.__setattr__(item, "model_id", model_id)
247
+ object.__setattr__(item, "revision_id", revision_id)
248
+ return items
249
+
250
+
251
+ class ThreeDDMAssetMappingAPI(CDFResourceAPI[AssetMappingDMRequest, AssetMappingDMRequest, AssetMappingDMResponse]):
252
+ ENDPOINT = "/3d/models/{modelId}/revisions/{revisionId}/mappings"
253
+
254
+ def __init__(self, http_client: HTTPClient) -> None:
255
+ super().__init__(
256
+ http_client=http_client,
257
+ method_endpoint_map={
258
+ # These endpoints are parameterized, so the paths are templates
259
+ "create": Endpoint(method="POST", path=self.ENDPOINT, item_limit=100),
260
+ "delete": Endpoint(method="POST", path=f"{self.ENDPOINT}/delete", item_limit=100),
261
+ "list": Endpoint(method="POST", path=f"{self.ENDPOINT}/list", item_limit=1000),
262
+ },
263
+ )
264
+
265
+ def _validate_page_response(
266
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
267
+ ) -> PagedResponse[AssetMappingDMResponse]:
268
+ return PagedResponse[AssetMappingDMResponse].model_validate_json(response.body)
269
+
270
+ def create(
271
+ self, mappings: Sequence[AssetMappingDMRequest], object_3d_space: str, cad_node_space: str
272
+ ) -> list[AssetMappingDMResponse]:
273
+ """Create 3D asset mappings in Data Modeling format.
274
+
275
+ Args:
276
+ mappings (Sequence[AssetMappingDMRequest]):
277
+ The 3D asset mapping(s) to create
278
+ object_3d_space (str):
279
+ The instance space where the Cognite3DObject are located.
280
+ cad_node_space (str):
281
+ The instance space where the CogniteCADNode are located.
282
+ Returns:
283
+ list[AssetMappingDMResponse]: The created 3D asset mapping(s).
284
+ """
285
+ results: list[AssetMappingDMResponse] = []
286
+ for (model_id, revision_id), group in self._group_items_by_text_field(
287
+ mappings, "model_id", "revision_id"
288
+ ).items():
289
+ path = self.ENDPOINT.format(modelId=model_id, revisionId=revision_id)
290
+ result = self._request_item_response(
291
+ group,
292
+ "create",
293
+ endpoint=path,
294
+ extra_body={
295
+ "dmsContextualizationConfig": {
296
+ "object3DSpace": object_3d_space,
297
+ "cadNodeSpace": cad_node_space,
298
+ }
299
+ },
42
300
  )
301
+ for item in result:
302
+ # We append modelId and revisionId to each item since the API does not return them
303
+ # this is needed to fully populate the AssetMappingDMResponse data class
304
+ object.__setattr__(item, "model_id", int(model_id))
305
+ object.__setattr__(item, "revision_id", int(revision_id))
306
+ results.extend(result)
307
+ return results
308
+
309
+ def delete(self, mappings: Sequence[AssetMappingDMRequest], object_3d_space: str, cad_node_space: str) -> None:
310
+ """Delete 3D asset mappings in Data Modeling format.
311
+
312
+ Args:
313
+ mappings (Sequence[AssetMappingDMRequest]):
314
+ The 3D asset mapping(s) to delete.
315
+ object_3d_space (str):
316
+ The instance space where the Cognite3DObject are located.
317
+ cad_node_space (str):
318
+ The instance space where the CogniteCADNode are located.
319
+ """
320
+ endpoint = self._method_endpoint_map["delete"]
321
+ for (model_id, revision_id), group in self._group_items_by_text_field(
322
+ mappings, "model_id", "revision_id"
323
+ ).items():
324
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
325
+ self._request_no_response(
326
+ group,
327
+ "delete",
328
+ endpoint=path,
329
+ extra_body={
330
+ "dmsContextualizationConfig": {
331
+ "object3DSpace": object_3d_space,
332
+ "cadNodeSpace": cad_node_space,
333
+ }
334
+ },
335
+ )
336
+ return None
337
+
338
+ def paginate(
339
+ self,
340
+ model_id: int,
341
+ revision_id: int,
342
+ filter: ThreeDAssetMappingFilter | None = None,
343
+ limit: int = 100,
344
+ cursor: str | None = None,
345
+ ) -> PagedResponse[AssetMappingDMResponse]:
346
+ endpoint = self._method_endpoint_map["list"]
347
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
348
+ page = self._paginate(
349
+ limit=limit,
350
+ cursor=cursor,
351
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": True},
352
+ endpoint_path=path,
353
+ )
354
+ # Add modelId and revisionId to items since the API does not return them
355
+ for item in page.items:
356
+ object.__setattr__(item, "model_id", model_id)
357
+ object.__setattr__(item, "revision_id", revision_id)
358
+ return page
359
+
360
+ def iterate(
361
+ self,
362
+ model_id: int,
363
+ revision_id: int,
364
+ filter: ThreeDAssetMappingFilter | None = None,
365
+ limit: int = 100,
366
+ ) -> Iterable[list[AssetMappingDMResponse]]:
367
+ endpoint = self._method_endpoint_map["list"]
368
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
369
+ for items in self._iterate(
370
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": True}, limit=limit, endpoint_path=path
371
+ ):
372
+ # Add modelId and revisionId to items since the API does not return them
373
+ for item in items:
374
+ object.__setattr__(item, "model_id", model_id)
375
+ object.__setattr__(item, "revision_id", revision_id)
376
+ yield items
377
+
378
+ def list(
379
+ self,
380
+ model_id: int,
381
+ revision_id: int,
382
+ filter: ThreeDAssetMappingFilter | None = None,
383
+ limit: int | None = 100,
384
+ ) -> list[AssetMappingDMResponse]:
385
+ endpoint = self._method_endpoint_map["list"]
386
+ path = endpoint.path.format(modelId=model_id, revisionId=revision_id)
387
+ items = self._list(
388
+ body={"filter": filter.dump() if filter else None, "getDmsInstances": True}, limit=limit, endpoint_path=path
43
389
  )
44
- responses.raise_for_status()
45
- return PagedResponse[ThreeDModelResponse].model_validate(responses.get_first_body())
390
+ # Add modelId and revisionId to items since the API does not return them
391
+ for item in items:
392
+ object.__setattr__(item, "model_id", model_id)
393
+ object.__setattr__(item, "revision_id", revision_id)
394
+ return items
46
395
 
47
396
 
48
397
  class ThreeDAPI:
49
- def __init__(self, http_client: HTTPClient, console: Console) -> None:
50
- self.models = ThreeDModelAPI(http_client, console)
398
+ def __init__(self, http_client: HTTPClient) -> None:
399
+ self.models_classic = ThreeDClassicModelsAPI(http_client)
400
+ self.asset_mappings_classic = ThreeDClassicAssetMappingAPI(http_client)
401
+ self.asset_mappings_dm = ThreeDDMAssetMappingAPI(http_client)
@@ -0,0 +1,137 @@
1
+ from collections.abc import Iterable, Sequence
2
+ from typing import Literal
3
+
4
+ from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
5
+ from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
6
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
7
+ from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
9
+ from cognite_toolkit._cdf_tk.client.resource_classes.timeseries import TimeSeriesRequest, TimeSeriesResponse
10
+
11
+
12
+ class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, TimeSeriesResponse]):
13
+ def __init__(self, http_client: HTTPClient) -> None:
14
+ super().__init__(
15
+ http_client=http_client,
16
+ method_endpoint_map={
17
+ "create": Endpoint(method="POST", path="/timeseries", item_limit=1000, concurrency_max_workers=1),
18
+ "retrieve": Endpoint(
19
+ method="POST", path="/timeseries/byids", item_limit=1000, concurrency_max_workers=1
20
+ ),
21
+ "update": Endpoint(
22
+ method="POST", path="/timeseries/update", item_limit=1000, concurrency_max_workers=1
23
+ ),
24
+ "delete": Endpoint(
25
+ method="POST", path="/timeseries/delete", item_limit=1000, concurrency_max_workers=1
26
+ ),
27
+ "list": Endpoint(method="POST", path="/timeseries/list", item_limit=1000),
28
+ },
29
+ )
30
+
31
+ def _validate_page_response(
32
+ self, response: SuccessResponse2 | ItemsSuccessResponse2
33
+ ) -> PagedResponse[TimeSeriesResponse]:
34
+ return PagedResponse[TimeSeriesResponse].model_validate_json(response.body)
35
+
36
+ def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
37
+ return ResponseItems[InternalOrExternalId].model_validate_json(response.body)
38
+
39
+ def create(self, items: Sequence[TimeSeriesRequest]) -> list[TimeSeriesResponse]:
40
+ """Create time series in CDF.
41
+
42
+ Args:
43
+ items: List of TimeSeriesRequest objects to create.
44
+ Returns:
45
+ List of created TimeSeriesResponse objects.
46
+ """
47
+ return self._request_item_response(items, "create")
48
+
49
+ def retrieve(
50
+ self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False
51
+ ) -> list[TimeSeriesResponse]:
52
+ """Retrieve time series from CDF.
53
+
54
+ Args:
55
+ items: List of InternalOrExternalId objects to retrieve.
56
+ ignore_unknown_ids: Whether to ignore unknown IDs.
57
+ Returns:
58
+ List of retrieved TimeSeriesResponse objects.
59
+ """
60
+ return self._request_item_response(
61
+ items, method="retrieve", extra_body={"ignoreUnknownIds": ignore_unknown_ids}
62
+ )
63
+
64
+ def update(
65
+ self, items: Sequence[TimeSeriesRequest], mode: Literal["patch", "replace"] = "replace"
66
+ ) -> list[TimeSeriesResponse]:
67
+ """Update time series in CDF.
68
+
69
+ Args:
70
+ items: List of TimeSeriesRequest objects to update.
71
+ mode: Update mode, either "patch" or "replace".
72
+
73
+ Returns:
74
+ List of updated TimeSeriesResponse objects.
75
+ """
76
+ return self._update(items, mode=mode)
77
+
78
+ def delete(self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False) -> None:
79
+ """Delete time series from CDF.
80
+
81
+ Args:
82
+ items: List of InternalOrExternalId objects to delete.
83
+ ignore_unknown_ids: Whether to ignore unknown IDs.
84
+ """
85
+ self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
86
+
87
+ def paginate(
88
+ self,
89
+ filter: ClassicFilter | None = None,
90
+ limit: int = 100,
91
+ cursor: str | None = None,
92
+ ) -> PagedResponse[TimeSeriesResponse]:
93
+ """Iterate over all time series in CDF.
94
+
95
+ Args:
96
+ filter: Filter by data set IDs and/or asset subtree IDs.
97
+ limit: Maximum number of items to return.
98
+ cursor: Cursor for pagination.
99
+
100
+ Returns:
101
+ PagedResponse of TimeSeriesResponse objects.
102
+ """
103
+ return self._paginate(
104
+ cursor=cursor,
105
+ limit=limit,
106
+ body={"filter": filter.dump() if filter else None},
107
+ )
108
+
109
+ def iterate(
110
+ self,
111
+ filter: ClassicFilter | None = None,
112
+ limit: int | None = 100,
113
+ ) -> Iterable[list[TimeSeriesResponse]]:
114
+ """Iterate over all time series in CDF.
115
+
116
+ Args:
117
+ filter: Filter by data set IDs and/or asset subtree IDs.
118
+ limit: Maximum number of items to return per page.
119
+
120
+ Returns:
121
+ Iterable of lists of TimeSeriesResponse objects.
122
+ """
123
+ return self._iterate(
124
+ limit=limit,
125
+ body={"filter": filter.dump() if filter else None},
126
+ )
127
+
128
+ def list(
129
+ self,
130
+ limit: int | None = 100,
131
+ ) -> list[TimeSeriesResponse]:
132
+ """List all time series in CDF.
133
+
134
+ Returns:
135
+ List of TimeSeriesResponse objects.
136
+ """
137
+ return self._list(limit=limit)
@@ -4,7 +4,7 @@ from cognite.client import CogniteClient
4
4
  from cognite.client.data_classes.capabilities import _CAPABILITY_CLASS_BY_NAME, AllScope, Capability
5
5
  from cognite.client.data_classes.iam import TokenInspection
6
6
 
7
- from cognite_toolkit._cdf_tk.client.data_classes.capabilities import scope_intersection, scope_union
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.capabilities import scope_intersection, scope_union
8
8
  from cognite_toolkit._cdf_tk.utils import humanize_collection
9
9
 
10
10
  _ACL_CLASS_BY_CLASS_NAME = {cap.__name__: cap for cap in _CAPABILITY_CLASS_BY_NAME.values()}