dataiku-api-client 15.0.0__tar.gz → 15.0.2__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 (139) hide show
  1. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/HISTORY.txt +21 -0
  2. {dataiku_api_client-15.0.0/dataiku_api_client.egg-info → dataiku_api_client-15.0.2}/PKG-INFO +23 -2
  3. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2/dataiku_api_client.egg-info}/PKG-INFO +23 -2
  4. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataiku_api_client.egg-info/SOURCES.txt +1 -0
  5. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/__init__.py +2 -1
  6. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/agent_tool.py +15 -0
  7. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/apideployer.py +4 -2
  8. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/app.py +5 -1
  9. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/cobuild.py +304 -6
  10. dataiku_api_client-15.0.2/dataikuapi/dss/dam.py +1485 -0
  11. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/data_collection.py +1 -1
  12. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/document_extractor.py +28 -5
  13. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/flow.py +2 -2
  14. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/embeddings.py +6 -1
  15. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/llm.py +23 -4
  16. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/llm_utils/__init__.py +14 -4
  17. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/managedfolder.py +5 -3
  18. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/ml.py +1 -1
  19. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/project.py +18 -3
  20. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/recipe.py +5 -2
  21. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/scenario.py +3 -0
  22. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/tools/codegen.py +3 -3
  23. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dssclient.py +30 -9
  24. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/setup.py +1 -1
  25. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/LICENSE.txt +0 -0
  26. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/MANIFEST.in +0 -0
  27. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/README +0 -0
  28. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataiku_api_client.egg-info/dependency_links.txt +0 -0
  29. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataiku_api_client.egg-info/requires.txt +0 -0
  30. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataiku_api_client.egg-info/top_level.txt +0 -0
  31. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/apinode_admin/__init__.py +0 -0
  32. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/apinode_admin/auth.py +0 -0
  33. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/apinode_admin/service.py +0 -0
  34. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/apinode_admin_client.py +0 -0
  35. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/apinode_client.py +0 -0
  36. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/auth.py +0 -0
  37. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/base_client.py +0 -0
  38. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/__init__.py +0 -0
  39. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/admin.py +0 -0
  40. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/agent.py +0 -0
  41. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/agent_review.py +0 -0
  42. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/agent_skill.py +0 -0
  43. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/analysis.py +0 -0
  44. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/apiservice.py +0 -0
  45. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/businessapp.py +0 -0
  46. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/codestudio.py +0 -0
  47. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/continuousactivity.py +0 -0
  48. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/dashboard.py +0 -0
  49. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/data_directories_footprint.py +0 -0
  50. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/data_quality.py +0 -0
  51. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/dataset.py +0 -0
  52. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/discussion.py +0 -0
  53. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/drift.py +0 -0
  54. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/enterprise_asset_library.py +0 -0
  55. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/evaluationcomparison.py +0 -0
  56. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/evaluationstore.py +0 -0
  57. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/feature_store.py +0 -0
  58. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/future.py +0 -0
  59. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/insight.py +0 -0
  60. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/job.py +0 -0
  61. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/jupyternotebook.py +0 -0
  62. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/knowledgebank.py +0 -0
  63. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/labeling_task.py +0 -0
  64. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/__init__.py +0 -0
  65. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/knowledge_bank.py +0 -0
  66. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/llm.py +0 -0
  67. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/tool.py +0 -0
  68. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/langchain/utils.py +0 -0
  69. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/llm_tracing/__init__.py +0 -0
  70. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/local_model.py +0 -0
  71. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/macro.py +0 -0
  72. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/meaning.py +0 -0
  73. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/messaging_channel.py +0 -0
  74. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/metrics.py +0 -0
  75. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/mira.py +0 -0
  76. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/mlflow.py +0 -0
  77. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/modelcomparison.py +0 -0
  78. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/modelevaluationstore.py +0 -0
  79. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/notebook.py +0 -0
  80. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/plugin.py +0 -0
  81. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/project_standards.py +0 -0
  82. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/projectdeployer.py +0 -0
  83. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/projectfolder.py +0 -0
  84. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/projectlibrary.py +0 -0
  85. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/retrieval_augmented_llm.py +0 -0
  86. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/savedmodel.py +0 -0
  87. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/semantic_model.py +0 -0
  88. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/sqlnotebook.py +0 -0
  89. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/sqlquery.py +0 -0
  90. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/statistics.py +0 -0
  91. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/streaming_endpoint.py +0 -0
  92. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/tools/__init__.py +0 -0
  93. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/tools/langchain.py +0 -0
  94. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/unifiedmonitoring.py +0 -0
  95. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/utils.py +0 -0
  96. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/webapp.py +0 -0
  97. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/wiki.py +0 -0
  98. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss/workspace.py +0 -0
  99. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss_plugin_mlflow/__init__.py +0 -0
  100. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss_plugin_mlflow/artifact_repository.py +0 -0
  101. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss_plugin_mlflow/header_provider.py +0 -0
  102. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/dss_plugin_mlflow/utils.py +0 -0
  103. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/__init__.py +0 -0
  104. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/cloudaccounts.py +0 -0
  105. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/future.py +0 -0
  106. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/instances.py +0 -0
  107. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/instancesettingstemplates.py +0 -0
  108. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/loadbalancers.py +0 -0
  109. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/tenant.py +0 -0
  110. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fm/virtualnetworks.py +0 -0
  111. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/fmclient.py +0 -0
  112. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/__init__.py +0 -0
  113. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/admin.py +0 -0
  114. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/admin_blueprint_designer.py +0 -0
  115. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/admin_custom_pages_handler.py +0 -0
  116. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/admin_roles_permissions_handler.py +0 -0
  117. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/artifact.py +0 -0
  118. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/artifact_search.py +0 -0
  119. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/blueprint.py +0 -0
  120. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/custom_page.py +0 -0
  121. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/future.py +0 -0
  122. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/time_series.py +0 -0
  123. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/uploaded_file.py +0 -0
  124. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern/users_container.py +0 -0
  125. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/govern_client.py +0 -0
  126. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/iam/__init__.py +0 -0
  127. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/iam/settings.py +0 -0
  128. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/__init__.py +0 -0
  129. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/exceptions.py +0 -0
  130. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/group.py +0 -0
  131. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/node.py +0 -0
  132. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/profile.py +0 -0
  133. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/response.py +0 -0
  134. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/task.py +0 -0
  135. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad/user.py +0 -0
  136. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/launchpad_client.py +0 -0
  137. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/dataikuapi/utils.py +0 -0
  138. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/requirements.txt +0 -0
  139. {dataiku_api_client-15.0.0 → dataiku_api_client-15.0.2}/setup.cfg +0 -0
