dataiku-api-client 14.6.1__tar.gz → 14.7.0__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 (136) hide show
  1. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/HISTORY.txt +10 -0
  2. {dataiku_api_client-14.6.1/dataiku_api_client.egg-info → dataiku_api_client-14.7.0}/PKG-INFO +12 -2
  3. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0/dataiku_api_client.egg-info}/PKG-INFO +12 -2
  4. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/SOURCES.txt +1 -0
  5. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/admin.py +10 -1
  6. dataiku_api_client-14.7.0/dataikuapi/dss/cobuild.py +317 -0
  7. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_tracing/__init__.py +1 -0
  8. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/messaging_channel.py +4 -4
  9. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/ml.py +9 -8
  10. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/project.py +107 -6
  11. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dssclient.py +9 -8
  12. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact.py +5 -5
  13. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern_client.py +0 -6
  14. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/setup.py +1 -1
  15. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/LICENSE.txt +0 -0
  16. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/MANIFEST.in +0 -0
  17. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/README +0 -0
  18. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/dependency_links.txt +0 -0
  19. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/requires.txt +0 -0
  20. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/top_level.txt +0 -0
  21. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/__init__.py +0 -0
  22. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/__init__.py +0 -0
  23. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/auth.py +0 -0
  24. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/service.py +0 -0
  25. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin_client.py +0 -0
  26. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/apinode_client.py +0 -0
  27. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/auth.py +0 -0
  28. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/base_client.py +0 -0
  29. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/__init__.py +0 -0
  30. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent.py +0 -0
  31. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_review.py +0 -0
  32. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_tool.py +0 -0
  33. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/analysis.py +0 -0
  34. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/apideployer.py +0 -0
  35. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/apiservice.py +0 -0
  36. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/app.py +0 -0
  37. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/businessapp.py +0 -0
  38. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/codestudio.py +0 -0
  39. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/continuousactivity.py +0 -0
  40. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/dashboard.py +0 -0
  41. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_collection.py +0 -0
  42. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_directories_footprint.py +0 -0
  43. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_quality.py +0 -0
  44. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/dataset.py +0 -0
  45. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/discussion.py +0 -0
  46. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/document_extractor.py +0 -0
  47. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/drift.py +0 -0
  48. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/enterprise_asset_library.py +0 -0
  49. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationcomparison.py +0 -0
  50. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationstore.py +0 -0
  51. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/feature_store.py +0 -0
  52. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/flow.py +0 -0
  53. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/future.py +0 -0
  54. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/insight.py +0 -0
  55. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/job.py +0 -0
  56. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/jupyternotebook.py +0 -0
  57. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/knowledgebank.py +0 -0
  58. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/labeling_task.py +0 -0
  59. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/__init__.py +0 -0
  60. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/embeddings.py +0 -0
  61. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/knowledge_bank.py +0 -0
  62. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/llm.py +0 -0
  63. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/tool.py +0 -0
  64. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/utils.py +0 -0
  65. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm.py +0 -0
  66. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_utils/__init__.py +0 -0
  67. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/local_model.py +0 -0
  68. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/macro.py +0 -0
  69. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/managedfolder.py +0 -0
  70. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/meaning.py +0 -0
  71. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/metrics.py +0 -0
  72. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/mlflow.py +0 -0
  73. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelcomparison.py +0 -0
  74. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelevaluationstore.py +0 -0
  75. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/notebook.py +0 -0
  76. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/plugin.py +0 -0
  77. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/project_standards.py +0 -0
  78. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectdeployer.py +0 -0
  79. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectfolder.py +0 -0
  80. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectlibrary.py +0 -0
  81. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/recipe.py +0 -0
  82. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/retrieval_augmented_llm.py +0 -0
  83. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/savedmodel.py +0 -0
  84. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/scenario.py +0 -0
  85. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/semantic_model.py +0 -0
  86. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlnotebook.py +0 -0
  87. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlquery.py +0 -0
  88. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/statistics.py +0 -0
  89. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/streaming_endpoint.py +0 -0
  90. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/__init__.py +0 -0
  91. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/codegen.py +0 -0
  92. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/langchain.py +0 -0
  93. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/unifiedmonitoring.py +0 -0
  94. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/utils.py +0 -0
  95. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/webapp.py +0 -0
  96. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/wiki.py +0 -0
  97. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss/workspace.py +0 -0
  98. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/__init__.py +0 -0
  99. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/artifact_repository.py +0 -0
  100. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/header_provider.py +0 -0
  101. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/utils.py +0 -0
  102. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/__init__.py +0 -0
  103. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/cloudaccounts.py +0 -0
  104. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/future.py +0 -0
  105. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/instances.py +0 -0
  106. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/instancesettingstemplates.py +0 -0
  107. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/loadbalancers.py +0 -0
  108. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/tenant.py +0 -0
  109. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fm/virtualnetworks.py +0 -0
  110. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/fmclient.py +0 -0
  111. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/__init__.py +0 -0
  112. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin.py +0 -0
  113. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_blueprint_designer.py +0 -0
  114. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_custom_pages_handler.py +0 -0
  115. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_roles_permissions_handler.py +0 -0
  116. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact_search.py +0 -0
  117. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/blueprint.py +0 -0
  118. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/custom_page.py +0 -0
  119. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/future.py +0 -0
  120. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/time_series.py +0 -0
  121. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/uploaded_file.py +0 -0
  122. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/govern/users_container.py +0 -0
  123. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/iam/__init__.py +0 -0
  124. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/iam/settings.py +0 -0
  125. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/__init__.py +0 -0
  126. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/exceptions.py +0 -0
  127. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/group.py +0 -0
  128. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/node.py +0 -0
  129. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/profile.py +0 -0
  130. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/response.py +0 -0
  131. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/task.py +0 -0
  132. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/user.py +0 -0
  133. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/launchpad_client.py +0 -0
  134. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/dataikuapi/utils.py +0 -0
  135. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/requirements.txt +0 -0
  136. {dataiku_api_client-14.6.1 → dataiku_api_client-14.7.0}/setup.cfg +0 -0
