Skip to content

Commit e6065e2

Browse files
authored
Publish 13.4.3 on PyPI (#319)
* Sync sources from main repository * Release metadata
1 parent 2adeafa commit e6065e2

12 files changed

+325
-153
lines changed

Diff for: HISTORY.txt

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Changelog
22
==========
33

4+
13.4.3 (2025-03-26)
5+
---------------------
6+
7+
* Initial release for DSS 13.4.3
8+
49
13.4.1 (2025-02-21)
510
---------------------
611

Diff for: dataikuapi/dss/admin.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -637,8 +637,10 @@ def get_client_as(self):
637637
if self.client.api_key is not None:
638638
return DSSClient(self.client.host, self.client.api_key, extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=not self.client._session.verify)
639639
elif self.client.internal_ticket is not None:
640+
verify = self.client._session.verify
641+
no_check_certificate = verify if isinstance(verify, str) else not verify
640642
return DSSClient(self.client.host, internal_ticket = self.client.internal_ticket,
641-
extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=not self.client._session.verify)
643+
extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=no_check_certificate)
642644
else:
643645
raise ValueError("Don't know how to proxy this client")
644646

Diff for: dataikuapi/dss/document_extractor.py

+275-134
Large diffs are not rendered by default.

Diff for: dataikuapi/dss/flow.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,9 @@ def start_tool(self, type, data={}):
205205
"""
206206
.. caution::
207207
208-
Deprecated, this method will no longer be available for views (starting with DSS 13.4):
209-
TAGS, CUSTOM_FIELDS, CONNECTIONS, COUNT_OF_RECORDS, FILESIZE, FILEFORMATS, RECIPES_ENGINES, RECIPES_CODE_ENVS, IMPALA_WRITE_MODE, HIVE_MODE, SPARK_CONFIG, SPARK_PIPELINES, SQL_PIPELINES, PARTITIONING, PARTITIONS, SCENARIOS, CREATION, LAST_MODIFICATION, LAST_BUILD, RECENT_ACTIVITY, WATCH.
210-
It will be maintained for flow actions.
208+
Deprecated, this method will no longer be available for views (starting with DSS 13.4):
209+
TAGS, CUSTOM_FIELDS, CONNECTIONS, COUNT_OF_RECORDS, FILESIZE, FILEFORMATS, RECIPES_ENGINES, RECIPES_CODE_ENVS, IMPALA_WRITE_MODE, HIVE_MODE, SPARK_CONFIG, SPARK_PIPELINES, SQL_PIPELINES, PARTITIONING, PARTITIONS, SCENARIOS, CREATION, LAST_MODIFICATION, LAST_BUILD, RECENT_ACTIVITY, WATCH.
210+
It will be maintained for flow actions.
211211
212212
Start a tool in the flow.
213213

Diff for: dataikuapi/dss/llm.py

+18-3
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,29 @@ def add_text(self, text):
157157
self.eq["queries"].append({"text": text})
158158
return self
159159

160-
def add_image(self, image):
160+
def add_image(self, image, text = None):
161161
"""
162162
Add an image to the embedding query.
163163
164164
:param image: Image content as bytes or str (base64)
165+
:param text: Optional text (requires a multimodal model)
165166
"""
167+
query = {}
168+
166169
if isinstance(image, str):
167-
self.eq["queries"].append({"inlineImage": image})
170+
query["inlineImage"] = image
168171
elif isinstance(image, bytes):
169172
import base64
170-
self.eq["queries"].append({"inlineImage": base64.b64encode(image).decode("utf8")})
173+
query["inlineImage"] = base64.b64encode(image).decode("utf8")
174+
else:
175+
raise Exception("Expecting image to be an instance of str or bytes, got '%s' instead." % type(image) )
176+
177+
if text is not None:
178+
query["text"] = text
179+
180+
if query:
181+
self.eq["queries"].append(query)
182+
171183
return self
172184

173185
def new_guardrail(self, type):
@@ -255,6 +267,9 @@ def with_tool_calls(self, tool_calls, role="assistant"):
255267
"""
256268
Add tool calls to the completion query.
257269
270+
.. caution::
271+
Tool calls support is experimental for locally-running Hugging Face models.
272+
258273
:param list[dict] tool_calls: Calls to tools that the LLM requested to use.
259274
:param str role: The message role. Defaults to ``assistant``.
260275
"""

Diff for: dataikuapi/dss/ml.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2363,9 +2363,9 @@ class DSSTimeseriesForecastingMLTaskSettings(AbstractTabularPredictionMLTaskSett
23632363
"SEASONAL_LOESS": PredictionAlgorithmMeta("seasonal_loess_timeseries", SeasonalLoessSettings),
23642364
"PROPHET": PredictionAlgorithmMeta("prophet_timeseries", ProphetSettings),
23652365
"GLUONTS_NPTS_FORECASTER": PredictionAlgorithmMeta("gluonts_npts_timeseries", GluonTSNPTSForecasterSettings),
2366-
2367-
"GLUONTS_TORCH_SIMPLE_FEEDFORWARD": PredictionAlgorithmMeta("gluonts_torch_simple_feed_forward_timeseries", GluonTSTorchSimpleFeedForwardSettings),
2368-
"GLUONTS_TORCH_DEEPAR": PredictionAlgorithmMeta("gluonts_torch_deepar_timeseries", GluonTSTorchDeepARSettings),
2366+
#
2367+
# "GLUONTS_TORCH_SIMPLE_FEEDFORWARD": PredictionAlgorithmMeta("gluonts_torch_simple_feed_forward_timeseries", GluonTSTorchSimpleFeedForwardSettings),
2368+
# "GLUONTS_TORCH_DEEPAR": PredictionAlgorithmMeta("gluonts_torch_deepar_timeseries", GluonTSTorchDeepARSettings),
23692369

23702370
"GLUONTS_SIMPLE_FEEDFORWARD": PredictionAlgorithmMeta("gluonts_simple_feed_forward_timeseries", GluonTSSimpleFeedForwardSettings),
23712371
"GLUONTS_DEEPAR": PredictionAlgorithmMeta("gluonts_deepar_timeseries", GluonTSDeepARSettings),

Diff for: dataikuapi/dss/project.py

+5
Original file line numberDiff line numberDiff line change
@@ -1582,6 +1582,11 @@ def update_variables(self, variables, type="standard"):
15821582

15831583
@property
15841584
def document_extractor(self):
1585+
"""
1586+
1587+
:returns: A handle to interact with a DSS-managed Document Extractor
1588+
:rtype: :class:`dataikuapi.dss.document_extractor.DocumentExtractor`
1589+
"""
15851590
return DocumentExtractor(self.client, self.project_key)
15861591

15871592
########################################################

Diff for: dataikuapi/dss/scenario.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ def wait_for_completion(self, no_fail=False):
721721
eb.sleep_next()
722722

723723
if self.outcome != 'SUCCESS' and no_fail == False:
724-
raise DataikuException("Scenario run returned status %s" % outcome)
724+
raise DataikuException("Scenario run returned status %s" % self.outcome)
725725

726726
@property
727727
def running(self):

Diff for: dataikuapi/dssclient.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def __init__(self, host, api_key=None, internal_ticket=None, extra_headers=None,
5656
self.internal_ticket = internal_ticket
5757
self.host = host
5858
self._session = Session()
59-
if no_check_certificate:
60-
self._session.verify = False
59+
if no_check_certificate: # either True or a string in case of encrypted rpc
60+
self._session.verify = no_check_certificate if isinstance(no_check_certificate, str) else False
6161

6262
if self.api_key is not None:
6363
self._session.auth = HTTPBasicAuth(self.api_key, "")
@@ -414,7 +414,7 @@ def get_user(self, login):
414414
"""
415415
return DSSUser(self, login)
416416