@@ -1,11 +1,32 @@
1
1
  Changelog
2
2
  ==========
3
3
 
4
+ 15.0.2 (2026-09-29)
5
+ -------------------
6
+
7
+ * Initial release for DSS 15.0.2
8
+
9
+ 15.0.1 (2026-09-15)
10
+ -------------------
11
+
12
+ * Initial release for DSS 15.0.1
13
+
4
14
  15.0.0 (2026-08-14)
5
15
  -------------------
6
16
 
7
17
  * Initial release for DSS 15.0.0
8
18
 
19
+
20
+ 14.7.5 (2026-09-29)
21
+ -------------------
22
+
23
+ * Initial release for DSS 14.7.5
24
+
25
+ 14.7.4 (2026-09-14)
26
+ -------------------
27
+
28
+ * Initial release for DSS 14.7.4
29
+
9
30
  14.7.3 (2026-08-03)
10
31
  -------------------
11
32
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 15.0.0
3
+ Version: 15.0.2
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/15.0.0
6
+ Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/15.0.2
7
7
  Author: Dataiku
8
8
  Author-email: support@dataiku.com
9
9
  License: Apache Software License
@@ -35,11 +35,32 @@ https://doc.dataiku.com/dss/latest/python-api/rest-api-client/index.html
35
35
  Changelog
36
36
  ==========
