cognite-toolkit 0.7.29__tar.gz → 0.7.30__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/PKG-INFO +1 -1
  2. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_upload.py +6 -16
  3. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/build_cmd.py +6 -61
  4. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/feature_flags.py +4 -0
  5. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +33 -1
  6. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/http_client/_client.py +153 -8
  7. cognite_toolkit-0.7.30/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +187 -0
  8. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/validation.py +79 -1
  9. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  10. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  11. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_resources/cdf.toml +1 -1
  12. cognite_toolkit-0.7.30/cognite_toolkit/_version.py +1 -0
  13. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/pyproject.toml +1 -1
  14. cognite_toolkit-0.7.29/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -97
  15. cognite_toolkit-0.7.29/cognite_toolkit/_version.py +0 -1
  16. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/README.md +0 -0
  17. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/__init__.py +0 -0
  18. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf.py +0 -0
  19. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/__init__.py +0 -0
  20. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/__init__.py +0 -0
  21. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_auth_app.py +0 -0
  22. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_core_app.py +0 -0
  23. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_data_app.py +0 -0
  24. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_dev_app.py +0 -0
  25. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_download_app.py +0 -0
  26. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_dump_app.py +0 -0
  27. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_landing_app.py +0 -0
  28. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_migrate_app.py +0 -0
  29. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_modules_app.py +0 -0
  30. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_profile_app.py +0 -0
  31. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_purge.py +0 -0
  32. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_repo_app.py +0 -0
  33. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_run.py +0 -0
  34. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/apps/_upload_app.py +0 -0
  35. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/__init__.py +0 -0
  36. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_base.py +0 -0
  37. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_datamodels.py +0 -0
  38. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_file.py +0 -0
  39. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_function.py +0 -0
  40. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_location.py +0 -0
  41. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_raw.py +0 -0
  42. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_streamlit.py +0 -0
  43. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/builders/_transformation.py +0 -0
  44. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cdf_toml.py +0 -0
  45. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/__init__.py +0 -0
  46. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/_constants.py +0 -0
  47. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/_toolkit_client.py +0 -0
  48. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/__init__.py +0 -0
  49. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/canvas.py +0 -0
  50. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/charts.py +0 -0
  51. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/dml.py +0 -0
  52. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +0 -0
  53. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/extended_files.py +0 -0
  54. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/extended_functions.py +0 -0
  55. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/extended_raw.py +0 -0
  56. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +0 -0
  57. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/fixed_transformations.py +0 -0
  58. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/infield.py +0 -0
  59. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/location_filters.py +0 -0
  60. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/lookup.py +0 -0
  61. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/migration.py +0 -0
  62. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/project.py +0 -0
  63. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -0
  64. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/api.py +0 -0
  65. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/capabilities.py +0 -0
  66. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/data_postprocessing.py +0 -0
  67. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/frames.py +0 -0
  68. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/locations.py +0 -0
  69. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/maps.py +0 -0
  70. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/robots.py +0 -0
  71. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/robotics/utlis.py +0 -0
  72. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/search.py +0 -0
  73. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/search_config.py +0 -0
  74. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/streams.py +0 -0
  75. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/three_d.py +0 -0
  76. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/token.py +0 -0
  77. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api/verify.py +0 -0
  78. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/api_client.py +0 -0
  79. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/config.py +0 -0
  80. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/__init__.py +0 -0
  81. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -0
  82. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/apm_config_v1.py +0 -0
  83. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -0
  84. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +0 -0
  85. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/capabilities.py +0 -0
  86. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/charts.py +0 -0
  87. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +0 -0
  88. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/extendable_cognite_file.py +0 -0
  89. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetadata.py +0 -0
  90. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetdata.py +0 -0
  91. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/extended_timeseries.py +0 -0
  92. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/functions.py +0 -0
  93. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/graphql_data_models.py +0 -0
  94. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/infield.py +0 -0
  95. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +0 -0
  96. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/instances.py +0 -0
  97. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/location_filters.py +0 -0
  98. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/migration.py +0 -0
  99. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/pending_instances_ids.py +0 -0
  100. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/project.py +0 -0
  101. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/raw.py +0 -0
  102. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/robotics.py +0 -0
  103. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +0 -0
  104. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/sequences.py +0 -0
  105. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +0 -0
  106. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/streams.py +0 -0
  107. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -0
  108. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/testing.py +0 -0
  109. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/utils/__init__.py +0 -0
  110. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/utils/_concurrency.py +0 -0
  111. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/client/utils/_http_client.py +0 -0
  112. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/__init__.py +0 -0
  113. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_base.py +0 -0
  114. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_changes.py +0 -0
  115. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_cli_commands.py +0 -0
  116. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_download.py +0 -0
  117. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +0 -0
  118. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/command.py +0 -0
  119. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +0 -0
  120. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +0 -0
  121. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +0 -0
  122. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +0 -0
  123. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +0 -0
  124. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +0 -0
  125. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +0 -0
  126. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +0 -0
  127. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +0 -0
  128. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +0 -0
  129. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_profile.py +0 -0
  130. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_purge.py +0 -0
  131. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_questionary_style.py +0 -0
  132. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_utils.py +0 -0
  133. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/_virtual_env.py +0 -0
  134. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/about.py +0 -0
  135. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/auth.py +0 -0
  136. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/clean.py +0 -0
  137. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/collect.py +0 -0
  138. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/deploy.py +0 -0
  139. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/dump_resource.py +0 -0
  140. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/init.py +0 -0
  141. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/modules.py +0 -0
  142. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/pull.py +0 -0
  143. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/repo.py +0 -0
  144. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/resources.py +0 -0
  145. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/commands/run.py +0 -0
  146. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/constants.py +0 -0
  147. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/__init__.py +0 -0
  148. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_base_cruds.py +0 -0
  149. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +0 -0
  150. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +0 -0
  151. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +0 -0
  152. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +0 -0
  153. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +0 -0
  154. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +0 -0
  155. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/data_organization.py +0 -0
  156. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +0 -0
  157. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +0 -0
  158. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +0 -0
  159. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +0 -0
  160. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +0 -0
  161. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/group_scoped.py +0 -0
  162. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/hosted_extractors.py +0 -0
  163. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +0 -0
  164. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +0 -0
  165. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +0 -0
  166. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +0 -0
  167. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +0 -0
  168. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +0 -0
  169. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +0 -0
  170. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py +0 -0
  171. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +0 -0
  172. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +0 -0
  173. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py +0 -0
  174. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/cruds/_worker.py +0 -0
  175. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/__init__.py +0 -0
  176. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_base.py +0 -0
  177. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_build_files.py +0 -0
  178. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +0 -0
  179. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +0 -0
  180. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +0 -0
  181. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +0 -0
  182. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_deploy_results.py +0 -0
  183. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +0 -0
  184. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +0 -0
  185. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +0 -0
  186. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_packages.py +0 -0
  187. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +0 -0
  188. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/data_classes/_yaml_comments.py +0 -0
  189. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/exceptions.py +0 -0
  190. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/hints.py +0 -0
  191. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/plugins.py +0 -0
  192. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/protocols.py +0 -0
  193. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
  194. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/prototypes/commands/import_.py +0 -0
  195. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -0
  196. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/__init__.py +0 -0
  197. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/agent.py +0 -0
  198. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +0 -0
  199. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/asset.py +0 -0
  200. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/authentication.py +0 -0
  201. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/base.py +0 -0
  202. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +0 -0
  203. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +0 -0
  204. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +0 -0
  205. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/containers.py +0 -0
  206. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/data_model.py +0 -0
  207. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +0 -0
  208. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/dataset.py +0 -0
  209. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/event.py +0 -0
  210. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +0 -0
  211. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +0 -0
  212. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/filemetadata.py +0 -0
  213. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +0 -0
  214. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/functions.py +0 -0
  215. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +0 -0
  216. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/groups.py +0 -0
  217. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +0 -0
  218. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +0 -0
  219. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +0 -0
  220. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +0 -0
  221. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +0 -0
  222. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +0 -0
  223. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +0 -0
  224. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/instance.py +0 -0
  225. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/labels.py +0 -0
  226. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/location.py +0 -0
  227. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/migration.py +0 -0
  228. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +0 -0
  229. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/relationship.py +0 -0
  230. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +0 -0
  231. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +0 -0
  232. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +0 -0
  233. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +0 -0
  234. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +0 -0
  235. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +0 -0
  236. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/search_config.py +0 -0
  237. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/securitycategories.py +0 -0
  238. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/sequence.py +0 -0
  239. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/space.py +0 -0
  240. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +0 -0
  241. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/streams.py +0 -0
  242. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/threedmodels.py +0 -0
  243. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/timeseries.py +0 -0
  244. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/transformation_destination.py +0 -0
  245. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +0 -0
  246. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/transformation_schedule.py +0 -0
  247. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/transformations.py +0 -0
  248. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +0 -0
  249. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/views.py +0 -0
  250. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/workflow.py +0 -0
  251. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +0 -0
  252. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +0 -0
  253. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/__init__.py +0 -0
  254. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_annotations.py +0 -0
  255. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_applications.py +0 -0
  256. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +0 -0
  257. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_base.py +0 -0
  258. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_data_classes.py +0 -0
  259. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_datapoints.py +0 -0
  260. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_file_content.py +0 -0
  261. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_instances.py +0 -0
  262. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/_raw.py +0 -0
  263. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +0 -0
  264. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +0 -0
  265. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +0 -0
  266. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +0 -0
  267. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +0 -0
  268. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +0 -0
  269. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +0 -0
  270. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +0 -0
  271. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +0 -0
  272. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/tk_warnings/base.py +0 -0
  273. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +0 -0
  274. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/tk_warnings/other.py +0 -0
  275. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/tracker.py +0 -0
  276. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/__init__.py +0 -0
  277. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/_auxiliary.py +0 -0
  278. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/aggregators.py +0 -0
  279. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/auth.py +0 -0
  280. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/auxiliary.py +0 -0
  281. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/cdf.py +0 -0
  282. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/cicd.py +0 -0
  283. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/cli_args.py +0 -0
  284. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/collection.py +0 -0
  285. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/diff_list.py +0 -0
  286. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +0 -0
  287. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/file.py +0 -0
  288. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +0 -0
  289. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/fileio/_base.py +0 -0
  290. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +0 -0
  291. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +0 -0
  292. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +0 -0
  293. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/graphql_parser.py +0 -0
  294. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/hashing.py +0 -0
  295. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +0 -0
  296. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +0 -0
  297. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -0
  298. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +0 -0
  299. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/interactive_select.py +0 -0
  300. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/modules.py +0 -0
  301. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/producer_worker.py +0 -0
  302. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/progress_tracker.py +0 -0
  303. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/repository.py +0 -0
  304. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/sentry_utils.py +0 -0
  305. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/sql_parser.py +0 -0
  306. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/text.py +0 -0
  307. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +0 -0
  308. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/useful_types.py +0 -0
  309. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_cdf_tk/utils/validate_access.py +0 -0
  310. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/.env.tmpl +0 -0
  311. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/.gitignore +0 -0
  312. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md +0 -0
  313. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +0 -0
  314. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +0 -0
  315. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/config.dev.yaml +0 -0
  316. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/demo/__init__.py +0 -0
  317. {cognite_toolkit-0.7.29 → cognite_toolkit-0.7.30}/cognite_toolkit/demo/_base.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite_toolkit
