dataiku-api-client 14.6.2__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.2 → dataiku_api_client-14.7.0}/HISTORY.txt +5 -0
  2. {dataiku_api_client-14.6.2/dataiku_api_client.egg-info → dataiku_api_client-14.7.0}/PKG-INFO +7 -2
  3. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0/dataiku_api_client.egg-info}/PKG-INFO +7 -2
  4. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/SOURCES.txt +1 -0
  5. dataiku_api_client-14.7.0/dataikuapi/dss/cobuild.py +317 -0
  6. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/ml.py +1 -0
  7. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/project.py +48 -1
  8. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/setup.py +1 -1
  9. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/LICENSE.txt +0 -0
  10. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/MANIFEST.in +0 -0
  11. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/README +0 -0
  12. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/dependency_links.txt +0 -0
  13. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/requires.txt +0 -0
  14. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataiku_api_client.egg-info/top_level.txt +0 -0
  15. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/__init__.py +0 -0
  16. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/__init__.py +0 -0
  17. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/auth.py +0 -0
  18. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin/service.py +0 -0
  19. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/apinode_admin_client.py +0 -0
  20. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/apinode_client.py +0 -0
  21. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/auth.py +0 -0
  22. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/base_client.py +0 -0
  23. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/__init__.py +0 -0
  24. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/admin.py +0 -0
  25. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent.py +0 -0
  26. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_review.py +0 -0
  27. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/agent_tool.py +0 -0
  28. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/analysis.py +0 -0
  29. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/apideployer.py +0 -0
  30. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/apiservice.py +0 -0
  31. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/app.py +0 -0
  32. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/businessapp.py +0 -0
  33. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/codestudio.py +0 -0
  34. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/continuousactivity.py +0 -0
  35. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/dashboard.py +0 -0
  36. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_collection.py +0 -0
  37. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_directories_footprint.py +0 -0
  38. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/data_quality.py +0 -0
  39. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/dataset.py +0 -0
  40. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/discussion.py +0 -0
  41. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/document_extractor.py +0 -0
  42. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/drift.py +0 -0
  43. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/enterprise_asset_library.py +0 -0
  44. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationcomparison.py +0 -0
  45. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/evaluationstore.py +0 -0
  46. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/feature_store.py +0 -0
  47. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/flow.py +0 -0
  48. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/future.py +0 -0
  49. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/insight.py +0 -0
  50. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/job.py +0 -0
  51. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/jupyternotebook.py +0 -0
  52. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/knowledgebank.py +0 -0
  53. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/labeling_task.py +0 -0
  54. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/__init__.py +0 -0
  55. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/embeddings.py +0 -0
  56. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/knowledge_bank.py +0 -0
  57. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/llm.py +0 -0
  58. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/tool.py +0 -0
  59. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/langchain/utils.py +0 -0
  60. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm.py +0 -0
  61. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_tracing/__init__.py +0 -0
  62. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/llm_utils/__init__.py +0 -0
  63. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/local_model.py +0 -0
  64. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/macro.py +0 -0
  65. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/managedfolder.py +0 -0
  66. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/meaning.py +0 -0
  67. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/messaging_channel.py +0 -0
  68. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/metrics.py +0 -0
  69. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/mlflow.py +0 -0
  70. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelcomparison.py +0 -0
  71. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/modelevaluationstore.py +0 -0
  72. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/notebook.py +0 -0
  73. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/plugin.py +0 -0
  74. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/project_standards.py +0 -0
  75. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectdeployer.py +0 -0
  76. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectfolder.py +0 -0
  77. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/projectlibrary.py +0 -0
  78. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/recipe.py +0 -0
  79. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/retrieval_augmented_llm.py +0 -0
  80. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/savedmodel.py +0 -0
  81. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/scenario.py +0 -0
  82. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/semantic_model.py +0 -0
  83. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlnotebook.py +0 -0
  84. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/sqlquery.py +0 -0
  85. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/statistics.py +0 -0
  86. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/streaming_endpoint.py +0 -0
  87. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/__init__.py +0 -0
  88. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/codegen.py +0 -0
  89. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/tools/langchain.py +0 -0
  90. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/unifiedmonitoring.py +0 -0
  91. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/utils.py +0 -0
  92. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/webapp.py +0 -0
  93. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/wiki.py +0 -0
  94. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss/workspace.py +0 -0
  95. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/__init__.py +0 -0
  96. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/artifact_repository.py +0 -0
  97. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/header_provider.py +0 -0
  98. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dss_plugin_mlflow/utils.py +0 -0
  99. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/dssclient.py +0 -0
  100. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/__init__.py +0 -0
  101. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/cloudaccounts.py +0 -0
  102. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/future.py +0 -0
  103. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/instances.py +0 -0
  104. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/instancesettingstemplates.py +0 -0
  105. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/loadbalancers.py +0 -0
  106. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/tenant.py +0 -0
  107. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fm/virtualnetworks.py +0 -0
  108. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/fmclient.py +0 -0
  109. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/__init__.py +0 -0
  110. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin.py +0 -0
  111. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_blueprint_designer.py +0 -0
  112. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_custom_pages_handler.py +0 -0
  113. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/admin_roles_permissions_handler.py +0 -0
  114. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact.py +0 -0
  115. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/artifact_search.py +0 -0
  116. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/blueprint.py +0 -0
  117. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/custom_page.py +0 -0
  118. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/future.py +0 -0
  119. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/time_series.py +0 -0
  120. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/uploaded_file.py +0 -0
  121. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern/users_container.py +0 -0
  122. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/govern_client.py +0 -0
  123. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/iam/__init__.py +0 -0
  124. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/iam/settings.py +0 -0
  125. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/__init__.py +0 -0
  126. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/exceptions.py +0 -0
  127. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/group.py +0 -0
  128. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/node.py +0 -0
  129. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/profile.py +0 -0
  130. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/response.py +0 -0
  131. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/task.py +0 -0
  132. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad/user.py +0 -0
  133. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/launchpad_client.py +0 -0
  134. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/dataikuapi/utils.py +0 -0
  135. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/requirements.txt +0 -0
  136. {dataiku_api_client-14.6.2 → dataiku_api_client-14.7.0}/setup.cfg +0 -0