@@ -2,6 +2,16 @@ Changelog
2
2
  ==========
3
3
 
4
4
 
5
+ 14.7.0 (2026-06-18)
6
+ -------------------
7
+
8
+ * Initial release for DSS 14.7.0
9
+
10
+ 14.6.2 (2026-06-15)
11
+ -------------------
12
+
13
+ * Initial release for DSS 14.6.2
14
+
5
15
  14.6.1 (2026-06-05)
6
16
  -------------------
7
17
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 14.6.1
3
+ Version: 14.7.0
4
4
  Summary: Python API client for Dataiku APIs
5
5
  Home-page: https://www.dataiku.com
6
- Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.6.1
6
+ Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.0
7
7
  Author: Dataiku
8
8
  Author-email: support@dataiku.com
9
9
  License: Apache Software License
@@ -36,6 +36,16 @@ Changelog
36
36
  ==========
37
37
 
38
38
 
39
+ 14.7.0 (2026-06-18)
40
+ -------------------
41
+
42
+ * Initial release for DSS 14.7.0
43
+
44
+ 14.6.2 (2026-06-15)
45
+ -------------------
46
+
47
+ * Initial release for DSS 14.6.2
48
+
39
49
  14.6.1 (2026-06-05)
40
50
  -------------------
41
51
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 14.6.1
3
+ Version: 14.7.0
4
4
  Summary: Python API client for Dataiku APIs
5
5
  Home-page: https://www.dataiku.com
6
- Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.6.1
6
+ Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/14.7.0
7
7
  Author: Dataiku
8
8
  Author-email: support@dataiku.com
9
9
  License: Apache Software License
@@ -36,6 +36,16 @@ Changelog
36
36
  ==========
37
37
 
38
38
 
39
+ 14.7.0 (2026-06-18)
40
+ -------------------
41
+
42
+ * Initial release for DSS 14.7.0
43
+
44
+ 14.6.2 (2026-06-15)
45
+ -------------------
46
+
47
+ * Initial release for DSS 14.6.2
48
+
39
49
  14.6.1 (2026-06-05)
40
50
  -------------------
41
51
 
@@ -32,6 +32,7 @@ dataikuapi/dss/apideployer.py
32
32
  dataikuapi/dss/apiservice.py
33
33
  dataikuapi/dss/app.py
34
34
  dataikuapi/dss/businessapp.py