3
- Version: 0.7.29
3
+ Version: 0.7.30
4
4
  Summary: Official Cognite Data Fusion tool for project templates and configuration deployment
5
5
  Author: Cognite AS
6
6
  Author-email: Cognite AS <support@cognite.com>
@@ -6,7 +6,6 @@ from pathlib import Path
6
6
  from cognite.client.data_classes.data_modeling import (
7
7
  ViewId,
8
8
  )
9
- from pydantic import ValidationError
10
9
  from rich.console import Console
11
10
 
12
11
  from cognite_toolkit._cdf_tk.client import ToolkitClient
@@ -20,18 +19,15 @@ from cognite_toolkit._cdf_tk.storageio import (
20
19
  get_upload_io,
21
20
  )
22
21
  from cognite_toolkit._cdf_tk.storageio._base import TableUploadableStorageIO, UploadItem
23
- from cognite_toolkit._cdf_tk.storageio.selectors import Selector, SelectorAdapter
22
+ from cognite_toolkit._cdf_tk.storageio.selectors import Selector, load_selector
24
23
  from cognite_toolkit._cdf_tk.storageio.selectors._instances import InstanceSpaceSelector
25
- from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning, MediumSeverityWarning
26
- from cognite_toolkit._cdf_tk.tk_warnings.fileread import ResourceFormatWarning
24
+ from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning, MediumSeverityWarning, ToolkitWarning
27
25
  from cognite_toolkit._cdf_tk.utils.auth import EnvironmentVariables