37
37
 
38
+ 15.0.2 (2026-09-29)
39
+ -------------------
40
+
41
+ * Initial release for DSS 15.0.2
42
+
43
+ 15.0.1 (2026-09-15)
44
+ -------------------
45
+
46
+ * Initial release for DSS 15.0.1
47
+
38
48
  15.0.0 (2026-08-14)
39
49
  -------------------
40
50
 
41
51
  * Initial release for DSS 15.0.0
42
52
 
53
+
54
+ 14.7.5 (2026-09-29)
55
+ -------------------
56
+
57
+ * Initial release for DSS 14.7.5
58
+
59
+ 14.7.4 (2026-09-14)
60
+ -------------------
61
+
62
+ * Initial release for DSS 14.7.4
63
+
43
64
  14.7.3 (2026-08-03)
44
65
  -------------------
45
66
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataiku-api-client
3
- Version: 15.0.0
3
+ Version: 15.0.2
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/15.0.0
6
+ Download-URL: https://github.com/dataiku/dataiku-api-client-python/tarball/15.0.2
7
7
  Author: Dataiku
8
8
  Author-email: support@dataiku.com
9
9
  License: Apache Software License
@@ -35,11 +35,32 @@ https://doc.dataiku.com/dss/latest/python-api/rest-api-client/index.html
35
35
  Changelog
36
36
  ==========
37
37
 
38
+ 15.0.2 (2026-09-29)
39
+ -------------------
40
+
41
+ * Initial release for DSS 15.0.2
42
+
43
+ 15.0.1 (2026-09-15)
44
+ -------------------
45
+
46
+ * Initial release for DSS 15.0.1
47
+
38
48
  15.0.0 (2026-08-14)
39
49
  -------------------
40
50
 
41
51
  * Initial release for DSS 15.0.0
42
52
 
53
+
54
+ 14.7.5 (2026-09-29)
55
+ -------------------
56
+
57
+ * Initial release for DSS 14.7.5
58
+
59
+ 14.7.4 (2026-09-14)
60
+ -------------------
61
+
62
+ * Initial release for DSS 14.7.4
63
+
43
64
  14.7.3 (2026-08-03)
44
65
  -------------------
45
66
 
@@ -36,6 +36,7 @@ dataikuapi/dss/businessapp.py
36
36
  dataikuapi/dss/cobuild.py
37
37
  dataikuapi/dss/codestudio.py
38
38
  dataikuapi/dss/continuousactivity.py
39
+ dataikuapi/dss/dam.py
39
40
  dataikuapi/dss/dashboard.py
40
41
  dataikuapi/dss/data_collection.py
41
42
  dataikuapi/dss/data_directories_footprint.py
@@ -8,6 +8,7 @@ from .apinode_admin_client import APINodeAdminClient
8
8
  from .dss.recipe import GroupingRecipeCreator, UpsertRecipeCreator, JoinRecipeCreator, StackRecipeCreator, WindowRecipeCreator, SyncRecipeCreator, SamplingRecipeCreator, SQLQueryRecipeCreator, CodeRecipeCreator, SplitRecipeCreator, SortRecipeCreator, TopNRecipeCreator, DistinctRecipeCreator, DownloadRecipeCreator, PredictionScoringRecipeCreator, ClusteringScoringRecipeCreator
9
9
 
10
10
  from .dss.admin import DSSUserImpersonationRule, DSSGroupImpersonationRule
11
+ from .dss.dam import DAMAgentFilter
11
12
 
12
13
  import sys
13
14
  import warnings
@@ -18,4 +19,4 @@ else:
18
19
  warnings.warn(
19
20
  "dataikuapi.LaunchpadClient is only available for Python 3.6 and above",
20
21
  DeprecationWarning,
21
- )
22
+ )
@@ -324,6 +324,21 @@ class DSSAgentToolSettings(DSSTaggableObjectSettings):
324
324
  """
325
325
  return self._settings["params"]
326
326
 
327
+ @property
328
+ def name(self):
329
+ """
330
+ :returns: The name of the tool
331
+ :rtype: string
332
+ """
333
+ return self._settings["name"]
334
+
335
+ @property
336
+ def type(self):
337
+ """
338
+ :returns: The type of the tool
339
+ :rtype: string
340
+ """
341
+ return self._settings["type"]
327
342
 
328
343
  def save(self):
329
344
  """