417-
def create_user(self, login, password, display_name='', source_type='LOCAL', groups=None, profile='DATA_SCIENTIST'):
417+
def create_user(self, login, password, display_name='', source_type='LOCAL', groups=None, profile='DATA_SCIENTIST', email=None):
418418
"""
419419
Create a user, and return a handle to interact with it
420420
@@ -426,6 +426,7 @@ def create_user(self, login, password, display_name='', source_type='LOCAL', gro
426426
:param str source_type: the type of new user. Admissible values are 'LOCAL' or 'LDAP'
427427
:param list groups: the names of the groups the new user belongs to (defaults to `[]`)
428428
:param str profile: The profile for the new user. Typical values (depend on your license): FULL_DESIGNER, DATA_DESIGNER, AI_CONSUMER, ...
429+
:param str email: The email for the new user.
429430
430431
:return: A :class:`dataikuapi.dss.admin.DSSUser` user handle
431432
"""
@@ -438,7 +439,8 @@ def create_user(self, login, password, display_name='', source_type='LOCAL', gro
438439
"displayName" : display_name,
439440
"sourceType" : source_type,
440441
"groups" : groups,
441-
"userProfile" : profile
442+
"userProfile" : profile,
443+
"email": email
442444
})
443445
return DSSUser(self, login)
444446

Diff for: dataikuapi/govern/admin.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ def get_client_as(self):
5151
if self.client.api_key is not None:
5252
return GovernClient(self.client.host, self.client.api_key, extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=not self.client._session.verify)
5353
elif self.client.internal_ticket is not None:
54+
verify = self.client._session.verify
55+
no_check_certificate = verify if isinstance(verify, str) else not verify
5456
return GovernClient(self.client.host, internal_ticket=self.client.internal_ticket,
55-
extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=not self.client._session.verify)
57+
extra_headers={"X-DKU-ProxyUser": self.login}, no_check_certificate=no_check_certificate)
5658
else:
5759
raise ValueError("Don't know how to proxy this client")
5860

Diff for: dataikuapi/govern_client.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ def __init__(self, host, api_key=None, internal_ticket=None, extra_headers=None,
3838
self.internal_ticket = internal_ticket
3939
self.host = host
4040
self._session = Session()
41-
if no_check_certificate:
42-
self._session.verify = False
41+
if no_check_certificate: # either True or a string in case of encrypted rpc
42+
self._session.verify = no_check_certificate if isinstance(no_check_certificate, str) else False
4343

4444
if self.api_key is not None:
4545
self._session.auth = HTTPBasicAuth(self.api_key, "")

Diff for: setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from setuptools import setup
44

5-
VERSION = "13.4.1"
5+
VERSION = "13.4.3"
66

77
long_description = (open('README').read() + '\n\n' +
88
open('HISTORY.txt').read())

0 commit comments

Comments
 (0)