28
- from cognite_toolkit._cdf_tk.utils.file import read_yaml_file
29
26
  from cognite_toolkit._cdf_tk.utils.fileio import MultiFileReader
30
27
  from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, ItemMessage, SuccessResponseItems
31
28
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
32
29
  from cognite_toolkit._cdf_tk.utils.progress_tracker import ProgressTracker
33
30
  from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
34
- from cognite_toolkit._cdf_tk.validation import humanize_validation_error
35
31
 
36
32
  from ._base import ToolkitCommand
37
33
  from .deploy import DeployCommand
@@ -141,17 +137,11 @@ class UploadCommand(ToolkitCommand):
141
137
  """Finds data files and their corresponding metadata files in the input directory."""
142
138
  data_files_by_metadata: dict[Selector, list[Path]] = {}
143
139
  for manifest_file in input_dir.glob(f"*{DATA_MANIFEST_SUFFIX}"):
144
- selector_dict = read_yaml_file(manifest_file, expected_output="dict")
145
- try:
146
- selector = SelectorAdapter.validate_python(selector_dict)
147
- except ValidationError as e:
148
- errors = humanize_validation_error(e)
149
- self.warn(
150
- ResourceFormatWarning(
151
- manifest_file, tuple(errors), text="Invalid selector in metadata file, skipping."
152
- )
153
- )
140
+ selector_or_warning = load_selector(manifest_file)
141
+ if isinstance(selector_or_warning, ToolkitWarning):
142
+ self.warn(selector_or_warning)
154
143
  continue