@@ -423,7 +423,8 @@ class DSSAPIDeployerDeployment(object):
423
423
  Runs test queries on a deployment and returns results as a dict
424
424
 
425
425
  :param str endpoint_id: Mandatory if the deployment has multiple endpoints
426
- :param list test_queries: Queries as str, formatted as [{"q": {"features": {"feat_1": "value", ...}}, {...}, ... ].
426
+ :param list test_queries: Queries as str, formatted as [{"q": {"features": {"feat_1": "value", ...}}, "headers": [{"key": "X-Custom-Header", "value": "value"}]}, ... ].
427
+ The optional ``headers`` list is sent with each query.
427
428
  If left to None, the test queries of the current version of the service will be used.
428
429
  :rtype: dict
429
430
 
@@ -493,7 +494,8 @@ class DSSAPIDeployerDeployment(object):
493
494
  Runs queries on a deployment and returns results as a dict
494
495
  An authorization to query the deployment through the deployer is needed
495
496
 
496
- :param list queries: Queries as str, formatted as ``[{"q": {"features": {"feat_1": "value", ...}}, {...}, ... ]``.
497
+ :param list queries: Queries as str, formatted as ``[{"q": {"features": {"feat_1": "value", ...}}, "headers": [{"key": "X-Custom-Header", "value": "value"}]}, ... ]``.
498
+ The optional ``headers`` list is sent with each query.
497
499
  :param str endpoint_id: Mandatory if the deployment has multiple endpoints
498
500
  :param bool adapt_query_for_infra_type: If True, automatically adjusts the query format to be compatible with the target infrastructure type.
499
501
  This is mainly applicable to Deploy-Anywhere infrastructures. Defaults to True.
@@ -264,7 +264,11 @@ class TemporaryDSSAppInstance(DSSAppInstance):
264
264
  """
265
265
  Delete this app instance.
266
266
  """
267
- self.get_as_project().delete(clear_managed_datasets=True)
267
+ self.get_as_project().delete(
268
+ clear_managed_datasets=True,
269
+ clear_output_managed_folders=True,
270
+ clear_managed_knowledge_banks=True,
271
+ clear_job_and_scenario_logs=True)
268
272
 
269
273
  def __enter__(self,):
270
274
  return self
@@ -7,6 +7,210 @@ from dataikuapi.dss.recipe import DSSRecipe
7
7
  from dataikuapi.dss.savedmodel import DSSSavedModel
8
8
  from dataikuapi.dss.streaming_endpoint import DSSStreamingEndpoint
9
9
 
10
+ import sys
11
+
12
+ # Only meant to avoid parent modules to fail when importing this module, but this won't work at runtime. We aren't trying to support
13
+ # Python versions older than 3.5 in this module. See this thread (if it still exists: https://dataiku.slack.com/archives/CBZBN0ZCN/p1788265325448089).
14
+ if sys.version_info > (3, 4):
15
+ from enum import Enum
16
+ else:
17
+ class Enum(object):
18
+ pass
19
+
20
+
21
+ class CobuildConversationMode(Enum):
22
+ """Mode used for a Cobuild user message."""
23
+ BUILD = "BUILD"
24
+ PLAN = "PLAN"
25
+
26
+
27
+ class CobuildPlanStatus(Enum):
28
+ """Lifecycle state of a :class:`CobuildPlan`."""
29
+ DRAFT = "DRAFT"
30
+ ACTIVE = "ACTIVE"
31
+ INACTIVE = "INACTIVE"
32
+
33
+
34
+ class CobuildPlanMilestoneStatus(Enum):
35
+ """Execution state of a :class:`CobuildPlanMilestone`."""
36
+ NOT_STARTED = "NOT_STARTED"
37
+ IN_PROGRESS = "IN_PROGRESS"
38
+ DONE = "DONE"
39
+
40
+
41
+ class CobuildPlanImplementationNotes(object):
42
+ """
43
+ Additional implementation context for a Cobuild plan milestone.
44
+
45
+ These notes record the tools that Cobuild planned to use and the reasoning it retained while
46
+ validating and executing the plan. They are provided for inspection only; changing this object
47
+ does not modify the plan in DSS.
48
+ """
49
+
50
+ def __init__(self, raw):
51
+ self._raw = raw
52
+
53
+ @property
54
+ def tools(self):
55
+ """
56
+ Names of the tools Cobuild planned to use.
57
+
58
+ :rtype: list[str]
59
+ """
60
+ return list(self._raw.get("tools") or [])
61
+
62
+ @property
63
+ def details(self):
64
+ """
65
+ Detailed implementation and validation notes.
66
+
67
+ :rtype: str or None
68
+ """
69
+ return self._raw.get("details")
70
+
71
+
72
+ class CobuildPlanMilestone(object):
73
+ """
74
+ One ordered unit of work in a :class:`CobuildPlan`.
75
+
76
+ Milestones are read-only snapshots of the plan returned by DSS. Their fields describe both the
77
+ intended work and its current execution state; changing this object does not modify the plan in
78
+ DSS.
79
+ """
80
+
81
+ def __init__(self, raw):
82
+ self._raw = raw
83
+
84
+ @property
85
+ def id(self):
86
+ """
87
+ Identifier of this milestone.
88
+
89
+ :rtype: str
90
+ """
91
+ return self._raw.get("id")
92
+
93
+ @property
94
+ def status(self):
95
+ """
96
+ Current execution state of this milestone.
97
+
98
+ :rtype: :class:`CobuildPlanMilestoneStatus`
99
+ """
100
+ return CobuildPlanMilestoneStatus(self._raw.get("status"))
101
+
102
+ @property
103
+ def title(self):
104
+ """
105
+ Short description of the milestone.
106
+
107
+ :rtype: str or None
108
+ """
109
+ return self._raw.get("title")
110
+
111
+ @property
112
+ def steps(self):
113
+ """
114
+ Markdown description of the work Cobuild intends to carry out.
115
+
116
+ :rtype: str or None
117
+ """
118
+ return self._raw.get("steps")
119
+
120
+ @property
121
+ def completion_checklist(self):
122
+ """
123
+ Checks Cobuild uses to determine whether the milestone is complete.
124
+
125
+ :rtype: list[str]
126
+ """
127
+ return list(self._raw.get("completionChecklist") or [])
128
+
129
+ @property
130
+ def output_description_summary(self):
131
+ """
132
+ Summary of the expected outputs or outcomes of this milestone.
133
+
134
+ :rtype: str or None
135
+ """
136
+ return self._raw.get("outputDescriptionSummary")
137
+
138
+ @property
139
+ def implementation_notes(self):
140
+ """
141
+ Additional implementation context, when Cobuild supplied it.
142
+
143
+ :rtype: :class:`CobuildPlanImplementationNotes` or None
144
+ """
145
+ raw = self._raw.get("implementationNotes")
146
+ return CobuildPlanImplementationNotes(raw) if raw is not None else None
147
+
148
+ class CobuildPlan(object):
149
+ """
150
+ Read-only typed snapshot of a Cobuild plan.
151
+
152
+ A plan is returned by :attr:`CobuildAssistantResponse.updated_plan` whenever Cobuild updates
153
+ it while processing a request. The snapshot contains the complete current plan, not a patch.
154
+ To revise it, send another message in :attr:`CobuildConversationMode.PLAN` mode; to execute a
155
+ draft, call :meth:`DSSCobuildConversation.approve_plan`.
156
+
157
+ For example::
158
+
159
+ plan = response.updated_plan
160
+ if plan is not None:
161
+ print(plan.title, plan.status.value)
162
+ for milestone in plan.milestones:
163
+ print(milestone.title, milestone.status.value)
164
+ """
165
+
166
+ def __init__(self, raw):
167
+ self._raw = raw
168
+
169
+ @property
170
+ def id(self):
171
+ """
172
+ Identifier of this plan.
173
+
174
+ :rtype: str
175
+ """
176
+ return self._raw.get("id")
177
+
178
+ @property
179
+ def status(self):
180
+ """
181
+ Current lifecycle state of this plan.
182
+
183
+ :rtype: :class:`CobuildPlanStatus`
184
+ """
185
+ return CobuildPlanStatus(self._raw.get("status"))
186
+
187
+ @property
188
+ def title(self):
189
+ """
190
+ Short description of the overall plan.
191
+
192
+ :rtype: str or None
193
+ """
194
+ return self._raw.get("title")
195
+
196
+ @property
197
+ def description(self):
198
+ """
199
+ Detailed description of the plan.
200
+
201
+ :rtype: str or None
202
+ """
203
+ return self._raw.get("description")
204
+
205
+ @property
206
+ def milestones(self):
207
+ """
208
+ Ordered milestones making up this plan.
209
+
210
+ :rtype: list of :class:`CobuildPlanMilestone`
211
+ """
212
+ return [CobuildPlanMilestone(raw) for raw in self._raw.get("milestones") or []]
213
+
10
214
 
11
215
  class CobuildMessage(object):
12
216
  def __init__(self, raw):
@@ -29,7 +233,7 @@ class CobuildAssistantResponse(CobuildMessage):
29
233
  .. important::
30
234
  Do not create this class directly, it is returned by :meth:`DSSCobuildConversation.send_message`
31
235
  :meth:`DSSCobuildConversation.answer_confirmation`, and
32
- :meth:`DSSCobuildConversation.answer_question`.
236
+ :meth:`DSSCobuildConversation.answer_question`, and :meth:`DSSCobuildConversation.approve_plan`.
33
237
  """
34
238
 
35
239
  @property
@@ -195,6 +399,20 @@ class CobuildAssistantResponse(CobuildMessage):
195
399
  """
196
400
  return self._raw.get("selectFirstAnswerByDefault")
197
401
 
402
+ @property
403
+ def updated_plan(self):
404
+ """
405
+ The latest non-null plan update emitted while processing this request.
406
+
407
+ The returned :class:`CobuildPlan` is a read-only snapshot of the complete current plan,
408
+ including its status, title, description, and typed milestones. ``None`` when the request
409
+ did not update a plan or if it got discarded.
410
+
411
+ :rtype: :class:`CobuildPlan` or None
412
+ """
413
+ raw = self._raw.get("updatedPlan")
414
+ return CobuildPlan(raw) if raw is not None else None
415
+
198
416
  def __repr__(self):
199
417
  return "CobuildAssistantResponse(type=%r, message=%r)" % (self.type, self.message)
200
418
 
@@ -333,8 +551,16 @@ class DSSCobuildConversation(object):
333
551
  )
334
552
  print(response.message)
335
553
 
336
- If a tool requires edit permission, pass ``allow_edit_project=True`` to
337
- :meth:`send_message` to allow Cobuild to create and edit objects for that message.
554
+ For tools that require project edit permission, pass ``allow_edit_project=True`` to
555
+ :meth:`send_message`. To allow file operations in specific managed folders, pass their IDs
556
+ through ``allow_edit_managed_folder_contents``.
557
+
558
+ Cobuild can also create plans, iterate with the user and implement them once approved by the user.
559
+ The conversation can be in one of three states: build mode without a plan, plan mode with a draft plan,
560
+ and build mode with an active plan. Send messages with
561
+ ``conversation_mode=CobuildConversationMode.PLAN`` to draft a plan, then call
562
+ :meth:`approve_plan` to execute it and wait for the final response. Discard a draft plan
563
+ before returning to build mode, and discard an active plan before returning to plan mode.
338
564
  """
339
565
 
340
566
  def __init__(self, client, project_key, conversation_id, selected_objects=None):
@@ -359,7 +585,7 @@ class DSSCobuildConversation(object):
359
585
  """
360
586
  return list(self._messages)
361
587
 
362
- def send_message(self, message, selected_objects=None, allow_edit_project=False):
588
+ def send_message(self, message, selected_objects=None, allow_edit_project=False, conversation_mode=CobuildConversationMode.BUILD, intelligence_level=None, allow_edit_managed_folder_contents=None):
363
589
  """
364
590
  Send a message to the assistant and wait for its response.
365
591
 
@@ -371,14 +597,30 @@ class DSSCobuildConversation(object):
371
597
  :param bool allow_edit_project: whether to allow Cobuild to create and edit everything
372
598
  needed in this project to follow this message. This permission applies only to this
373
599
  message.
600
+ :param list[str] allow_edit_managed_folder_contents: list of managed folder ids in which Cobuild is allowed to write, modify or delete files
601
+ This permission applies only to this message.
602
+ :param CobuildConversationMode conversation_mode: :attr:`CobuildConversationMode.BUILD`
603
+ (the default) for normal or plan-execution messages, or
604
+ :attr:`CobuildConversationMode.PLAN` to draft or revise a plan. A draft plan must
605
+ be discarded before switching back to build mode; an active plan must be discarded
606
+ before switching back to plan mode.
607
+ :param str intelligence_level: optional intelligence level: ``"LIGHT"``, ``"MEDIUM"``,
608
+ ``"HIGH"``, or ``"VERY_HIGH"``. ``None`` defaults to ``"MEDIUM"``.
374
609
 
375
610
  :returns: the assistant's response
376
611
  :rtype: :class:`CobuildAssistantResponse`
377
612
  """
613
+ if not isinstance(conversation_mode, CobuildConversationMode):
614
+ raise ValueError("conversation_mode must be a CobuildConversationMode, got %r" % conversation_mode)
378
615
  if selected_objects is not None:
379
616
  self._selected_objects = _DSS_objects_to_selected(self.project_key, selected_objects)
380
617
 
381
- self._messages.append(CobuildUserMessage({"type": "request", "message": message, "selected_objects": self._selected_objects}))
618
+ self._messages.append(CobuildUserMessage({
619
+ "type": "request",
620
+ "message": message,
621
+ "selected_objects": self._selected_objects,
622
+ "conversation_mode": conversation_mode.value,
623
+ }))
382
624
  raw = self.client._perform_json(
383
625
  "POST",
384
626
  "/projects/%s/cobuild/conversations/%s/messages" % (self.project_key, self.conversation_id),
@@ -386,6 +628,44 @@ class DSSCobuildConversation(object):
386
628
  "message": message,
387
629
  "selectedObjects": self._selected_objects or [],
388
630
  "allowEditProject": allow_edit_project,
631
+ "allowEditManagedFolderContents": allow_edit_managed_folder_contents or [],
632
+ "conversationMode": conversation_mode.value,
633
+ "intelligenceLevel": intelligence_level,
634
+ },
635
+ )
636
+ response = CobuildAssistantResponse(raw)
637
+ self._pending_confirmation_id = raw["confirmationId"] if response.is_confirmation_request else None
638
+ self._pending_question_id = raw["questionId"] if response.is_question_request else None
639
+ self._messages.append(response)
640
+ return response
641
+
642
+ def approve_plan(self, allow_edit_project=False, intelligence_level=None, allow_edit_managed_folder_contents=None):
643
+ """
644
+ Approve the current draft plan, wait for its execution, and return its final response.
645
+
646
+ A plan can be approved only while it is a draft. Use :meth:`detach_plan` to remove the
647
+ active plan before returning to plan mode.
648
+
649
+ :param bool allow_edit_project: whether to allow Cobuild to create and edit everything
650
+ needed in this project to execute the plan. This permission applies only to this
651
+ Cobuild turn. If Cobuild comes back with a message without the plan being fully
652
+ executed (e.g. after hitting a blocker), the same parameter should be passed on the
653
+ next turn to retain this behavior.
654
+ :param list[str] allow_edit_managed_folder_contents: list of managed folder ids in which Cobuild is allowed to write, modify or delete files
655
+ permission applies to the next turn, as it does for allow_edit_project
656
+ :param str intelligence_level: optional intelligence level: ``"LIGHT"``, ``"MEDIUM"``,
657
+ ``"HIGH"``, or ``"VERY_HIGH"``. ``None`` defaults to ``"MEDIUM"``.
658
+
659
+ :returns: the final assistant response from plan execution
660
+ :rtype: :class:`CobuildAssistantResponse`
661
+ """
662
+ raw = self.client._perform_json(
663
+ "POST",
664
+ "/projects/%s/cobuild/conversations/%s/plan/approve" % (self.project_key, self.conversation_id),
665
+ body={
666
+ "allowEditProject": allow_edit_project,
667
+ "allowEditManagedFolderContents": allow_edit_managed_folder_contents or [],
668
+ "intelligenceLevel": intelligence_level,
389
669
  },
390
670
  )