35
+ dataikuapi/dss/cobuild.py
35
36
  dataikuapi/dss/codestudio.py
36
37
  dataikuapi/dss/continuousactivity.py
37
38
  dataikuapi/dss/dashboard.py
@@ -27,7 +27,7 @@ class DSSConnectionListItem(dict):
27
27
 
28
28
  :rtype: :class:`DSSConnection`
29
29
  """
30
- return DSSConnection(self.client, self["name"])
30
+ return DSSConnection(self.client, self.name)
31
31
 
32
32
  @property
33
33
  def name(self):
@@ -36,6 +36,8 @@ class DSSConnectionListItem(dict):
36
36
 
37
37
  :rtype: string
38
38
  """
39
+ if "name" in self:
40
+ return self["name"]
39
41
  return self["id"]
40
42
 
41
43
  @property
@@ -46,6 +48,8 @@ class DSSConnectionListItem(dict):
46
48
  :return: a DSS connection type, like PostgreSQL, EC2, Azure, ...
47
49
  :rtype: string
48
50
  """
51
+ if "type" in self:
52
+ return self["type"]
49
53
  return self["label"]
50
54
 
51
55
  class DSSConnectionInfo(dict):
@@ -702,6 +706,11 @@ class DSSUser(object):
702
706
  extra_headers={"X-DKU-ProxyUser": self.login}, client_certificate=self.client._session.cert)
703
707
  client_as._session.verify = self.client._session.verify
704
708
  return client_as
709
+ elif self.client.jwt_bearer_token is not None:
710
+ client_as = DSSClient(self.client.host, jwt_bearer_token = self.client.jwt_bearer_token,
711
+ extra_headers={"X-DKU-ProxyUser": self.login}, client_certificate=self.client._session.cert)
712
+ client_as._session.verify = self.client._session.verify
713
+ return client_as
705
714
  else:
706
715
  raise ValueError("Don't know how to proxy this client")
707
716
 
@@ -0,0 +1,317 @@
1
+ from dataikuapi.dss.dataset import DSSDataset
2
+ from dataikuapi.dss.evaluationstore import DSSEvaluationStore
3
+ from dataikuapi.dss.knowledgebank import DSSKnowledgeBank
4
+ from dataikuapi.dss.labeling_task import DSSLabelingTask
5
+ from dataikuapi.dss.managedfolder import DSSManagedFolder
6
+ from dataikuapi.dss.recipe import DSSRecipe
7
+ from dataikuapi.dss.savedmodel import DSSSavedModel
8
+ from dataikuapi.dss.streaming_endpoint import DSSStreamingEndpoint
9
+
10
+
11
+ class CobuildMessage(object):
12
+ def __init__(self, raw):
13
+ self._raw = raw
14
+
15
+ @property
16
+ def message(self):
17
+ """
18
+ The text content of the response.
19
+
20
+ :rtype: str or None
21
+ """
22
+ return self._raw.get("message")
23
+
24
+
25
+ class CobuildAssistantResponse(CobuildMessage):
26
+ """
27
+ A response from the Cobuild AI assistant.
28
+
29
+ .. important::
30
+ Do not create this class directly, it is returned by :meth:`DSSCobuildConversation.send_message`
31
+ and :meth:`DSSCobuildConversation.answer_confirmation`.
32
+ """
33
+
34
+ @property
35
+ def role(self):
36
+ """
37
+ Role of the message sender ("user" or "assistant")
38
+
39
+ :rtype: str
40
+ """
41
+ return "assistant"
42
+
43
+ @property
44
+ def type(self):
45
+ """
46
+ Type of the response: ``"assistant_message"``, ``"delete_confirmation_request"``,
47
+ or ``"error"``.
48
+
49
+ - ``"assistant_message"``: the assistant has completed its turn; the conversation is idle.
50
+ - ``"delete_confirmation_request"``: the assistant is requesting confirmation before
51
+ deleting objects. Call :meth:`DSSCobuildConversation.answer_confirmation`
52
+ with a choice of ``"APPROVE"`` or ``"CANCEL"`` to continue.
53
+ - ``"error"``: an error occurred while processing the Cobuild turn. In the public API,
54
+ missing tool permissions are reported through this error response too.
55
+
56
+ :rtype: str
57
+ """
58
+ return self._raw.get("type")
59
+
60
+ @property
61
+ def is_question(self):
62
+ """
63
+ DEPRECATED ... DEPRECATED ... DEPRECATED ... DEPRECATED
64
+ Whether the assistant is asking the user a question. If ``True``, call
65
+ :meth:`DSSCobuildConversation.send_message` again with the answer to continue.
66
+
67
+ :rtype: bool
68
+ """
69
+ return False
70
+
71
+ @property
72
+ def is_confirmation_request(self):
73
+ """
74
+ Whether the assistant is requesting confirmation before deleting objects
75
+ or doing other operations requiring confirmation.
76
+ If ``True``, call :meth:`DSSCobuildConversation.answer_confirmation` with a choice of
77
+ ``"APPROVE"`` or ``"CANCEL"`` to continue.
78
+ If the confirmation is about a deletion, inspect :attr:`objects_to_delete`
79
+ and :attr:`deletion_impacts` for details.
80
+
81
+ :rtype: bool
82
+ """
83
+ return self.type == "delete_confirmation_request"
84
+
85
+ @property
86
+ def is_error(self):
87
+ """
88
+ Whether the response represents an error.
89
+
90
+ :rtype: bool
91
+ """
92
+ return self._raw.get("error", False)
93
+
94
+ @property
95
+ def objects_to_delete(self):
96
+ """
97
+ For ``"delete_confirmation_request"`` responses: the list of objects that the assistant
98
+ is requesting permission to delete (or unshare). Each entry is a dict with fields
99
+ ``projectKey``, ``type``, ``id``, and ``displayName``.
100
+
101
+ ``None`` for other response types.
102
+
103
+ :rtype: list of dict or None
104
+ """
105
+ return self._raw.get("objectsToDelete")
106
+
107
+ @property
108
+ def deletion_impacts(self):
109
+ """
110
+ For ``"delete_confirmation_request"`` responses: a dict describing the cascading effects
111
+ of the requested deletion (recipes that would be deleted, datasets left unchanged, etc.).
112
+
113
+ ``None`` for other response types.
114
+
115
+ :rtype: dict or None
116
+ """
117
+ return self._raw.get("deletionImpacts")
118
+
119
+ def __repr__(self):
120
+ return "CobuildAssistantResponse(type=%r, message=%r)" % (self.type, self.message)
121
+
122
+
123
+ class CobuildUserMessage(CobuildMessage):
124
+ """
125
+ A message sent to Cobuild AI assistant by the user.
126
+
127
+ .. important::
128
+ Do not create this class directly, it is automatically created when using :meth:`dataikuapi.dss.project.DSSProject.new_cobuild_conversation`,
129
+ :meth:`DSSCobuildConversation.send_message`, and
130
+ :meth:`DSSCobuildConversation.answer_confirmation`.
131
+ """
132
+
133
+ @property
134
+ def role(self):
135
+ """
136
+ Role of the message sender ("user" or "assistant")
137
+
138
+ :rtype: str
139
+ """
140
+ return "user"
141
+
142
+ @property
143
+ def type(self):
144
+ """
145
+ Type of the message: ``"request"`` or ``"delete_confirmation_response"``.
146
+
147
+ - ``"request"``: a normal message sent to cobuild.
148
+ - ``"delete_confirmation_response"``: user response when cobuild requests confirmation before deleting objects
149
+
150
+ :rtype: str
151
+ """
152
+ return self._raw.get("type", "request")
153
+
154
+ @property
155
+ def is_confirmation_response(self):
156
+ """
157
+ Whether this message is the answer for assistant requesting confirmation before deleting objects
158
+
159
+ :rtype: bool
160
+ """
161
+ return self.type == "delete_confirmation_response"
162
+
163
+ def __repr__(self):
164
+ return "CobuildUserMessage(type=%r, message=%r)" % (self.type, self.message)
165
+
166
+ def _DSS_objects_to_selected(project_key, objects):
167
+ return [_DSS_object_to_selected(project_key, object) for object in objects]
168
+
169
+ def _DSS_object_to_selected(project_key, object):
170
+ prefix = "" if project_key == object.project_key else object.project_key + "."
171
+
172
+ if isinstance(object, DSSDataset):
173
+ return { "type": "DATASET", "id": prefix + object.id}
174
+ if isinstance(object, DSSRecipe):
175
+ return { "type": "RECIPE", "id": prefix + object.id}
176
+ if isinstance(object, DSSManagedFolder):
177
+ return { "type": "MANAGED_FOLDER", "id": prefix + object.id}
178
+ if isinstance(object, DSSSavedModel):
179
+ return { "type": "SAVED_MODEL", "id": prefix + object.id}
180
+ if isinstance(object, DSSStreamingEndpoint):
181
+ return { "type": "STREAMING_ENDPOINT", "id": prefix + object.id}
182
+ if isinstance(object, DSSLabelingTask):
183
+ return { "type": "LABELING_TASK", "id": prefix + object.id}
184
+ if isinstance(object, DSSKnowledgeBank):
185
+ return { "type": "RETRIEVABLE_KNOWLEDGE", "id": prefix + object.id}
186
+ if isinstance(object, DSSEvaluationStore):
187
+ return { "type": "MODEL_EVALUATION_STORE", "id": prefix + object.id}
188
+ else:
189
+ raise ValueError("Unsupported object type")
190
+
191
+
192
+ class DSSCobuildConversation(object):
193
+ """
194
+ A handle to a conversation with Cobuild AI assistant.
195
+
196
+ .. important::
197
+ Do not create this class directly, instead use
198
+ :meth:`dataikuapi.dss.project.DSSProject.new_cobuild_conversation`.
199
+
200
+ The :attr:`messages` property accumulates all exchanges made through this handle (user inputs
201
+ and assistant responses).
202
+
203
+ A typical interaction::
204
+
205
+ conv = project.new_cobuild_conversation()
206
+ response = conv.send_message("List the datasets in this project")
207
+ print(response.message)
208
+
209
+ conv.send_message("Now filter the Orders dataset to keep only orders with an amount > 1000")
210
+ print(conv.messages[-1].message)
211
+
212
+ When the assistant needs to delete objects, it first asks for confirmation::
213
+
214
+ response = conv.send_message("Delete the Orders dataset")
215
+ if response.is_confirmation_request:
216
+ print("Objects to delete:", response.objects_to_delete)
217
+ response = conv.answer_confirmation("APPROVE")
218
+ print(response.message)
219
+
220
+ If a tool requires edit permission, pass ``allow_edit_project=True`` to
221
+ :meth:`send_message` to allow Cobuild to create and edit objects for that message.
222
+ """
223
+
224
+ def __init__(self, client, project_key, conversation_id, selected_objects=None):
225
+ self.client = client
226
+ self.project_key = project_key
227
+ self.conversation_id = conversation_id
228
+ self._messages = []
229
+ self._pending_confirmation_id = None
230
+ self._selected_objects = selected_objects
231
+
232
+ @property
233
+ def messages(self):
234
+ """
235
+ All messages exchanged during this conversation, in order.
236
+
237
+ User message entries are :class:`CobuildUserMessage`.
238
+
239
+ Assistant message entries are :class:`CobuildAssistantResponse`.
240
+
241
+ :rtype: list of :class:`CobuildAssistantResponse` or :class:`CobuildUserMessage`
242
+ """
243
+ return list(self._messages)
244
+
245
+ def send_message(self, message, selected_objects=None, allow_edit_project=False):
246
+ """
247
+ Send a message to the assistant and wait for its response.
248
+
249
+ The message and assistant response are appended to :attr:`messages`.
250
+
251
+ :param str message: the message to send
252
+ :param selected_objects: object selection the assistant should focus on. It is reused for any subsequent message, unless overwritten
253
+ :type selected_objects: list[:class:`.DSSDataset`, :class:`.DSSRecipe`, :class:`.DSSLabelingTask`, :class:`.DSSManagedFolder`, :class:`.DSSSavedModel`, :class:`.DSSKnowledgeBank`, :class:`.DSSModelEvaluationStore` or :class:`.DSSStreamingEndpoint`]
254
+ :param bool allow_edit_project: whether to allow Cobuild to create and edit everything
255
+ needed in this project to follow this message. This permission applies only to this
256
+ message.
257
+
258
+ :returns: the assistant's response
259
+ :rtype: :class:`CobuildAssistantResponse`
260
+ """
261
+ if selected_objects is not None:
262
+ self._selected_objects = _DSS_objects_to_selected(self.project_key, selected_objects)
263
+
264
+ self._messages.append(CobuildUserMessage({"type": "request", "message": message, "selected_objects": self._selected_objects}))
265
+ raw = self.client._perform_json(
266
+ "POST",
267
+ "/projects/%s/cobuild/conversations/%s/messages" % (self.project_key, self.conversation_id),
268
+ body={
269
+ "message": message,
270
+ "selectedObjects": self._selected_objects or [],
271
+ "allowEditProject": allow_edit_project,
272
+ },
273
+ )
274
+ response = CobuildAssistantResponse(raw)
275
+ self._pending_confirmation_id = raw["confirmationId"] if response.is_confirmation_request else None
276
+ self._messages.append(response)
277
+ return response
278
+
279
+ def answer_confirmation(self, choice, options=None):
280
+ """
281
+ Answer a pending confirmation request and wait for the assistant's next response.
282
+
283
+ Call this after receiving a response with :attr:`~CobuildAssistantResponse.is_confirmation_request`
284
+ set to ``True``.
285
+
286
+ The choice and assistant response are appended to :attr:`messages`.
287
+
288
+ :param str choice: ``"APPROVE"`` to proceed with the operation, or ``"CANCEL"`` to abort it
289
+ :param list options: optional list of per-object deletion options (advanced use, for delete
290
+ confirmations only). Each entry is a dict with ``projectKey``, ``type``, ``id``, and an
291
+ ``options`` dict containing ``dropData``, ``dropMetastoreTable``, and
292
+ ``deleteOrphanInsights`` booleans. When omitted, all options default to ``False``
293
+ (data is not dropped, metastore tables are not dropped, orphan insights are not deleted).
294
+
295
+ :returns: the assistant's response after the confirmation
296
+ :rtype: :class:`CobuildAssistantResponse`
297
+ """
298
+ if choice not in ("APPROVE", "CANCEL"):
299
+ raise ValueError("choice must be 'APPROVE' or 'CANCEL', got %r" % choice)
300
+ if self._pending_confirmation_id is None:
301
+ raise ValueError("No pending confirmation request. Call send_message first and check is_confirmation_request.")
302
+
303
+ confirmation_id = self._pending_confirmation_id
304
+ self._pending_confirmation_id = None
305
+ self._messages.append(CobuildUserMessage({"type": "delete_confirmation_response", "message": choice}))
306
+ body = {"choice": choice}
307
+ if options is not None:
308
+ body["options"] = options
309
+ raw = self.client._perform_json(
310
+ "POST",
311
+ "/projects/%s/cobuild/conversations/%s/confirmation/%s" % (self.project_key, self.conversation_id, confirmation_id),
312
+ body=body,
313
+ )
314
+ response = CobuildAssistantResponse(raw)
315
+ self._pending_confirmation_id = raw["confirmationId"] if response.is_confirmation_request else None
316
+ self._messages.append(response)
317
+ return response
@@ -97,6 +97,7 @@ class SpanBuilder:
97
97
  @staticmethod
98
98
  def create_event(name):
99
99
  sb = SpanBuilder(name)
100
+ sb.span["type"] = "event"
100
101
  ts = int(time.time() * 1000)
101
102
  sb.span["timestamp"] = datetime.datetime.fromtimestamp(ts / 1000, datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
102
103
  return sb
@@ -285,9 +285,9 @@ class DSSMailMessagingChannel(DSSMessagingChannel):
285
285
 
286
286
  channel = client.get_messaging_channel("other-mail-channel-id")
287
287
  for file in paths:
288
- with open(file) as f:
289
- # Optionally include file type ("text/csv")
290
- attachments.append(file, f.read(), "text/csv")
288
+ with open(file) as f:
289
+ # Optionally include file type ("text/csv")
290
+ attachments.append([file, f.read(), "text/csv"])
291
291
  channel.send("PROJECT_KEY", ["joe@dataiku.com"], "Subject", "Body in plain text", attachments=attachments, False)
292
292
 
293
293
  :param project_key: project issuing the email. The user must have "Write content" permission on the specified project.
@@ -299,7 +299,7 @@ class DSSMailMessagingChannel(DSSMessagingChannel):
299
299
  :param body: email body (in plain text or HTML format)
300
300
  :type body: str
301
301
  :param attachments: files to be attached to the mail, defaults to None
302
- :type attachments: list[BufferedReader]
302
+ :type attachments: list[list[str, bytes, str]]
303
303
  :param plain_text: True to send email as plain text, False to send it as HTML. Defaults to False.
304
304
  :type plain_text: bool
305
305
  :param sender: sender email address. Use None to use the sender defined at the channel level.
@@ -3433,6 +3433,7 @@ class DSSMLAssertionCondition(object):
3433
3433
  class DSSMLAssertionsMetrics(object):
3434
3434
  """
