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
@@ -1,5 +1,6 @@
1
1
  from ._client import HTTPClient
2
2
  from ._data_classes import (
3
+ T_COVARIANT_ID,
3
4
  DataBodyRequest,
4
5
  ErrorDetails,
5
6
  FailedRequestItems,
@@ -10,6 +11,7 @@ from ._data_classes import (
10
11
  ItemMessage,
11
12
  ItemsRequest,
12
13
  ParamRequest,
14
+ RequestItem,
13
15
  RequestMessage,
14
16
  ResponseList,
15
17
  ResponseMessage,
@@ -18,24 +20,24 @@ from ._data_classes import (
18
20
  SuccessResponseItems,
19
21
  )
20
22
  from ._data_classes2 import (
21
- BaseModelObject,
22
23
  ErrorDetails2,
23
24
  FailedRequest2,
24
25
  FailedResponse2,
25
26
  HTTPResult2,
27
+ RequestMessage2,
28
+ SuccessResponse2,
29
+ )
30
+ from ._exception import ToolkitAPIError
31
+ from ._item_classes import (
26
32
  ItemsFailedRequest2,
27
33
  ItemsFailedResponse2,
28
34
  ItemsRequest2,
29
35
  ItemsResultMessage2,
30
36
  ItemsSuccessResponse2,
31
- RequestMessage2,
32
- RequestResource,
33
- SuccessResponse2,
34
37
  )
35
- from ._exception import ToolkitAPIError
36
38
 
37
39
  __all__ = [
38
- "BaseModelObject",
40
+ "T_COVARIANT_ID",
39
41
  "DataBodyRequest",
40
42
  "ErrorDetails",
41
43
  "ErrorDetails2",
@@ -56,9 +58,9 @@ __all__ = [
56
58
  "ItemsResultMessage2",
57
59
  "ItemsSuccessResponse2",
58
60
  "ParamRequest",
61
+ "RequestItem",
59
62
  "RequestMessage",
60
63
  "RequestMessage2",
61
- "RequestResource",
62
64
  "ResponseList",
63
65
  "ResponseMessage",
64
66
  "SimpleBodyRequest",
@@ -10,9 +10,7 @@ import httpx
10
10
  from cognite.client import global_config
11
11
  from rich.console import Console
12
12
 
13
- from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning
14
- from cognite_toolkit._cdf_tk.utils.auxiliary import get_current_toolkit_version, get_user_agent
15
- from cognite_toolkit._cdf_tk.utils.http_client._data_classes import (
13
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes import (
16
14
  BodyRequest,
17
15
  DataBodyRequest,
18
16
  FailedRequestMessage,
@@ -23,21 +21,25 @@ from cognite_toolkit._cdf_tk.utils.http_client._data_classes import (
23
21
  ResponseList,
24
22
  ResponseMessage,
25
23
  )
26
- from cognite_toolkit._cdf_tk.utils.http_client._data_classes2 import (
24
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes2 import (
27
25
  BaseRequestMessage,
28
26
  ErrorDetails2,
29
27
  FailedRequest2,
30
28
  FailedResponse2,
31
29
  HTTPResult2,
30
+ RequestMessage2,
31
+ SuccessResponse2,
32
+ )
33
+ from cognite_toolkit._cdf_tk.client.http_client._item_classes import (
32
34
  ItemsFailedRequest2,
33
35
  ItemsFailedResponse2,
34
36
  ItemsRequest2,
35
37
  ItemsResultList,
36
38
  ItemsResultMessage2,
37
39
  ItemsSuccessResponse2,
38
- RequestMessage2,
39
- SuccessResponse2,
40
40
  )
41
+ from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning
42
+ from cognite_toolkit._cdf_tk.utils.auxiliary import get_current_toolkit_version, get_user_agent
41
43
  from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
42
44
 
43
45
  if sys.version_info >= (3, 11):
@@ -172,6 +174,7 @@ class HTTPClient:
172
174
  content_type: str = "application/json",
173
175
  accept: str = "application/json",
174
176
  content_length: int | None = None,
177
+ disable_gzip: bool = False,
175
178
  ) -> MutableMapping[str, str]:
176
179
  headers: MutableMapping[str, str] = {}
177
180
  headers["User-Agent"] = f"httpx/{httpx.__version__} {get_user_agent()}"
@@ -184,7 +187,7 @@ class HTTPClient:
184
187
  headers["x-cdp-sdk"] = f"CogniteToolkit:{get_current_toolkit_version()}"
185
188
  headers["x-cdp-app"] = self.config.client_name
186
189
  headers["cdf-version"] = api_version or self.config.api_subversion
187
- if not global_config.disable_gzip and content_length is None:
190
+ if not global_config.disable_gzip and content_length is None and not disable_gzip:
188
191
  headers["Content-Encoding"] = "gzip"
189
192
  return headers
190
193
 
@@ -332,7 +335,13 @@ class HTTPClient:
332
335
  raise TypeError(f"Unexpected result type: {type(result)}")
333
336
 
334
337
  def _make_request2(self, message: BaseRequestMessage) -> httpx.Response:
335
- headers = self._create_headers(message.api_version, message.content_type, message.accept)
338
+ headers = self._create_headers(
339
+ message.api_version,
340
+ message.content_type,
341
+ message.accept,
342
+ content_length=message.content_length,
343
+ disable_gzip=message.disable_gzip,
344
+ )
336
345
  return self.session.request(
337
346
  method=message.method,
338
347
  url=message.endpoint_url,
@@ -414,7 +423,7 @@ class HTTPClient:
414
423
  if message.tracker and message.tracker.limit_reached():
415
424
  return [
416
425
  ItemsFailedRequest2(
417
- ids=[item.as_id() for item in message.items],
426
+ ids=[str(item) for item in message.items],
418
427
  error_message=f"Aborting further splitting of requests after {message.tracker.failed_split_count} failed attempts.",
419
428
  )
420
429
  ]
@@ -464,7 +473,7 @@ class HTTPClient:
464
473
  if 200 <= response.status_code < 300:
465
474
  return [
466
475
  ItemsSuccessResponse2(
467
- ids=[item.as_id() for item in request.items],
476
+ ids=[str(item) for item in request.items],
468
477
  status_code=response.status_code,
469
478
  body=response.text,
470
479
  content=response.content,
@@ -480,7 +489,7 @@ class HTTPClient:
480
489
  if splits[0].tracker and splits[0].tracker.limit_reached():
481
490
  return [
482
491
  ItemsFailedResponse2(
483
- ids=[item.as_id() for item in request.items],
492
+ ids=[str(item) for item in request.items],
484
493
  status_code=response.status_code,
485
494
  body=response.text,
486
495
  error=ErrorDetails2.from_response(response),
@@ -494,7 +503,7 @@ class HTTPClient:
494
503
  # Permanent failure
495
504
  return [
496
505
  ItemsFailedResponse2(
497
- ids=[item.as_id() for item in request.items],
506
+ ids=[str(item) for item in request.items],
498
507
  status_code=response.status_code,
499
508
  body=response.text,
500
509
  error=ErrorDetails2.from_response(response),
@@ -516,7 +525,7 @@ class HTTPClient:
516
525
  error_msg = f"Unexpected exception: {e!s}"
517
526
  return [
518
527
  ItemsFailedRequest2(
519
- ids=[item.as_id() for item in request.items],
528
+ ids=[str(item) for item in request.items],
520
529
  error_message=error_msg,
521
530
  )
522
531
  ]
@@ -530,7 +539,7 @@ class HTTPClient:
530
539
 
531
540
  return [
532
541
  ItemsFailedRequest2(
533
- ids=[item.as_id() for item in request.items],
542
+ ids=[str(item) for item in request.items],
534
543
  error_message=error_msg,
535
544
  )
536
545
  ]
@@ -7,8 +7,8 @@ from typing import Generic, Literal, Protocol, TypeAlias, TypeVar
7
7
  import httpx
8
8
  from cognite.client.utils import _json
9
9
 
10
- from cognite_toolkit._cdf_tk.utils.http_client._exception import ToolkitAPIError
11
- from cognite_toolkit._cdf_tk.utils.http_client._tracker import ItemsRequestTracker
10
+ from cognite_toolkit._cdf_tk.client.http_client._exception import ToolkitAPIError
11
+ from cognite_toolkit._cdf_tk.client.http_client._tracker import ItemsRequestTracker
12
12
  from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal, PrimitiveType
13
13
 
14
14
  StatusCode: TypeAlias = int
@@ -307,6 +307,11 @@ class ItemsRequest(Generic[T_COVARIANT_ID], BodyRequest):
307
307
  connect_attempt=self.connect_attempt,
308
308
  read_attempt=self.read_attempt,
309
309
  status_attempt=status_attempts,
310
+ api_version=self.api_version,
311
+ content_type=self.content_type,
312
+ accept=self.accept,
313
+ content_length=self.content_length,
314
+ max_failures_before_abort=self.max_failures_before_abort,
310
315
  )
311
316
  first_half.tracker = tracker
312
317
  second_half = ItemsRequest[T_COVARIANT_ID](
@@ -317,6 +322,11 @@ class ItemsRequest(Generic[T_COVARIANT_ID], BodyRequest):
317
322
  connect_attempt=self.connect_attempt,
318
323
  read_attempt=self.read_attempt,
319
324
  status_attempt=status_attempts,
325
+ api_version=self.api_version,
326
+ content_type=self.content_type,
327
+ accept=self.accept,
328
+ content_length=self.content_length,
329
+ max_failures_before_abort=self.max_failures_before_abort,
320
330
  )
321
331
  second_half.tracker = tracker
322
332
  return [first_half, second_half]
@@ -0,0 +1,151 @@
1
+ import gzip
2
+ from abc import ABC, abstractmethod
3
+ from collections.abc import Hashable
4
+ from typing import Any, Literal
5
+
6
+ import httpx
7
+ from cognite.client import global_config
8
+ from pydantic import BaseModel, JsonValue, TypeAdapter, model_validator
9
+
10
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes import (
11
+ ErrorDetails,
12
+ FailedRequestItems,
13
+ FailedRequestMessage,
14
+ FailedResponseItems,
15
+ ResponseMessage,
16
+ SuccessResponseItems,
17
+ )
18
+ from cognite_toolkit._cdf_tk.client.http_client._exception import ToolkitAPIError
19
+ from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
20
+
21
+
22
+ class HTTPResult2(BaseModel):
23
+ def get_success_or_raise(self) -> "SuccessResponse2":
24
+ """Raises an exception if any response in the list indicates a failure."""
25
+ if isinstance(self, SuccessResponse2):
26
+ return self
27
+ elif isinstance(self, FailedResponse2):
28
+ raise ToolkitAPIError(
29
+ f"Request failed with status code {self.status_code}: {self.error.message}",
30
+ missing=self.error.missing, # type: ignore[arg-type]
31
+ duplicated=self.error.duplicated, # type: ignore[arg-type]
32
+ )
33
+ elif isinstance(self, FailedRequest2):
34
+ raise ToolkitAPIError(f"Request failed with error: {self.error}")
35
+ else:
36
+ raise ToolkitAPIError("Unknown HTTPResult2 type")
37
+
38
+ # Todo: Remove when HTTPResult2 is renamed to HTTPResponse and the old HTTPResponse is deleted
39
+ def as_item_response(self, item_id: Hashable) -> ResponseMessage | FailedRequestMessage:
40
+ if isinstance(self, SuccessResponse2):
41
+ return SuccessResponseItems(
42
+ status_code=self.status_code, content=self.content, ids=[item_id], body=self.body
43
+ )
44
+ elif isinstance(self, FailedResponse2):
45
+ return FailedResponseItems(
46
+ status_code=self.status_code,
47
+ ids=[item_id],
48
+ body=self.body,
49
+ error=ErrorDetails(
50
+ code=self.error.code,
51
+ message=self.error.message,
52
+ missing=self.error.missing,
53
+ duplicated=self.error.duplicated,
54
+ ),
55
+ )
56
+ elif isinstance(self, FailedRequest2):
57
+ return FailedRequestItems(ids=[item_id], error=self.error)
58
+ else:
59
+ raise ToolkitAPIError("Unknown HTTPResult2 type")
60
+
61
+
62
+ class FailedRequest2(HTTPResult2):
63
+ error: str
64
+
65
+
66
+ class SuccessResponse2(HTTPResult2):
67
+ status_code: int
68
+ body: str
69
+ content: bytes
70
+
71
+ @property
72
+ def body_json(self) -> dict[str, Any]:
73
+ """Parse the response body as JSON."""
74
+ return TypeAdapter(dict[str, JsonValue]).validate_json(self.body)
75
+
76
+
77
+ class ErrorDetails2(BaseModel):
78
+ """This is the expected structure of error details in the CDF API"""
79
+
80
+ code: int
81
+ message: str
82
+ missing: list[JsonValue] | None = None
83
+ duplicated: list[JsonValue] | None = None
84
+ is_auto_retryable: bool | None = None
85
+
86
+ @classmethod
87
+ def from_response(cls, response: httpx.Response) -> "ErrorDetails2":
88
+ """Populate the error details from a httpx response."""
89
+ try:
90
+ res = TypeAdapter(dict[Literal["error"], ErrorDetails2]).validate_json(response.text)
91
+ except ValueError:
92
+ return cls(code=response.status_code, message=response.text)
93
+ return res["error"]
94
+
95
+
96
+ class FailedResponse2(HTTPResult2):
97
+ status_code: int
98
+ body: str
99
+ error: ErrorDetails2
100
+
101
+
102
+ class BaseRequestMessage(BaseModel, ABC):
103
+ endpoint_url: str
104
+ method: Literal["GET", "POST", "PATCH", "DELETE", "PUT"]
105
+ connect_attempt: int = 0
106
+ read_attempt: int = 0
107
+ status_attempt: int = 0
108
+ api_version: str | None = None
109
+ disable_gzip: bool = False
110
+ content_length: int | None = None
111
+ content_type: str = "application/json"
112
+ accept: str = "application/json"
113
+
114
+ parameters: dict[str, PrimitiveType] | None = None
115
+
116
+ @property
117
+ def total_attempts(self) -> int:
118
+ return self.connect_attempt + self.read_attempt + self.status_attempt
119
+
120
+ @property
121
+ @abstractmethod
122
+ def content(self) -> str | bytes | None: ...
123
+
124
+
125
+ class RequestMessage2(BaseRequestMessage):
126
+ data_content: bytes | None = None
127
+ body_content: dict[str, JsonValue] | None = None
128
+
129
+ @model_validator(mode="before")
130
+ def check_data_or_body(cls, values: dict[str, Any]) -> dict[str, Any]:
131
+ if values.get("data_content") is not None and values.get("body_content") is not None:
132
+ raise ValueError("Only one of data_content or body_content can be set.")
133
+ return values
134
+
135
+ @property
136
+ def content(self) -> str | bytes | None:
137
+ data: str | bytes | None = None
138
+ if self.data_content is not None:
139
+ data = self.data_content
140
+ if not global_config.disable_gzip and not self.disable_gzip:
141
+ data = gzip.compress(data)
142
+ elif self.body_content is not None:
143
+ # We serialize using pydantic instead of json.dumps. This is because pydantic is faster
144
+ # and handles more complex types such as datetime, float('nan'), etc.
145
+ data = _BODY_SERIALIZER.dump_json(self.body_content)
146
+ if not global_config.disable_gzip and not self.disable_gzip and isinstance(data, bytes):
147
+ data = gzip.compress(data)
148
+ return data
149
+
150
+
151
+ _BODY_SERIALIZER = TypeAdapter(dict[str, JsonValue])
@@ -0,0 +1,13 @@
1
+ from typing import Any
2
+
3
+
4
+ class ToolkitAPIError(Exception):
5
+ """Base class for all exceptions raised by the Cognite Toolkit API client."""
6
+
7
+ def __init__(
8
+ self, message: str, missing: list[dict[str, Any]] | None = None, duplicated: list[dict[str, Any]] | None = None
9
+ ) -> None:
10
+ super().__init__(message)
11
+ self.message = message
12
+ self.missing = missing
13
+ self.duplicated = duplicated
@@ -0,0 +1,118 @@
1
+ """Data classes for handling item-based requests and responses in the Cognite Toolkit HTTP client."""
2
+
3
+ import gzip
4
+ from collections import UserList
5
+ from collections.abc import Sequence
6
+ from typing import Any
7
+
8
+ from cognite.client import global_config
9
+ from pydantic import BaseModel, ConfigDict, Field, JsonValue
10
+
11
+ from cognite_toolkit._cdf_tk.client._resource_base import RequestItem
12
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes2 import (
13
+ _BODY_SERIALIZER,
14
+ BaseRequestMessage,
15
+ ErrorDetails2,
16
+ )
17
+ from cognite_toolkit._cdf_tk.client.http_client._exception import ToolkitAPIError
18
+ from cognite_toolkit._cdf_tk.client.http_client._tracker import ItemsRequestTracker
19
+
20
+
21
+ class ItemsResultMessage2(BaseModel):
22
+ ids: list[str]
23
+
24
+
25
+ class ItemsFailedRequest2(ItemsResultMessage2):
26
+ error_message: str
27
+
28
+
29
+ class ItemsSuccessResponse2(ItemsResultMessage2):
30
+ status_code: int
31
+ body: str
32
+ content: bytes
33
+
34
+
35
+ class ItemsFailedResponse2(ItemsResultMessage2):
36
+ status_code: int
37
+ error: ErrorDetails2
38
+ body: str
39
+
40
+
41
+ def _set_default_tracker(data: dict[str, Any]) -> ItemsRequestTracker:
42
+ if "tracker" not in data or data["tracker"] is None:
43
+ return ItemsRequestTracker(data.get("max_failures_before_abort", 50))
44
+ return data["tracker"]
45
+
46
+
47
+ class ItemsRequest2(BaseRequestMessage):
48
+ model_config = ConfigDict(arbitrary_types_allowed=True)
49
+ items: Sequence[RequestItem]
50
+ extra_body_fields: dict[str, JsonValue] | None = None
51
+ max_failures_before_abort: int = 50
52
+ tracker: ItemsRequestTracker = Field(init=False, default_factory=_set_default_tracker, exclude=True)
53
+
54
+ @property
55
+ def content(self) -> str | bytes | None:
56
+ body: dict[str, JsonValue] = {"items": [item.dump(camel_case=True) for item in self.items]}
57
+ if self.extra_body_fields:
58
+ body.update(self.extra_body_fields)
59
+ res = _BODY_SERIALIZER.dump_json(body)
60
+ if not global_config.disable_gzip and not self.disable_gzip and isinstance(res, bytes):
61
+ return gzip.compress(res)
62
+ return res
63
+
64
+ def split(self, status_attempts: int) -> list["ItemsRequest2"]:
65
+ """Split the request into multiple requests with a single item each."""
66
+ mid = len(self.items) // 2
67
+ if mid == 0:
68
+ return [self]
69
+ self.tracker.register_failure()
70
+ messages: list[ItemsRequest2] = []
71
+ for part in (self.items[:mid], self.items[mid:]):
72
+ new_request = self.model_copy(update={"items": part, "status_attempt": status_attempts})
73
+ new_request.tracker = self.tracker
74
+ messages.append(new_request)
75
+ return messages
76
+
77
+
78
+ class ItemResponse(BaseModel):
79
+ items: list[dict[str, JsonValue]]
80
+
81
+
82
+ class ItemsResultList(UserList[ItemsResultMessage2]):
83
+ def __init__(self, collection: Sequence[ItemsResultMessage2] | None = None) -> None:
84
+ super().__init__(collection or [])
85
+
86
+ def raise_for_status(self) -> None:
87
+ """Raises an exception if any response in the list indicates a failure."""
88
+ failed_responses = [resp for resp in self.data if isinstance(resp, ItemsFailedResponse2)]
89
+ failed_requests = [resp for resp in self.data if isinstance(resp, ItemsFailedRequest2)]
90
+ if not failed_responses and not failed_requests:
91
+ return
92
+ error_messages = "; ".join(f"Status {err.status_code}: {err.error.message}" for err in failed_responses)
93
+ if failed_requests:
94
+ if error_messages:
95
+ error_messages += "; "
96
+ error_messages += "; ".join(f"Request error: {err.error_message}" for err in failed_requests)
97
+ raise ToolkitAPIError(f"One or more requests failed: {error_messages}")
98
+
99
+ @property
100
+ def has_failed(self) -> bool:
101
+ """Indicates whether any response in the list indicates a failure.
102
+
103
+ Returns:
104
+ bool: True if there are any failed responses or requests, False otherwise.
105
+ """
106
+ for resp in self.data:
107
+ if isinstance(resp, ItemsFailedResponse2 | ItemsFailedRequest2):
108
+ return True
109
+ return False
110
+
111
+ def get_items(self) -> list[dict[str, JsonValue]]:
112
+ """Get the items from all successful responses."""
113
+ items: list[dict[str, JsonValue]] = []
114
+ for resp in self.data:
115
+ if isinstance(resp, ItemsSuccessResponse2):
116
+ body_json = ItemResponse.model_validate_json(resp.body)
117
+ items.extend(body_json.items)
118
+ return items
@@ -0,0 +1,19 @@
1
+ from typing import Any
2
+
3
+ from pydantic import BaseModel, ConfigDict
4
+ from pydantic.alias_generators import to_camel
5
+
6
+
7
+ class BaseModelRequest(BaseModel):
8
+ """Base class for all object. This includes resources and nested objects."""
9
+
10
+ model_config = ConfigDict(alias_generator=to_camel, extra="ignore", populate_by_name=True)
11
+
12
+ def dump(self, camel_case: bool = True) -> dict[str, Any]:
13
+ """Dump the object to a dictionary.
14
+
15
+ Args:
16
+ camel_case (bool): Whether to use camelCase for the keys. Default is True.
17
+
18
+ """
19
+ return self.model_dump(mode="json", by_alias=camel_case, exclude_unset=True)
@@ -0,0 +1,113 @@
1
+ import sys
2
+ from typing import Any, Literal
3
+
4
+ from pydantic import Field
5
+
6
+ from cognite_toolkit._cdf_tk.client.resource_classes.annotation import AnnotationStatus, AnnotationType
7
+ from cognite_toolkit._cdf_tk.client.resource_classes.data_modeling import NodeReference, ViewReference
8
+ from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId, InternalId
9
+
10
+ from .base import BaseModelRequest
11
+
12
+ if sys.version_info >= (3, 11):
13
+ from typing import Self
14
+ else:
15
+ from typing_extensions import Self
16
+
17
+
18
+ class Filter(BaseModelRequest): ...
19
+
20
+
21
+ class ClassicFilter(Filter):
22
+ asset_subtree_ids: list[ExternalId | InternalId] | None = None
23
+ data_set_ids: list[ExternalId | InternalId] | None = None
24
+
25
+ @classmethod
26
+ def from_asset_subtree_and_data_sets(
27
+ cls,
28
+ asset_subtree_id: str | int | list[str | int] | None = None,
29
+ data_set_id: str | int | list[str | int] | None = None,
30
+ ) -> Self:
31
+ return cls(
32
+ asset_subtree_ids=cls._as_internal_or_external_id_list(asset_subtree_id),
33
+ data_set_ids=cls._as_internal_or_external_id_list(data_set_id),
34
+ )
35
+
36
+ @classmethod
37
+ def _as_internal_or_external_id_list(
38
+ cls, id: str | int | list[str | int] | None
39
+ ) -> list[ExternalId | InternalId] | None:
40
+ if id is None:
41
+ return None
42
+ ids = id if isinstance(id, list) else [id]
43
+ return [ExternalId(external_id=item) if isinstance(item, str) else InternalId(id=item) for item in ids]
44
+
45
+
46
+ class DataModelingFilter(Filter):
47
+ space: str | None = None
48
+ include_global: bool | None = None
49
+
50
+
51
+ class ContainerFilter(DataModelingFilter):
52
+ used_for: Literal["node", "edge", "record", "all"] | None
53
+
54
+
55
+ class ViewFilter(DataModelingFilter):
56
+ include_inherited_properties: bool | None = None
57
+ all_versions: bool | None = None
58
+
59
+
60
+ class DataModelFilter(DataModelingFilter):
61
+ inline_views: bool | None = None
62
+ all_versions: bool | None = None
63
+
64
+
65
+ class InstanceFilter(Filter):
66
+ instance_type: Literal["node", "edge"] | None = None
67
+ source: ViewReference | None = None
68
+ space: list[str] | None = None
69
+
70
+ def dump(self, camel_case: bool = True) -> dict[str, Any]:
71
+ body: dict[str, Any] = {}
72
+ if self.instance_type is not None:
73
+ body["instanceType"] = self.instance_type
74
+ if self.source is not None:
75
+ body["sources"] = [{"source": self.source.dump()}]
76
+ if self.space is not None:
77
+ instance_type = self.instance_type or "node"
78
+ body["filter"] = {
79
+ "in": {
80
+ "property": [instance_type, "space"],
81
+ "values": self.space,
82
+ }
83
+ }
84
+ return body
85
+
86
+
87
+ class AnnotationFilter(Filter):
88
+ annotated_resource_type: Literal["file", "threedmodel"]
89
+ annotated_resource_ids: list[ExternalId | InternalId]
90
+ annotation_type: AnnotationType | None = None
91
+ created_app: str | None = None
92
+ creating_app_version: str | None = None
93
+ creating_user: str | None = None
94
+ status: AnnotationStatus | None = None
95
+
96
+
97
+ class ThreeDAssetMappingFilter(Filter): ...
98
+
99
+
100
+ class ThreeDAssetMappingAssetIdFilter(ThreeDAssetMappingFilter):
101
+ asset_ids: list[int] = Field(max_length=100)
102
+
103
+
104
+ class ThreeDAssetMappingAssetInstanceIdFilter(ThreeDAssetMappingFilter):
105
+ asset_instance_ids: list[NodeReference] = Field(max_length=100)
106
+
107
+
108
+ class ThreeDAssetMapping3DNodeFilter(ThreeDAssetMappingFilter):
109
+ node_ids: list[int] = Field(max_length=100)
110
+
111
+
112
+ class ThreeDAssetMappingTreeIndexFilter(ThreeDAssetMappingFilter):
113
+ tree_indexes: list[int] = Field(max_length=100)
@@ -0,0 +1,28 @@
1
+ UPSERT_BODY = """
2
+ mutation UpsertGraphQlDmlVersion($dmCreate: GraphQlDmlVersionUpsert!) {
3
+ upsertGraphQlDmlVersion(graphQlDmlVersion: $dmCreate) {
4
+ errors {
5
+ kind
6
+ message
7
+ hint
8
+ location {
9
+ start {
10
+ line
11
+ column
12
+ }
13
+ }
14
+ }
15
+ result {
16
+ space
17
+ externalId
18
+ version
19
+ name
20
+ description
21
+ graphQlDml
22
+ isGlobal
23
+ createdTime
24
+ lastUpdatedTime
25
+ }
26
+ }
27
+ }
28
+ """