391
671
  response = CobuildAssistantResponse(raw)
@@ -394,6 +674,18 @@ class DSSCobuildConversation(object):
394
674
  self._messages.append(response)
395
675
  return response
396
676
 
677
+ def detach_plan(self):
678
+ """
679
+ Detach the current draft/active/completed plan and return the conversation to build mode.
680
+
681
+ Call this before leaving plan mode with a draft, or before entering plan mode while an
682
+ active plan is attached to the conversation.
683
+ """
684
+ return self.client._perform_empty(
685
+ "POST",
686
+ "/projects/%s/cobuild/conversations/%s/plan/discard" % (self.project_key, self.conversation_id),
687
+ )
688
+
397
689
  def answer_confirmation(self, choice, options=None):
398
690
  """
399
691
  Answer a pending confirmation request and wait for the assistant's next response.
@@ -435,7 +727,7 @@ class DSSCobuildConversation(object):
435
727
  self._messages.append(response)
436
728
  return response
437
729
 
438
- def answer_question(self, answers=None, rejected=False, used_custom_answer=False):
730
+ def answer_question(self, answers=None, rejected=False, used_custom_answer=False, selected_objects=None):
439
731
  """
440
732
  Answer a pending question request and wait for the assistant's next response.
441
733
 
@@ -448,6 +740,9 @@ class DSSCobuildConversation(object):
448
740
  ``rejected=True``. Defaults to ``[]``.
