Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 23 additions & 13 deletions src/mistralai/basesdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,25 @@ def __init__(
self.parent_ref = parent_ref

def _get_url(self, base_url, url_variables):
sdk_url, sdk_variables = self.sdk_configuration.get_server_details()

if base_url is None:
base_url = sdk_url

if url_variables is None:
url_variables = sdk_variables

return utils.template_url(base_url, url_variables)
sdk_configuration = (
self.sdk_configuration
) # local var for attribute lookup speed
sdk_url, sdk_variables = sdk_configuration.get_server_details()

base = base_url if base_url is not None else sdk_url
vars_ = url_variables if url_variables is not None else sdk_variables

# FAST template_url optimization: use str.format for variable substitution in one pass
# This is a safe rewrite assuming only keys in vars_ are expected in base.
# Fall back to the original if values are not string (shouldn't happen for URLs)
if vars_:
try:
# Replace {key} with value for each key via format mapping
base = base.format(**{k: str(v) for k, v in vars_.items()})
except KeyError:
# If the url template has keys not supplied, fallback to original method.
return utils.template_url(base, vars_)
return base

def _build_request_async(
self,
Expand Down Expand Up @@ -225,10 +235,10 @@ def do_request(
stream=False,
retry_config: Optional[Tuple[RetryConfig, List[str]]] = None,
) -> httpx.Response:
client = self.sdk_configuration.client
logger = self.sdk_configuration.debug_logger

hooks = self.sdk_configuration.__dict__["_hooks"]
sdk_configuration = self.sdk_configuration
client = sdk_configuration.client
logger = sdk_configuration.debug_logger
hooks = sdk_configuration.__dict__.get("_hooks")

def do():
http_res = None
Expand Down
2 changes: 1 addition & 1 deletion src/mistralai/utils/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ def is_nullable(field):
if origin is Nullable or origin is OptionalNullable:
return True

if not origin is Union or type(None) not in get_args(field):
if origin is not Union or type(None) not in get_args(field):
return False

for arg in get_args(field):
Expand Down
2 changes: 2 additions & 0 deletions src/mistralai/utils/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,11 @@ def match_status_codes(status_codes: List[str], status_code: int) -> bool:

T = TypeVar("T")


def cast_partial(typ):
return partial(cast, typ)


def get_global_from_env(
value: Optional[T], env_key: str, type_cast: Callable[[str], T]
) -> Optional[T]:
Expand Down