3435
3435
  Object that represents the assertions metrics for all assertions on a trained model
3436
+
3436
3437
  .. important::
3437
3438
  Do not create this object directly, use :meth:`DSSTrainedPredictionModelDetails.get_assertions_metrics` instead
3438
3439
  """
@@ -4129,7 +4130,7 @@ class DSSTrainedPredictionModelDetails(DSSTrainedModelDetails):
4129
4130
 
4130
4131
  class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetails):
4131
4132
  """
4132
- Object to read details of a timeseries forecasting model, for instance the per time series metrics
4133
+ Object to read details of a time series forecasting model, for instance the per time series metrics
4133
4134
 
4134
4135
  .. important::
4135
4136
  Do not create this object directly, use :meth:`DSSMLTask.get_trained_model_details()` instead
@@ -4139,10 +4140,10 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
4139
4140
 
4140
4141
  def compute_residuals(self, wait=True):
4141
4142
  """
4142
- Launch computation of residuals for this trained timeseries model.
4143
+ Launch computation of residuals for this trained time series model.
4143
4144
 
4144
4145
  :param wait: a flag to wait for the operation to complete (defaults to **True**)
4145
- :returns: if wait is True, a dictionary containing the residuals per-timeseries, else a future to wait on the result
4146
+ :returns: if wait is True, a dictionary containing the residuals per time series, else a future to wait on the result
4146
4147
  :rtype: Union[:class:`dict`, :class:`dataikuapi.dss.future.DSSFuture`]
4147
4148
  """