449
741
  :param bool rejected: whether to decline answering the question
450
742
  :param bool used_custom_answer: whether one of the answers came from the custom free-text input
743
+ :param selected_objects: object selection the assistant should focus on. It is reused for
744
+ subsequent messages and question answers, unless overwritten
745
+ :type selected_objects: list[:class:`.DSSDataset`, :class:`.DSSRecipe`, :class:`.DSSLabelingTask`, :class:`.DSSManagedFolder`, :class:`.DSSSavedModel`, :class:`.DSSKnowledgeBank`, :class:`.DSSModelEvaluationStore` or :class:`.DSSStreamingEndpoint`]
451
746
 
452
747
  :returns: the assistant's response after the question answer
453
748
  :rtype: :class:`CobuildAssistantResponse`
@@ -458,6 +753,8 @@ class DSSCobuildConversation(object):
458
753
  raise ValueError("answers must be a list of strings")
459
754
  if self._pending_question_id is None:
460
755
  raise ValueError("No pending question request. Call send_message first and check is_question_request.")
756
+ if selected_objects is not None:
757
+ self._selected_objects = _DSS_objects_to_selected(self.project_key, selected_objects)
461
758
 
462
759
  question_id = self._pending_question_id
463
760
  self._pending_question_id = None
@@ -472,6 +769,7 @@ class DSSCobuildConversation(object):
472
769
  "rejected": rejected,
473
770
  "answers": answers,
474
771
  "usedCustomAnswer": used_custom_answer,
772
+ "selectedObjects": self._selected_objects or [],
475
773
  },
476
774
  )
477
775
  response = CobuildAssistantResponse(raw)