144
+ selector: Selector = selector_or_warning
155
145
  data_files = selector.find_data_files(input_dir, manifest_file)
156
146
  if not data_files:
157
147
  self.warn(
@@ -20,7 +20,6 @@ from cognite_toolkit._cdf_tk.constants import (
20
20
  _RUNNING_IN_BROWSER,
21
21
  BUILD_FOLDER_ENCODING,
22
22
  DEFAULT_ENV,
23
- DEV_ONLY_MODULES,
24
23
  HINT_LEAD_TEXT,
25
24
  ROOT_MODULES,
26
25
  TEMPLATE_VARS_FILE_SUFFIXES,
@@ -59,10 +58,7 @@ from cognite_toolkit._cdf_tk.data_classes import (
59
58
  SourceLocationLazy,
60
59
  )
61
60
  from cognite_toolkit._cdf_tk.exceptions import (
62
- ToolkitDuplicatedModuleError,
63
- ToolkitEnvError,
64
61
  ToolkitError,
65
- ToolkitMissingModuleError,
66
62
  ToolkitYAMLFormatError,
67
63
  )
68
64
  from cognite_toolkit._cdf_tk.hints import Hint, ModuleDefinition, verify_module_directory
@@ -89,6 +85,7 @@ from cognite_toolkit._cdf_tk.utils.file import safe_rmtree
89
85
  from cognite_toolkit._cdf_tk.utils.modules import parse_user_selected_modules
90
86
  from cognite_toolkit._cdf_tk.validation import (
91
87
  validate_data_set_is_set,
88
+ validate_module_selection,
92
89
  validate_modules_variables,
93
90
  validate_resource_yaml_pydantic,
94
91
  )
@@ -207,7 +204,11 @@ class BuildCommand(ToolkitCommand):
207
204
 
208
205
  user_selected_modules = config.environment.get_selected_modules(packages)
209
206
  modules = ModuleDirectories.load(organization_dir, user_selected_modules)
210
- self._validate_modules(modules, config, packages, user_selected_modules, organization_dir)
207
+ module_warnings = validate_module_selection(modules, config, packages, user_selected_modules, organization_dir)
208
+ if module_warnings:
209
+ self.warning_list.extend(module_warnings)
210
+ if self.print_warning:
211
+ print(str(module_warnings))
211
212
 
212
213
  if verbose:
213
214
  self.console("Selected packages:")
@@ -422,62 +423,6 @@ class BuildCommand(ToolkitCommand):
422
423
  builder = self._builder_by_resource_folder[resource_name]
423
424
  return builder
424
425
 
425
- def _validate_modules(
426
- self,
427
- modules: ModuleDirectories,
428
- config: BuildConfigYAML,
429
- packages: dict[str, list[str]],
430
- selected_modules: set[str | Path],
431
- organization_dir: Path,
432
- ) -> None:
433
- # Validations: Ambiguous selection.
434
- selected_names = {s for s in config.environment.selected if isinstance(s, str)}
435
- if duplicate_modules := {
436
- module_name: paths
437
- for module_name, paths in modules.as_path_by_name().items()
438
- if len(paths) > 1 and module_name in selected_names
439
- }:
440
- # If the user has selected a module by name, and there are multiple modules with that name, raise an error.
441
- # Note, if the user uses a path to select a module, this error will not be raised.
442
- raise ToolkitDuplicatedModuleError(
443
- f"Ambiguous module selected in config.{config.environment.name}.yaml:", duplicate_modules
444
- )
445
- # Package Referenced Modules Exists
446
- for package, package_modules in packages.items():
447
- if package not in selected_names:
448
- # We do not check packages that are not selected.
449
- # Typically, the user will delete the modules that are irrelevant for them;
450
- # thus we only check the selected packages.
451
- continue
452
- if missing_packages := set(package_modules) - modules.available_names:
453
- ToolkitMissingModuleError(
454
- f"Package {package} defined in {CDFToml.file_name!s} is referring "
455
- f"the following missing modules {missing_packages}."
456
- )
457
-
458
- # Selected modules does not exists
459
- if missing_modules := set(selected_modules) - modules.available:
460
- hint = ModuleDefinition.long(missing_modules, organization_dir)
461
- raise ToolkitMissingModuleError(
462
- f"The following selected modules are missing, please check path: {missing_modules}.\n{hint}"
463
- )
464
-
465
- # Nothing is Selected
466
- if not modules.selected:
467
- raise ToolkitEnvError(
468
- f"No selected modules specified in {config.filepath!s}, have you configured "
469
- f"the environment ({config.environment.name})?"
470
- )
471
-
472
- dev_modules = modules.available_names & DEV_ONLY_MODULES
473
- if dev_modules and config.environment.validation_type != "dev":
474
- self.warn(
475
- MediumSeverityWarning(
476
- "The following modules should [bold]only[/bold] be used a in CDF Projects designated as dev (development): "
477
- f"{humanize_collection(dev_modules)!r}",
478
- )
479
- )
480
-
481
426
  def _replace_variables(
482
427
  self,
483
428
  resource_files: Sequence[Path],
@@ -57,6 +57,10 @@ class Flags(Enum):
57
57
  visible=True,
58
58
  description="Enables extended download to support downloading file content and datapoints",
59
59
  )
60
+ EXTEND_UPLOAD = FlagMetadata(
61
+ visible=True,
62
+ description="Enables extended upload to support uploading individual files",
63
+ )
60
64
 
61
65
  def is_enabled(self) -> bool:
62
66
  return FeatureFlag.is_enabled(self)
@@ -1,6 +1,13 @@
1
+ from pathlib import Path
1
2
  from typing import Annotated
2
3
 
3
- from pydantic import Field, TypeAdapter
4
+ from pydantic import Field, TypeAdapter, ValidationError
5
+
6
+ from cognite_toolkit._cdf_tk.feature_flags import Flags
7
+ from cognite_toolkit._cdf_tk.tk_warnings import MediumSeverityWarning, ToolkitWarning
8
+ from cognite_toolkit._cdf_tk.tk_warnings.fileread import ResourceFormatWarning
9
+ from cognite_toolkit._cdf_tk.utils.file import read_yaml_file
10
+ from cognite_toolkit._cdf_tk.validation import humanize_validation_error
4
11
 
5
12
  from ._asset_centric import AssetCentricFileSelector, AssetCentricSelector, AssetSubtreeSelector, DataSetSelector
6
13
  from ._base import DataSelector
@@ -52,9 +59,33 @@ Selector = Annotated[
52
59
  Field(discriminator="type"),
53
60
  ]
54
61
 
62
+ ALPHA_SELECTORS = {FileIdentifierSelector}
63
+
55
64
  SelectorAdapter: TypeAdapter[Selector] = TypeAdapter(Selector)
56
65
 
57
66
 
67
+ def load_selector(manifest_file: Path) -> Selector | ToolkitWarning:
68
+ """Loads a selector from a manifest file.
69
+
70
+ Args:
71
+ manifest_file: Path to the manifest file.
72
+
73
+ Returns:
74
+ A selector object or a toolkit warning if loading fails or the selector is an alpha feature that is not enabled.
75
+ """
76
+ selector_dict = read_yaml_file(manifest_file, expected_output="dict")
77
+ try:
78
+ selector = SelectorAdapter.validate_python(selector_dict)
79
+ except ValidationError as e:
80
+ errors = humanize_validation_error(e)
81
+ return ResourceFormatWarning(manifest_file, tuple(errors), text="Invalid selector in metadata file, skipping.")
82
+ if not Flags.EXTEND_UPLOAD.is_enabled() and type(selector) in ALPHA_SELECTORS:
83
+ return MediumSeverityWarning(
84
+ f"Selector type '{type(selector).__name__}' in file '{manifest_file}' is in alpha. To enable it set the alpha flag 'extend-upload = true' in your CDF.toml file."
85
+ )
86
+ return selector
87
+
88
+
58
89
  __all__ = [
59
90
  "AllChartsSelector",
60
91
  "AssetCentricFileSelector",
@@ -89,4 +120,5 @@ __all__ = [
89
120
  "Selector",
90
121
  "SelectorAdapter",
91
122
  "TimeSeriesColumn",
123
+ "load_selector",
92
124
  ]
@@ -4,7 +4,7 @@ import sys
4
4
  import time
5
5
  from collections import deque
6
6
  from collections.abc import MutableMapping, Sequence, Set
7
- from typing import Literal
7
+ from typing import Literal, TypeVar
8
8
 
9
9
  import httpx
10
10
  from cognite.client import global_config
@@ -29,6 +29,11 @@ from cognite_toolkit._cdf_tk.utils.http_client._data_classes2 import (
29
29
  FailedRequest2,
30
30
  FailedResponse2,
31
31
  HTTPResult2,
32
+ ItemsFailedRequest2,
33
+ ItemsFailedResponse2,
34
+ ItemsRequest2,
35
+ ItemsResultMessage2,
36
+ ItemsSuccessResponse2,
32
37
  RequestMessage2,
33
38
  SuccessResponse2,
34
39
  )
@@ -41,6 +46,8 @@ else:
41
46
 
42
47
  from cognite_toolkit._cdf_tk.client.config import ToolkitClientConfig
43
48
 
49
+ _T_Request_Message = TypeVar("_T_Request_Message", bound=BaseRequestMessage)
50
+
44
51
 
45
52
  class HTTPClient:
46
53
  """An HTTP client.
@@ -344,6 +351,17 @@ class HTTPClient:
344
351
  body=response.text,
345
352
  content=response.content,
346
353
  )
354
+ if retry_request := self._retry_request(response, request):
355
+ return retry_request
356
+ else:
357
+ # Permanent failure
358
+ return FailedResponse2(
359
+ status_code=response.status_code,
360
+ body=response.text,
361
+ error=ErrorDetails2.from_response(response),
362
+ )
363
+
364
+ def _retry_request(self, response: httpx.Response, request: _T_Request_Message) -> _T_Request_Message | None:
347
365
  retry_after = self._get_retry_after_in_header(response)
348
366
  if retry_after is not None and response.status_code == 429 and request.status_attempt < self._max_retries:
349
367
  if self._console is not None:
@@ -359,13 +377,7 @@ class HTTPClient:
359
377
  request.status_attempt += 1
360
378
  time.sleep(self._backoff_time(request.total_attempts))
361
379
  return request
362
- else:
363
- # Permanent failure
364
- return FailedResponse2(
365
- status_code=response.status_code,
366
- body=response.text,
367
- error=ErrorDetails2.from_response(response),
368
- )
380
+ return None
369
381
 
370
382
  def _handle_error_single(self, e: Exception, request: RequestMessage2) -> RequestMessage2 | HTTPResult2:
371
383
  if isinstance(e, httpx.ReadTimeout | httpx.TimeoutException):
@@ -388,3 +400,136 @@ class HTTPClient:
388
400
  error_msg = f"RequestException after {request.total_attempts - 1} attempts ({error_type} error): {e!s}"
389
401
 
390
402
  return FailedRequest2(error=error_msg)
403
+
404
+ def request_items(self, message: ItemsRequest2) -> Sequence[ItemsRequest2 | ItemsResultMessage2]:
405
+ """Send an HTTP request with multiple items and return the response.
406
+
407
+ Args:
408
+ message (ItemsRequest2): The request message to send.
409
+ Returns:
410
+ Sequence[ItemsRequest2 | ItemsResultMessage2]: The response message(s). This can also
411
+ include ItemsRequest2(s) to be retried or split.
412
+ """
413
+ if message.tracker and message.tracker.limit_reached():
414
+ return [
415
+ ItemsFailedRequest2(
416
+ ids=[item.as_id() for item in message.items],
417
+ error_message=f"Aborting further splitting of requests after {message.tracker.failed_split_count} failed attempts.",
418
+ )
419
+ ]
420
+ try:
421
+ response = self._make_request2(message)
422
+ results = self._handle_items_response(response, message)
423
+ except Exception as e:
424
+ results = self._handle_items_error(e, message)
425
+ return results
426
+
427
+ def request_items_retries(self, message: ItemsRequest2) -> Sequence[ItemsResultMessage2]:
428
+ """Send an HTTP request with multiple items and handle retries.
429
+
430
+ This method will keep retrying the request until it either succeeds or
431
+ exhausts the maximum number of retries.
432
+
433
+ Note this method will use the current thread to process all request, thus
434
+ it is blocking.
435
+
436
+ Args:
437
+ message (ItemsRequest2): The request message to send.
438
+ Returns:
439
+ Sequence[ItemsResultMessage2]: The final response message, which can be either successful response or failed request.
440
+ """
441
+ if message.total_attempts > 0:
442
+ raise RuntimeError(f"ItemsRequest2 has already been attempted {message.total_attempts} times.")
443
+ pending_requests: deque[ItemsRequest2] = deque()
444
+ pending_requests.append(message)
445
+ final_responses: list[ItemsResultMessage2] = []
446
+ while pending_requests:
447
+ current_request = pending_requests.popleft()
448
+ results = self.request_items(current_request)
449
+
450
+ for result in results:
451
+ if isinstance(result, ItemsRequest2):
452
+ pending_requests.append(result)
453
+ elif isinstance(result, ItemsResultMessage2):
454
+ final_responses.append(result)
455
+ else:
456
+ raise TypeError(f"Unexpected result type: {type(result)}")
457
+
458
+ return final_responses
459
+
460
+ def _handle_items_response(
461
+ self, response: httpx.Response, request: ItemsRequest2
462
+ ) -> Sequence[ItemsRequest2 | ItemsResultMessage2]:
463
+ if 200 <= response.status_code < 300:
464
+ return [
465
+ ItemsSuccessResponse2(
466
+ ids=[item.as_id() for item in request.items],
467
+ status_code=response.status_code,
468
+ body=response.text,
469
+ content=response.content,
470
+ )
471
+ ]
472
+ elif len(request.items) > 1 and response.status_code in self._split_items_status_codes:
473
+ # 4XX: Status there is at least one item that is invalid, split the batch to get all valid items processed
474
+ # 5xx: Server error, split to reduce the number of items in each request, and count as a status attempt
475
+ status_attempts = request.status_attempt
476
+ if 500 <= response.status_code < 600:
477
+ status_attempts += 1
478
+ splits = request.split(status_attempts=status_attempts)
479
+ if splits[0].tracker and splits[0].tracker.limit_reached():
480
+ return [
481
+ ItemsFailedResponse2(
482
+ ids=[item.as_id() for item in request.items],
483
+ status_code=response.status_code,
484
+ body=response.text,
485
+ error=ErrorDetails2.from_response(response),
486
+ )
487
+ ]
488
+ return splits
489
+
490
+ if retry_request := self._retry_request(response, request):
491
+ return [retry_request]
492
+ else:
493
+ # Permanent failure
494
+ return [
495
+ ItemsFailedResponse2(
496
+ ids=[item.as_id() for item in request.items],
497
+ status_code=response.status_code,
498
+ body=response.text,
499
+ error=ErrorDetails2.from_response(response),
500
+ )
501
+ ]
502
+
503
+ def _handle_items_error(
504
+ self, e: Exception, request: ItemsRequest2
505
+ ) -> Sequence[ItemsRequest2 | ItemsResultMessage2]:
506
+ if isinstance(e, httpx.ReadTimeout | httpx.TimeoutException):
507
+ error_type = "read"
508
+ request.read_attempt += 1
509
+ attempts = request.read_attempt
510
+ elif isinstance(e, ConnectionError | httpx.ConnectError | httpx.ConnectTimeout):
511
+ error_type = "connect"
512
+ request.connect_attempt += 1
513
+ attempts = request.connect_attempt
514
+ else:
515
+ error_msg = f"Unexpected exception: {e!s}"
516
+ return [
517
+ ItemsFailedRequest2(
518
+ ids=[item.as_id() for item in request.items],
519
+ error_message=error_msg,
520
+ )
521
+ ]
522
+
523
+ if attempts <= self._max_retries:
524
+ time.sleep(self._backoff_time(request.total_attempts))
525
+ return [request]
526
+ else:
527
+ # We have already incremented the attempt count, so we subtract 1 here
528
+ error_msg = f"RequestException after {request.total_attempts - 1} attempts ({error_type} error): {e!s}"
529
+
530
+ return [
531
+ ItemsFailedRequest2(
532
+ ids=[item.as_id() for item in request.items],
533
+ error_message=error_msg,
534
+ )
535
+ ]
@@ -0,0 +1,187 @@
1
+ import gzip
2
+ import sys
3
+ from abc import ABC, abstractmethod
4
+ from collections.abc import Hashable
5
+ from typing import Any, Literal
6
+
7
+ import httpx
8
+ from cognite.client import global_config
9
+ from pydantic import BaseModel, ConfigDict, Field, JsonValue, TypeAdapter, model_validator
10
+ from pydantic.alias_generators import to_camel
11
+
12
+ from cognite_toolkit._cdf_tk.utils.http_client._tracker import ItemsRequestTracker
13
+ from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
14
+
15
+ if sys.version_info >= (3, 11):
16
+ from typing import Self
17
+ else:
18
+ from typing_extensions import Self
19
+
20
+
21
+ class HTTPResult2(BaseModel): ...
22
+
23
+
24
+ class FailedRequest2(HTTPResult2):
25
+ error: str
26
+
27
+
28
+ class SuccessResponse2(HTTPResult2):
29
+ status_code: int
30
+ body: str
31
+ content: bytes
32
+
33
+
34
+ class ErrorDetails2(BaseModel):
35
+ """This is the expected structure of error details in the CDF API"""
36
+
37
+ code: int
38
+ message: str
39
+ missing: list[JsonValue] | None = None
40
+ duplicated: list[JsonValue] | None = None
41
+ is_auto_retryable: bool | None = None
42
+
43
+ @classmethod
44
+ def from_response(cls, response: httpx.Response) -> "ErrorDetails2":
45
+ """Populate the error details from a httpx response."""
46
+ try:
47
+ res = TypeAdapter(dict[Literal["error"], ErrorDetails2]).validate_json(response.text)
48
+ except ValueError:
49
+ return cls(code=response.status_code, message=response.text)
50
+ return res["error"]
51
+
52
+
53
+ class FailedResponse2(HTTPResult2):
54
+ status_code: int
55
+ body: str
56
+ error: ErrorDetails2
57
+
58
+
59
+ class BaseRequestMessage(BaseModel, ABC):
60
+ endpoint_url: str
61
+ method: Literal["GET", "POST", "PATCH", "DELETE", "PUT"]
62
+ connect_attempt: int = 0
63
+ read_attempt: int = 0
64
+ status_attempt: int = 0
65
+ api_version: str | None = None
66
+ content_type: str = "application/json"
67
+ accept: str = "application/json"
68
+
69
+ parameters: dict[str, PrimitiveType] | None = None
70
+
71
+ @property
72
+ def total_attempts(self) -> int:
73
+ return self.connect_attempt + self.read_attempt + self.status_attempt
74
+
75
+ @property
76
+ @abstractmethod
77
+ def content(self) -> str | bytes | None: ...
78
+
79
+
80
+ class RequestMessage2(BaseRequestMessage):
81
+ data_content: bytes | None = None
82
+ body_content: dict[str, JsonValue] | None = None
83
+
84
+ @model_validator(mode="before")
85
+ def check_data_or_body(cls, values: dict[str, Any]) -> dict[str, Any]:
86
+ if values.get("data_content") is not None and values.get("body_content") is not None:
87
+ raise ValueError("Only one of data_content or body_content can be set.")
88
+ return values
89
+
90
+ @property
91
+ def content(self) -> str | bytes | None:
92
+ data: str | bytes | None = None
93
+ if self.data_content is not None:
94
+ data = self.data_content
95
+ if not global_config.disable_gzip:
96
+ data = gzip.compress(data)
97
+ elif self.body_content is not None:
98
+ # We serialize using pydantic instead of json.dumps. This is because pydantic is faster
99
+ # and handles more complex types such as datetime, float('nan'), etc.
100
+ data = _BODY_SERIALIZER.dump_json(self.body_content)
101
+ if not global_config.disable_gzip and isinstance(data, str):
102
+ data = gzip.compress(data.encode("utf-8"))
103
+ return data
104
+
105
+
106
+ _BODY_SERIALIZER = TypeAdapter(dict[str, JsonValue])
107
+
108
+
109
+ class ItemsResultMessage2(BaseModel):
110
+ ids: list[Hashable]
111
+
112
+
113
+ class ItemsFailedRequest2(ItemsResultMessage2):
114
+ error_message: str
115
+
116
+
117
+ class ItemsSuccessResponse2(ItemsResultMessage2):
118
+ status_code: int
119
+ body: str
120
+ content: bytes
121
+
122
+
123
+ class ItemsFailedResponse2(ItemsResultMessage2):
124
+ status_code: int
125
+ error: ErrorDetails2
126
+ body: str
127
+
128
+
129
+ class BaseModelObject(BaseModel):
130
+ """Base class for all object. This includes resources and nested objects."""
131
+
132
+ # We allow extra fields to support forward compatibility.
133
+ model_config = ConfigDict(alias_generator=to_camel, extra="allow")
134
+
135
+ def dump(self, camel_case: bool = True) -> dict[str, Any]:
136
+ """Dump the resource to a dictionary.
137
+
138
+ This is the default serialization method for request resources.
139
+ """
140
+ return self.model_dump(mode="json", by_alias=camel_case, exclude_unset=True)
141
+
142
+ @classmethod
143
+ def _load(cls, resource: dict[str, Any]) -> "Self":
144
+ """Load method to match CogniteResource signature."""
145
+ return cls.model_validate(resource)
146
+
147
+
148
+ class RequestResource(BaseModelObject, ABC):
149
+ @abstractmethod
150
+ def as_id(self) -> Hashable: ...
151
+
152
+
153
+ def _set_default_tracker(data: dict[str, Any]) -> ItemsRequestTracker:
154
+ if "tracker" not in data or data["tracker"] is None:
155
+ return ItemsRequestTracker(data.get("max_failures_before_abort", 50))
156
+ return data["tracker"]
157
+
158
+
159
+ class ItemsRequest2(BaseRequestMessage):
160
+ model_config = ConfigDict(arbitrary_types_allowed=True)
161
+ items: list[RequestResource]
162
+ extra_body_fields: dict[str, JsonValue] | None = None
163
+ max_failures_before_abort: int = 50
164
+ tracker: ItemsRequestTracker = Field(init=False, default_factory=_set_default_tracker, exclude=True)
165
+
166
+ @property
167
+ def content(self) -> str | bytes | None:
168
+ body: dict[str, JsonValue] = {"items": [item.dump() for item in self.items]}
169
+ if self.extra_body_fields:
170
+ body.update(self.extra_body_fields)
171
+ res = _BODY_SERIALIZER.dump_json(body)
172
+ if not global_config.disable_gzip and isinstance(res, str):
173
+ return gzip.compress(res.encode("utf-8"))
174
+ return res
175
+
176
+ def split(self, status_attempts: int) -> list["ItemsRequest2"]:
177
+ """Split the request into multiple requests with a single item each."""
178
+ mid = len(self.items) // 2
179
+ if mid == 0:
180
+ return [self]
181
+ self.tracker.register_failure()
182
+ messages: list[ItemsRequest2] = []
183
+ for part in (self.items[:mid], self.items[mid:]):
184
+ new_request = self.model_copy(update={"items": part, "status_attempt": status_attempts})
185
+ new_request.tracker = self.tracker
186
+ messages.append(new_request)
187
+ return messages