Skip to content
Merged
21 changes: 17 additions & 4 deletions giskard/client/giskard_client.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
"""API Client to interact with the Giskard app"""
from typing import List

import logging
import os
import posixpath
Expand All @@ -14,6 +12,7 @@
from requests.adapters import HTTPAdapter
from requests.auth import AuthBase
from requests_toolbelt import sessions
from typing import List

import giskard
from giskard.client.dtos import DatasetMetaInfo, ModelMetaInfo, ServerInfo, SuiteInfo, TestSuiteDTO
Expand Down Expand Up @@ -74,6 +73,15 @@ def __call__(self, r):
return r


def _limit_str_size(json, field, limit=255):
if field not in json or not isinstance(json[field], str):
return

if len(json[field]) > limit:
logger.warning(f"Field '{field} exceeded the limit of {limit} characters and has been truncated")
json[field] = json[field][0:limit]


class GiskardClient:
def __init__(self, url: str, key: str, hf_token: str = None):
self.host_url = url
Expand All @@ -93,7 +101,7 @@ def __init__(self, url: str, key: str, hf_token: str = None):
f"Your giskard client version ({giskard.__version__}) does not match the hub version "
f"({server_settings.serverVersion}). "
f"Please upgrade your client to the latest version. "
f"pip install \"giskard[hub]>=2.0.0b\" -U"
f'pip install "giskard[hub]>=2.0.0b" -U'
)
analytics.init_server_info(server_settings)

Expand Down Expand Up @@ -319,7 +327,12 @@ def save_dataset_meta(
print(f"Dataset successfully uploaded to project key '{project_key}' with ID = {dataset_id}")

def save_meta(self, endpoint: str, meta: SMT) -> SMT:
json = self._session.put(endpoint, json=meta.to_json()).json()
meta_json = meta.to_json()

_limit_str_size(meta_json, "name")
_limit_str_size(meta_json, "display_name")

json = self._session.put(endpoint, json=meta_json).json()
return meta if json is None or "uuid" not in json else meta.from_json(json)

def load_meta(self, endpoint: str, meta_class: SMT) -> TestFunctionMeta:
Expand Down