@@ -2,6 +2,11 @@ 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
+
5
10
  14.6.2 (2026-06-15)
6
11
  -------------------
7
12
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 14.6.2
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.2
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,11 @@ 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
+
39
44
  14.6.2 (2026-06-15)
40
45
  -------------------
41
46
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 14.6.2
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.2
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,11 @@ 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
+
39
44
  14.6.2 (2026-06-15)
40
45
  -------------------
41
46
 
@@ -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
@@ -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
@@ -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
  """
@@ -49,6 +49,9 @@ from .streaming_endpoint import DSSStreamingEndpoint, DSSStreamingEndpointListIt
49
49
  from .webapp import DSSWebApp, DSSWebAppListItem
50
50
  from .wiki import DSSWiki
51
51
  from ..dss_plugin_mlflow import MLflowHandle
52
+ from .agent_review import DSSAgentReview, DSSAgentReviewListItem
53
+ from .cobuild import _DSS_objects_to_selected, CobuildUserMessage, DSSCobuildConversation, CobuildAssistantResponse
54
+
52
55
 
53
56
  logger = logging.getLogger(__name__)
54
57
 
@@ -3210,6 +3213,47 @@ class DSSProject(object):
3210
3213
  body = {"insightPrototype": creation_info})['id']
3211
3214
  return DSSInsight(self.client, self.project_key, insight_id)
3212
3215
 
3216
+ ########################################################
3217
+ # Cobuild
3218
+ ########################################################
3219
+
3220
+ def new_cobuild_conversation(self):
3221
+ """
3222
+ Start a new empty Cobuild conversation.
3223
+
3224
+ Cobuild is an AI assistant that can inspect and build Flows, recipes, datasets,
3225
+ dashboards, and other DSS objects.
3226
+
3227
+ Example usage::
3228
+
3229
+ project = client.get_project("MY_PROJECT")
3230
+ conv = project.new_cobuild_conversation()
3231
+
3232
+ response = conv.send_message(
3233
+ "Update wiki article 123 to add a one-line banner",
3234
+ allow_edit_project=True,
3235
+ )
3236
+ print(response.message)
3237
+
3238
+ Without ``allow_edit_project=True``, Cobuild asks before using tools that create or edit
3239
+ objects. In the public API, missing permissions are returned as an error response::
3240
+
3241
+ project = client.get_project("MY_PROJECT")
3242
+ conv = project.new_cobuild_conversation()
3243
+
3244
+ response = conv.send_message("Update wiki article 123 to add a one-line banner")
3245
+ print(response.message)
3246
+
3247
+ :returns: a handle to the newly created empty conversation
3248
+ :rtype: :class:`dataikuapi.dss.cobuild.DSSCobuildConversation`
3249
+ """
3250
+ raw = self.client._perform_json(
3251
+ "POST",
3252
+ "/projects/%s/cobuild/conversations" % self.project_key,
3253
+ body={},
3254
+ )
3255
+ return DSSCobuildConversation(self.client, self.project_key, raw["conversationId"])
3256
+
3213
3257
  ########################################################
3214
3258
  # Git
3215
3259
  ########################################################
@@ -3618,11 +3662,14 @@ class DSSProjectGit(object):
3618
3662
  """
3619
3663
  Get the current state of the project's git repository.
3620
3664
 
3621
- :return: A dict containing the following keys:
3665
+ :return:
3666
+ A dict containing the following keys:
3667
+
3622
3668
  - **currentBranch** (*str*): The currently checked-out Git branch.
3623
3669
  - **remotes** (*list*): A list of configured remotes, each being a dict with:
3624
3670
  - **name** (*str*): The remote name (e.g. "origin").
3625
3671
  - **url** (*str*): The remote repository URL.
3672
+
3626
3673
  - **trackingCount** (*dict*): The number of commits the local branch is ahead/behind its tracked remote branch.
3627
3674
  - **clean** (*bool*): Whether the working directory is clean (no changes).
3628
3675
  - **hasUncommittedChanges** (*bool*): Whether there are uncommitted changes.
@@ -2,7 +2,7 @@
2
2
 
3
3
  from setuptools import setup
4
4
 
5
- VERSION = "14.6.2"
5
+ VERSION = "14.7.0"
6
6
 
7
7
  long_description = (open('README').read() + '\n\n' +
8
8
  open('HISTORY.txt').read())