4148
4149
  if self.mltask is not None:
@@ -4166,7 +4167,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
4166
4167
  """
4167
4168
  Retrieve a list of residuals for this trained time-series models
4168
4169
 
4169
- :returns: A dictionary, which contains a residuals object per-timeseries
4170
+ :returns: A dictionary, which contains a residuals object per time series
4170
4171
  :rtype: dict
4171
4172
  """
4172
4173
  if self.mltask is not None:
@@ -4184,7 +4185,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
4184
4185
 
4185
4186
  def compute_permutation_importance(self, wait=True, n_iterations=None, per_identifier=None):
4186
4187
  """
4187
- Launch computation of permutation importance for this trained timeseries model.
4188
+ Launch feature importance computation (measured using permutation importance) for this trained time series model.
4188
4189
 
4189
4190
  :param wait: a flag to wait for the operation to complete (defaults to **True**)
4190
4191
  :returns: if wait is True, a dictionary, else a future to wait on the result
@@ -4238,7 +4239,7 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
4238
4239
 
4239
4240
  def get_per_timeseries_metrics(self):
4240
4241
  """
4241
- Returns per timeseries performance metrics for this model.
4242
+ Returns per time series performance metrics for this model.
4242
4243
 
4243
4244
  :returns: a dict of performance metrics values
4244
4245
  :rtype: dict
@@ -4257,9 +4258,9 @@ class DSSTrainedTimeseriesForecastingModelDetails(DSSTrainedPredictionModelDetai
4257
4258
 
4258
4259
  def get_per_timeseries_evaluation_forecasts(self):
4259
4260
  """
4260
- Returns per timeseries evaluation forecasts for this model.
4261
+ Returns per time series evaluation forecasts for this model.
4261
4262
 
4262
- :returns: a dict of evaluation forecasts per timeseries identifier
4263
+ :returns: a dict of evaluation forecasts per time series identifier
4263
4264
  :rtype: dict
4264
4265
  """
4265
4266
  if self.mltask is not None: