diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/__init__.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/__init__.py index 04103813fac43b..3d6466d279861a 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/__init__.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/__init__.py @@ -69,7 +69,6 @@ "ModelT", "Query", "FileTypes", - "PYDANTIC_V2", "ConfigDict", "GenericModel", @@ -81,9 +80,7 @@ "get_model_config", "get_model_fields", "field_get_default", - "is_file_content", - "ZhipuAIError", "APIStatusError", "APIRequestFailedError", @@ -94,23 +91,18 @@ "APIResponseError", "APIResponseValidationError", "APITimeoutError", - "make_request_options", "HttpClient", "ZHIPUAI_DEFAULT_TIMEOUT", "ZHIPUAI_DEFAULT_MAX_RETRIES", "ZHIPUAI_DEFAULT_LIMITS", - "is_list", "is_mapping", "parse_date", "parse_datetime", "is_given", "maybe_transform", - "deepcopy_minimal", "extract_files", - "StreamResponse", - ] diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_compat.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_compat.py index 044ee80b241a25..c2904a013373f1 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_compat.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_compat.py @@ -23,26 +23,19 @@ # v1 re-exports if TYPE_CHECKING: - def parse_date(value: date | StrBytesIntFloat) -> date: - ... + def parse_date(value: date | StrBytesIntFloat) -> date: ... - def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime: - ... + def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime: ... - def get_args(t: type[Any]) -> tuple[Any, ...]: - ... + def get_args(t: type[Any]) -> tuple[Any, ...]: ... - def is_union(tp: type[Any] | None) -> bool: - ... + def is_union(tp: type[Any] | None) -> bool: ... - def get_origin(t: type[Any]) -> type[Any] | None: - ... + def get_origin(t: type[Any]) -> type[Any] | None: ... - def is_literal_type(type_: type[Any]) -> bool: - ... + def is_literal_type(type_: type[Any]) -> bool: ... - def is_typeddict(type_: type[Any]) -> bool: - ... + def is_typeddict(type_: type[Any]) -> bool: ... else: if PYDANTIC_V2: @@ -178,22 +171,19 @@ def model_parse(model: type[_ModelT], data: Any) -> _ModelT: # generic models if TYPE_CHECKING: - class GenericModel(pydantic.BaseModel): - ... + class GenericModel(pydantic.BaseModel): ... else: if PYDANTIC_V2: # there no longer needs to be a distinction in v2 but # we still have to create our own subclass to avoid # inconsistent MRO ordering errors - class GenericModel(pydantic.BaseModel): - ... + class GenericModel(pydantic.BaseModel): ... else: import pydantic.generics - class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): - ... + class GenericModel(pydantic.generics.GenericModel, pydantic.BaseModel): ... # cached properties @@ -212,26 +202,21 @@ class TypedCachedProperty(Generic[_T]): func: Callable[[Any], _T] attrname: str | None - def __init__(self, func: Callable[[Any], _T]) -> None: - ... + def __init__(self, func: Callable[[Any], _T]) -> None: ... @overload - def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: - ... + def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ... @overload - def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: - ... + def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: ... def __get__(self, instance: object, owner: type[Any] | None = None) -> _T | Self: raise NotImplementedError() - def __set_name__(self, owner: type[Any], name: str) -> None: - ... + def __set_name__(self, owner: type[Any], name: str) -> None: ... # __set__ is not defined at runtime, but @cached_property is designed to be settable - def __set__(self, instance: object, value: _T) -> None: - ... + def __set__(self, instance: object, value: _T) -> None: ... else: try: from functools import cached_property as cached_property diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_models.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_models.py index 9a86ff433e0d55..b7ec1f3ab90c0d 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_models.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_models.py @@ -79,14 +79,14 @@ class Config(pydantic.BaseConfig): # pyright: ignore[reportDeprecated] extra: Any = pydantic.Extra.allow # type: ignore def to_dict( - self, - *, - mode: Literal["json", "python"] = "python", - use_api_names: bool = True, - exclude_unset: bool = True, - exclude_defaults: bool = False, - exclude_none: bool = False, - warnings: bool = True, + self, + *, + mode: Literal["json", "python"] = "python", + use_api_names: bool = True, + exclude_unset: bool = True, + exclude_defaults: bool = False, + exclude_none: bool = False, + warnings: bool = True, ) -> dict[str, object]: """Recursively generate a dictionary representation of the model, optionally specifying which fields to include or exclude. @@ -117,14 +117,14 @@ def to_dict( ) def to_json( - self, - *, - indent: int | None = 2, - use_api_names: bool = True, - exclude_unset: bool = True, - exclude_defaults: bool = False, - exclude_none: bool = False, - warnings: bool = True, + self, + *, + indent: int | None = 2, + use_api_names: bool = True, + exclude_unset: bool = True, + exclude_defaults: bool = False, + exclude_none: bool = False, + warnings: bool = True, ) -> str: """Generates a JSON string representing this model as it would be received from or sent to the API (but with indentation). @@ -161,9 +161,9 @@ def __str__(self) -> str: @classmethod @override def construct( - cls: type[ModelT], - _fields_set: set[str] | None = None, - **values: object, + cls: type[ModelT], + _fields_set: set[str] | None = None, + **values: object, ) -> ModelT: m = cls.__new__(cls) fields_values: dict[str, object] = {} @@ -229,19 +229,19 @@ def construct( @override def model_dump( - self, - *, - mode: Literal["json", "python"] | str = "python", - include: IncEx = None, - exclude: IncEx = None, - by_alias: bool = False, - exclude_unset: bool = False, - exclude_defaults: bool = False, - exclude_none: bool = False, - round_trip: bool = False, - warnings: bool | Literal["none", "warn", "error"] = True, - context: dict[str, Any] | None = None, - serialize_as_any: bool = False, + self, + *, + mode: Literal["json", "python"] | str = "python", + include: IncEx = None, + exclude: IncEx = None, + by_alias: bool = False, + exclude_unset: bool = False, + exclude_defaults: bool = False, + exclude_none: bool = False, + round_trip: bool = False, + warnings: bool | Literal["none", "warn", "error"] = True, + context: dict[str, Any] | None = None, + serialize_as_any: bool = False, ) -> dict[str, Any]: """Usage docs: https://docs.pydantic.dev/2.4/concepts/serialization/#modelmodel_dump @@ -284,19 +284,19 @@ def model_dump( @override def model_dump_json( - self, - *, - indent: int | None = None, - include: IncEx = None, - exclude: IncEx = None, - by_alias: bool = False, - exclude_unset: bool = False, - exclude_defaults: bool = False, - exclude_none: bool = False, - round_trip: bool = False, - warnings: bool | Literal["none", "warn", "error"] = True, - context: dict[str, Any] | None = None, - serialize_as_any: bool = False, + self, + *, + indent: int | None = None, + include: IncEx = None, + exclude: IncEx = None, + by_alias: bool = False, + exclude_unset: bool = False, + exclude_defaults: bool = False, + exclude_none: bool = False, + round_trip: bool = False, + warnings: bool | Literal["none", "warn", "error"] = True, + context: dict[str, Any] | None = None, + serialize_as_any: bool = False, ) -> str: """Usage docs: https://docs.pydantic.dev/2.4/concepts/serialization/#modelmodel_dump_json @@ -364,9 +364,9 @@ def is_basemodel_type(type_: type) -> TypeGuard[type[BaseModel] | type[GenericMo def build( - base_model_cls: Callable[P, _BaseModelT], - *args: P.args, - **kwargs: P.kwargs, + base_model_cls: Callable[P, _BaseModelT], + *args: P.args, + **kwargs: P.kwargs, ) -> _BaseModelT: """Construct a BaseModel class without validation. @@ -534,11 +534,11 @@ class Foo(BaseModel): """ def __init__( - self, - *, - mapping: dict[str, type], - discriminator_field: str, - discriminator_alias: str | None, + self, + *, + mapping: dict[str, type], + discriminator_field: str, + discriminator_alias: str | None, ) -> None: self.mapping = mapping self.field_name = discriminator_field @@ -580,8 +580,7 @@ def _build_discriminated_union_meta(*, union: type, meta_annotations: tuple[Any, if isinstance(entry, str): mapping[entry] = variant else: - field_info = cast("dict[str, FieldInfo]", variant.__fields__).get( - discriminator_field_name) # pyright: ignore[reportDeprecated, reportUnnecessaryCast] + field_info = cast("dict[str, FieldInfo]", variant.__fields__).get(discriminator_field_name) # pyright: ignore[reportDeprecated, reportUnnecessaryCast] if not field_info: continue @@ -640,6 +639,7 @@ def validate_type(*, type_: type[_T], value: object) -> _T: class GenericModel(BaseGenericModel, BaseModel): pass + if PYDANTIC_V2: from pydantic import TypeAdapter @@ -650,14 +650,14 @@ def _validate_non_model_type(*, type_: type[_T], value: object) -> _T: class TypeAdapter(Generic[_T]): """Used as a placeholder to easily convert runtime types to a Pydantic format - to provide validation. - - For example: - ```py - validated = RootModel[int](__root__="5").__root__ - # validated: 5 - ``` - """ + to provide validation. + + For example: + ```py + validated = RootModel[int](__root__="5").__root__ + # validated: 5 + ``` + """ def __init__(self, type_: type[_T]): self.type_ = type_ diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_type.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_type.py index 720206f6ccfcbb..ea1d3f09dc42ea 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_type.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_base_type.py @@ -85,20 +85,18 @@ def __bool__(self) -> Literal[False]: class ModelBuilderProtocol(Protocol): @classmethod def build( - cls: type[_T], - *, - response: Response, - data: object, - ) -> _T: - ... + cls: type[_T], + *, + response: Response, + data: object, + ) -> _T: ... Headers = Mapping[str, Union[str, Omit]] class HeadersLikeProtocol(Protocol): - def get(self, __key: str) -> str | None: - ... + def get(self, __key: str) -> str | None: ... HeadersLike = Union[Headers, HeadersLikeProtocol] @@ -147,11 +145,11 @@ class HttpxSendArgs(TypedDict, total=False): FileTypes = Union[ # file (or bytes) FileContent, - # (filename, file (or bytes)) + # (filename, file (or bytes)) tuple[Optional[str], FileContent], - # (filename, file (or bytes), content_type) + # (filename, file (or bytes), content_type) tuple[Optional[str], FileContent, Optional[str]], - # (filename, file (or bytes), content_type, headers) + # (filename, file (or bytes), content_type, headers) tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]], ] RequestFiles = Union[Mapping[str, FileTypes], Sequence[tuple[str, FileTypes]]] @@ -161,11 +159,11 @@ class HttpxSendArgs(TypedDict, total=False): HttpxFileTypes = Union[ # file (or bytes) HttpxFileContent, - # (filename, file (or bytes)) + # (filename, file (or bytes)) tuple[Optional[str], HttpxFileContent], - # (filename, file (or bytes), content_type) + # (filename, file (or bytes), content_type) tuple[Optional[str], HttpxFileContent, Optional[str]], - # (filename, file (or bytes), content_type, headers) + # (filename, file (or bytes), content_type, headers) tuple[Optional[str], HttpxFileContent, Optional[str], Mapping[str, str]], ] diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_errors.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_errors.py index 7e253f5dc41bd8..e2c9d24c6c0d24 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_errors.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_errors.py @@ -18,7 +18,10 @@ class ZhipuAIError(Exception): - def __init__(self, message: str, ) -> None: + def __init__( + self, + message: str, + ) -> None: super().__init__(message) @@ -32,24 +35,19 @@ def __init__(self, message: str, *, response: httpx.Response) -> None: self.status_code = response.status_code -class APIRequestFailedError(APIStatusError): - ... +class APIRequestFailedError(APIStatusError): ... -class APIAuthenticationError(APIStatusError): - ... +class APIAuthenticationError(APIStatusError): ... -class APIReachLimitError(APIStatusError): - ... +class APIReachLimitError(APIStatusError): ... -class APIInternalError(APIStatusError): - ... +class APIInternalError(APIStatusError): ... -class APIServerFlowExceedError(APIStatusError): - ... +class APIServerFlowExceedError(APIStatusError): ... class APIResponseError(ZhipuAIError): @@ -68,16 +66,11 @@ class APIResponseValidationError(APIResponseError): status_code: int response: httpx.Response - def __init__( - self, - response: httpx.Response, - json_data: object | None, *, - message: str | None = None - ) -> None: + def __init__(self, response: httpx.Response, json_data: object | None, *, message: str | None = None) -> None: super().__init__( message=message or "Data returned by API invalid for expected schema.", request=response.request, - json_data=json_data + json_data=json_data, ) self.response = response self.status_code = response.status_code diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_files.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_files.py index 3ebf0e7555708c..f9d2e14d9ecb93 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_files.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_files.py @@ -22,9 +22,7 @@ def is_base64_file_input(obj: object) -> TypeGuard[Base64FileInput]: def is_file_content(obj: object) -> TypeGuard[FileContent]: - return ( - isinstance(obj, bytes | tuple | io.IOBase | os.PathLike) - ) + return isinstance(obj, bytes | tuple | io.IOBase | os.PathLike) def assert_is_file_content(obj: object, *, key: str | None = None) -> None: @@ -36,13 +34,11 @@ def assert_is_file_content(obj: object, *, key: str | None = None) -> None: @overload -def to_httpx_files(files: None) -> None: - ... +def to_httpx_files(files: None) -> None: ... @overload -def to_httpx_files(files: RequestFiles) -> HttpxRequestFiles: - ... +def to_httpx_files(files: RequestFiles) -> HttpxRequestFiles: ... def to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles | None: diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_http_client.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_http_client.py index 280d521e8acf9a..d0f933d8141389 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_http_client.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_http_client.py @@ -83,25 +83,23 @@ class PageInfo: @overload def __init__( - self, - *, - url: URL, - ) -> None: - ... + self, + *, + url: URL, + ) -> None: ... @overload def __init__( - self, - *, - params: Query, - ) -> None: - ... + self, + *, + params: Query, + ) -> None: ... def __init__( - self, - *, - url: URL | NotGiven = NOT_GIVEN, - params: Query | NotGiven = NOT_GIVEN, + self, + *, + url: URL | NotGiven = NOT_GIVEN, + params: Query | NotGiven = NOT_GIVEN, ) -> None: self.url = url self.params = params @@ -128,8 +126,7 @@ def has_next_page(self) -> bool: return False return self.next_page_info() is not None - def next_page_info(self) -> Optional[PageInfo]: - ... + def next_page_info(self) -> Optional[PageInfo]: ... def _get_page_items(self) -> Iterable[_T]: # type: ignore[empty-body] ... @@ -160,10 +157,10 @@ class BaseSyncPage(BasePage[_T], Generic[_T]): _client: HttpClient = pydantic.PrivateAttr() def _set_private_attributes( - self, - client: HttpClient, - model: type[_T], - options: FinalRequestOptions, + self, + client: HttpClient, + model: type[_T], + options: FinalRequestOptions, ) -> None: self._model = model self._client = client @@ -214,16 +211,16 @@ class HttpClient: _strict_response_validation: bool def __init__( - self, - *, - version: str, - base_url: URL, - _strict_response_validation: bool, - max_retries: int = ZHIPUAI_DEFAULT_MAX_RETRIES, - timeout: Union[float, Timeout, None], - limits: httpx.Limits | None = None, - custom_httpx_client: httpx.Client | None = None, - custom_headers: Mapping[str, str] | None = None, + self, + *, + version: str, + base_url: URL, + _strict_response_validation: bool, + max_retries: int = ZHIPUAI_DEFAULT_MAX_RETRIES, + timeout: Union[float, Timeout, None], + limits: httpx.Limits | None = None, + custom_httpx_client: httpx.Client | None = None, + custom_headers: Mapping[str, str] | None = None, ) -> None: if limits is not None: warnings.warn( @@ -259,7 +256,6 @@ def __init__( self._strict_response_validation = _strict_response_validation def _prepare_url(self, url: str) -> URL: - sub_url = URL(url) if sub_url.is_relative_url: request_raw_url = self._base_url.raw_path + sub_url.raw_path.lstrip(b"/") @@ -269,16 +265,15 @@ def _prepare_url(self, url: str) -> URL: @property def _default_headers(self): - return \ - { - "Accept": "application/json", - "Content-Type": "application/json; charset=UTF-8", - "ZhipuAI-SDK-Ver": self._version, - "source_type": "zhipu-sdk-python", - "x-request-sdk": "zhipu-sdk-python", - **self.auth_headers, - **self._custom_headers, - } + return { + "Accept": "application/json", + "Content-Type": "application/json; charset=UTF-8", + "ZhipuAI-SDK-Ver": self._version, + "source_type": "zhipu-sdk-python", + "x-request-sdk": "zhipu-sdk-python", + **self.auth_headers, + **self._custom_headers, + } @property def custom_auth(self) -> httpx.Auth | None: @@ -297,17 +292,17 @@ def _prepare_headers(self, options: FinalRequestOptions) -> httpx.Headers: return httpx_headers def _remaining_retries( - self, - remaining_retries: Optional[int], - options: FinalRequestOptions, + self, + remaining_retries: Optional[int], + options: FinalRequestOptions, ) -> int: return remaining_retries if remaining_retries is not None else options.get_max_retries(self.max_retries) def _calculate_retry_timeout( - self, - remaining_retries: int, - options: FinalRequestOptions, - response_headers: Optional[httpx.Headers] = None, + self, + remaining_retries: int, + options: FinalRequestOptions, + response_headers: Optional[httpx.Headers] = None, ) -> float: max_retries = options.get_max_retries(self.max_retries) @@ -326,10 +321,7 @@ def _calculate_retry_timeout( timeout = sleep_seconds * jitter return max(timeout, 0) - def _build_request( - self, - options: FinalRequestOptions - ) -> httpx.Request: + def _build_request(self, options: FinalRequestOptions) -> httpx.Request: kwargs: dict[str, Any] = {} headers = self._prepare_headers(options) url = self._prepare_url(options.url) @@ -393,7 +385,6 @@ def _primitive_value_to_str(val) -> str: return [(key, str_data)] def _make_multipartform(self, data: Mapping[object, object]) -> dict[str, object]: - items = flatten(list(starmap(self._object_to_formfata, data.items()))) serialized: dict[str, object] = {} @@ -404,13 +395,12 @@ def _make_multipartform(self, data: Mapping[object, object]) -> dict[str, object return serialized def _process_response_data( - self, - *, - data: object, - cast_type: type[ResponseT], - response: httpx.Response, + self, + *, + data: object, + cast_type: type[ResponseT], + response: httpx.Response, ) -> ResponseT: - if data is None: return cast(ResponseT, None) @@ -479,13 +469,13 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.close() def request( - self, - cast_type: type[ResponseT], - options: FinalRequestOptions, - remaining_retries: Optional[int] = None, - *, - stream: bool = False, - stream_cls: type[StreamResponse] | None = None, + self, + cast_type: type[ResponseT], + options: FinalRequestOptions, + remaining_retries: Optional[int] = None, + *, + stream: bool = False, + stream_cls: type[StreamResponse] | None = None, ) -> ResponseT | StreamResponse: return self._request( cast_type=cast_type, @@ -496,15 +486,14 @@ def request( ) def _request( - self, - *, - cast_type: type[ResponseT], - options: FinalRequestOptions, - remaining_retries: int | None, - stream: bool, - stream_cls: type[StreamResponse] | None, + self, + *, + cast_type: type[ResponseT], + options: FinalRequestOptions, + remaining_retries: int | None, + stream: bool, + stream_cls: type[StreamResponse] | None, ) -> ResponseT | StreamResponse: - retries = self._remaining_retries(remaining_retries, options) request = self._build_request(options) @@ -592,14 +581,14 @@ def _request( ) def _retry_request( - self, - options: FinalRequestOptions, - cast_type: type[ResponseT], - remaining_retries: int, - response_headers: httpx.Headers | None, - *, - stream: bool, - stream_cls: type[StreamResponse] | None, + self, + options: FinalRequestOptions, + cast_type: type[ResponseT], + remaining_retries: int, + response_headers: httpx.Headers | None, + *, + stream: bool, + stream_cls: type[StreamResponse] | None, ) -> ResponseT | StreamResponse: remaining = remaining_retries - 1 if remaining == 1: @@ -623,13 +612,13 @@ def _retry_request( ) def _process_response( - self, - *, - cast_type: type[ResponseT], - options: FinalRequestOptions, - response: httpx.Response, - stream: bool, - stream_cls: type[StreamResponse] | None, + self, + *, + cast_type: type[ResponseT], + options: FinalRequestOptions, + response: httpx.Response, + stream: bool, + stream_cls: type[StreamResponse] | None, ) -> ResponseT: # _legacy_response with raw_response_header to paser method if response.request.headers.get(RAW_RESPONSE_HEADER) == "true": @@ -681,10 +670,10 @@ def _process_response( return api_response.parse() def _request_api_list( - self, - model: type[object], - page: type[SyncPageT], - options: FinalRequestOptions, + self, + model: type[object], + page: type[SyncPageT], + options: FinalRequestOptions, ) -> SyncPageT: def _parser(resp: SyncPageT) -> SyncPageT: resp._set_private_attributes( @@ -700,102 +689,96 @@ def _parser(resp: SyncPageT) -> SyncPageT: @overload def get( - self, - path: str, - *, - cast_type: type[ResponseT], - options: UserRequestInput = {}, - stream: Literal[False] = False, - ) -> ResponseT: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + options: UserRequestInput = {}, + stream: Literal[False] = False, + ) -> ResponseT: ... @overload def get( - self, - path: str, - *, - cast_type: type[ResponseT], - options: UserRequestInput = {}, - stream: Literal[True], - stream_cls: type[StreamResponse], - ) -> StreamResponse: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + options: UserRequestInput = {}, + stream: Literal[True], + stream_cls: type[StreamResponse], + ) -> StreamResponse: ... @overload def get( - self, - path: str, - *, - cast_type: type[ResponseT], - options: UserRequestInput = {}, - stream: bool, - stream_cls: type[StreamResponse] | None = None, - ) -> ResponseT | StreamResponse: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + options: UserRequestInput = {}, + stream: bool, + stream_cls: type[StreamResponse] | None = None, + ) -> ResponseT | StreamResponse: ... def get( - self, - path: str, - *, - cast_type: type[ResponseT], - options: UserRequestInput = {}, - stream: bool = False, - stream_cls: type[StreamResponse] | None = None, + self, + path: str, + *, + cast_type: type[ResponseT], + options: UserRequestInput = {}, + stream: bool = False, + stream_cls: type[StreamResponse] | None = None, ) -> ResponseT: opts = FinalRequestOptions.construct(method="get", url=path, **options) return cast(ResponseT, self.request(cast_type, opts, stream=stream, stream_cls=stream_cls)) @overload def post( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, - files: RequestFiles | None = None, - stream: Literal[False] = False, - ) -> ResponseT: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, + files: RequestFiles | None = None, + stream: Literal[False] = False, + ) -> ResponseT: ... @overload def post( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, - files: RequestFiles | None = None, - stream: Literal[True], - stream_cls: type[StreamResponse], - ) -> StreamResponse: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, + files: RequestFiles | None = None, + stream: Literal[True], + stream_cls: type[StreamResponse], + ) -> StreamResponse: ... @overload def post( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, - files: RequestFiles | None = None, - stream: bool, - stream_cls: type[StreamResponse] | None = None, - ) -> ResponseT | StreamResponse: - ... + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, + files: RequestFiles | None = None, + stream: bool, + stream_cls: type[StreamResponse] | None = None, + ) -> ResponseT | StreamResponse: ... def post( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, - files: RequestFiles | None = None, - stream: bool = False, - stream_cls: type[StreamResponse[Any]] | None = None, + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, + files: RequestFiles | None = None, + stream: bool = False, + stream_cls: type[StreamResponse[Any]] | None = None, ) -> ResponseT | StreamResponse: opts = FinalRequestOptions.construct( method="post", url=path, json_data=body, files=to_httpx_files(files), **options @@ -804,58 +787,62 @@ def post( return cast(ResponseT, self.request(cast_type, opts, stream=stream, stream_cls=stream_cls)) def patch( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, ) -> ResponseT: opts = FinalRequestOptions.construct(method="patch", url=path, json_data=body, **options) return self.request( - cast_type=cast_type, options=opts, + cast_type=cast_type, + options=opts, ) def put( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, - files: RequestFiles | None = None, + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, + files: RequestFiles | None = None, ) -> ResponseT | StreamResponse: - opts = FinalRequestOptions.construct(method="put", url=path, json_data=body, files=to_httpx_files(files), - **options) + opts = FinalRequestOptions.construct( + method="put", url=path, json_data=body, files=to_httpx_files(files), **options + ) return self.request( - cast_type=cast_type, options=opts, + cast_type=cast_type, + options=opts, ) def delete( - self, - path: str, - *, - cast_type: type[ResponseT], - body: Body | None = None, - options: UserRequestInput = {}, + self, + path: str, + *, + cast_type: type[ResponseT], + body: Body | None = None, + options: UserRequestInput = {}, ) -> ResponseT | StreamResponse: opts = FinalRequestOptions.construct(method="delete", url=path, json_data=body, **options) return self.request( - cast_type=cast_type, options=opts, + cast_type=cast_type, + options=opts, ) def get_api_list( - self, - path: str, - *, - model: type[object], - page: type[SyncPageT], - body: Body | None = None, - options: UserRequestInput = {}, - method: str = "get", + self, + path: str, + *, + model: type[object], + page: type[SyncPageT], + body: Body | None = None, + options: UserRequestInput = {}, + method: str = "get", ) -> SyncPageT: opts = FinalRequestOptions.construct(method=method, url=path, json_data=body, **options) return self._request_api_list(model, page, opts) @@ -879,13 +866,13 @@ def _make_status_error(self, response) -> APIStatusError: def make_request_options( - *, - query: Query | None = None, - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - post_parser: PostParser | NotGiven = NOT_GIVEN, + *, + query: Query | None = None, + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + post_parser: PostParser | NotGiven = NOT_GIVEN, ) -> UserRequestInput: """Create a dict of type RequestOptions without keys of NotGiven values.""" options: UserRequestInput = {} @@ -912,8 +899,8 @@ def make_request_options( def _merge_mappings( - obj1: Mapping[_T_co, Union[_T, Omit]], - obj2: Mapping[_T_co, Union[_T, Omit]], + obj1: Mapping[_T_co, Union[_T, Omit]], + obj2: Mapping[_T_co, Union[_T, Omit]], ) -> dict[_T_co, _T]: """Merge two mappings of the same type, removing any values that are instances of `Omit`. diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_binary_response.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_binary_response.py index 034f727c2fb8bf..51623bd860951f 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_binary_response.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_binary_response.py @@ -8,7 +8,6 @@ class HttpxResponseContent: - @property def content(self) -> bytes: raise NotImplementedError("This method is not implemented for this class.") @@ -44,16 +43,16 @@ def iter_raw(self, chunk_size: int | None = None) -> Iterator[bytes]: raise NotImplementedError("This method is not implemented for this class.") def write_to_file( - self, - file: str | os.PathLike[str], + self, + file: str | os.PathLike[str], ) -> None: raise NotImplementedError("This method is not implemented for this class.") def stream_to_file( - self, - file: str | os.PathLike[str], - *, - chunk_size: int | None = None, + self, + file: str | os.PathLike[str], + *, + chunk_size: int | None = None, ) -> None: raise NotImplementedError("This method is not implemented for this class.") @@ -76,10 +75,10 @@ async def aiter_raw(self, chunk_size: int | None = None) -> AsyncIterator[bytes] raise NotImplementedError("This method is not implemented for this class.") async def astream_to_file( - self, - file: str | os.PathLike[str], - *, - chunk_size: int | None = None, + self, + file: str | os.PathLike[str], + *, + chunk_size: int | None = None, ) -> None: raise NotImplementedError("This method is not implemented for this class.") @@ -115,11 +114,9 @@ def json(self, **kwargs: Any) -> Any: raise NotImplementedError("Not implemented for binary response content") def iter_text(self, chunk_size: int | None = None) -> Iterator[str]: - raise NotImplementedError("Not implemented for binary response content") def iter_lines(self) -> Iterator[str]: - raise NotImplementedError("Not implemented for binary response content") async def aiter_text(self, chunk_size: int | None = None) -> AsyncIterator[str]: @@ -135,8 +132,8 @@ def iter_raw(self, chunk_size: int | None = None) -> Iterator[bytes]: return self.response.iter_raw(chunk_size) def write_to_file( - self, - file: str | os.PathLike[str], + self, + file: str | os.PathLike[str], ) -> None: """Write the output to the given file. @@ -151,10 +148,10 @@ def write_to_file( f.write(data) def stream_to_file( - self, - file: str | os.PathLike[str], - *, - chunk_size: int | None = None, + self, + file: str | os.PathLike[str], + *, + chunk_size: int | None = None, ) -> None: with open(file, mode="wb") as f: for data in self.response.iter_bytes(chunk_size): @@ -173,10 +170,10 @@ async def aiter_raw(self, chunk_size: int | None = None) -> AsyncIterator[bytes] return self.response.aiter_raw(chunk_size) async def astream_to_file( - self, - file: str | os.PathLike[str], - *, - chunk_size: int | None = None, + self, + file: str | os.PathLike[str], + *, + chunk_size: int | None = None, ) -> None: path = anyio.Path(file) async with await path.open(mode="wb") as f: diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_response.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_response.py index b986da88267215..47183b9eee9c0d 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_response.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_legacy_response.py @@ -53,14 +53,14 @@ class LegacyAPIResponse(Generic[R]): http_response: httpx.Response def __init__( - self, - *, - raw: httpx.Response, - cast_type: type[R], - client: HttpClient, - stream: bool, - stream_cls: type[StreamResponse[Any]] | None, - options: FinalRequestOptions, + self, + *, + raw: httpx.Response, + cast_type: type[R], + client: HttpClient, + stream: bool, + stream_cls: type[StreamResponse[Any]] | None, + options: FinalRequestOptions, ) -> None: self._cast_type = cast_type self._client = client @@ -75,12 +75,10 @@ def request_id(self) -> str | None: return self.http_response.headers.get("x-request-id") # type: ignore[no-any-return] @overload - def parse(self, *, to: type[_T]) -> _T: - ... + def parse(self, *, to: type[_T]) -> _T: ... @overload - def parse(self) -> R: - ... + def parse(self) -> R: ... def parse(self, *, to: type[_T] | None = None) -> R | _T: """Returns the rich python representation of this response's data. @@ -243,7 +241,6 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T: origin = get_origin(cast_type) or cast_type if inspect.isclass(origin) and issubclass(origin, HttpxResponseContent): - # in the response, e.g. mime file *_, filename = response.headers.get("content-disposition", "").split("filename=") # 判断文件类型是jsonl类型的使用HttpxTextBinaryResponseContent @@ -269,11 +266,11 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T: raise TypeError("Pydantic models must subclass our base model type, e.g. `from openai import BaseModel`") if ( - cast_type is not object - and origin is not list - and origin is not dict - and origin is not Union - and not issubclass(origin, BaseModel) + cast_type is not object + and origin is not list + and origin is not dict + and origin is not Union + and not issubclass(origin, BaseModel) ): raise RuntimeError( f"Unsupported type, expected {cast_type} to be a subclass of {BaseModel}, {dict}, {list}, {Union}, {NoneType}, {str} or {httpx.Response}." # noqa: E501 @@ -342,4 +339,3 @@ def wrapped(*args: P.args, **kwargs: P.kwargs) -> LegacyAPIResponse[R]: return cast(LegacyAPIResponse[R], func(*args, **kwargs)) return wrapped - diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_request_opt.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_request_opt.py index cb887332731521..c3b894b3a3d88f 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_request_opt.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_request_opt.py @@ -78,9 +78,9 @@ def _strip_raw_response_header(self) -> None: # type ignore required because we're adding explicit types to `**values` @classmethod def construct( # type: ignore - cls, - _fields_set: set[str] | None = None, - **values: Unpack[UserRequestInput], + cls, + _fields_set: set[str] | None = None, + **values: Unpack[UserRequestInput], ) -> FinalRequestOptions: kwargs: dict[str, Any] = { # we unconditionally call `strip_not_given` on any value diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_response.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_response.py index 0957c700366e34..3ef8c5d9c2c31c 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_response.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_response.py @@ -37,14 +37,14 @@ class BaseAPIResponse(Generic[R]): http_response: httpx.Response def __init__( - self, - *, - raw: httpx.Response, - cast_type: type[R], - client: HttpClient, - stream: bool, - stream_cls: type[StreamResponse[Any]] | None = None, - options: FinalRequestOptions, + self, + *, + raw: httpx.Response, + cast_type: type[R], + client: HttpClient, + stream: bool, + stream_cls: type[StreamResponse[Any]] | None = None, + options: FinalRequestOptions, ) -> None: self._cast_type = cast_type self._client = client @@ -144,11 +144,11 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T: raise TypeError("Pydantic models must subclass our base model type, e.g. `from openai import BaseModel`") if ( - cast_type is not object - and origin is not list - and origin is not dict - and origin is not Union - and not issubclass(origin, BaseModel) + cast_type is not object + and origin is not list + and origin is not dict + and origin is not Union + and not issubclass(origin, BaseModel) ): raise RuntimeError( f"Unsupported type, expected {cast_type} to be a subclass of {BaseModel}, {dict}, {list}, {Union}, {NoneType}, {str} or {httpx.Response}." # noqa: E501 @@ -233,24 +233,19 @@ def is_closed(self) -> bool: @override def __repr__(self) -> str: - return ( - f"<{self.__class__.__name__} [{self.status_code} {self.http_response.reason_phrase}] type={self._cast_type}>" # noqa: E501 - ) + return f"<{self.__class__.__name__} [{self.status_code} {self.http_response.reason_phrase}] type={self._cast_type}>" # noqa: E501 class APIResponse(BaseAPIResponse[R]): - @property def request_id(self) -> str | None: return self.http_response.headers.get("x-request-id") # type: ignore[no-any-return] @overload - def parse(self, *, to: type[_T]) -> _T: - ... + def parse(self, *, to: type[_T]) -> _T: ... @overload - def parse(self) -> R: - ... + def parse(self) -> R: ... def parse(self, *, to: type[_T] | None = None) -> R | _T: """Returns the rich python representation of this response's data. diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_sse_client.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_sse_client.py index 31d55d736b8552..37bf1742377fbd 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_sse_client.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/_sse_client.py @@ -23,11 +23,11 @@ class StreamResponse(Generic[ResponseT]): _cast_type: type[ResponseT] def __init__( - self, - *, - cast_type: type[ResponseT], - response: httpx.Response, - client: HttpClient, + self, + *, + cast_type: type[ResponseT], + response: httpx.Response, + client: HttpClient, ) -> None: self.response = response self._cast_type = cast_type @@ -41,7 +41,6 @@ def __iter__(self) -> Iterator[ResponseT]: yield from self._stream_chunks def __stream__(self) -> Iterator[ResponseT]: - sse_line_parser = SSELineParser() iterator = sse_line_parser.iter_lines(self.response.iter_lines()) @@ -98,11 +97,7 @@ def __stream__(self) -> Iterator[ResponseT]: class Event: def __init__( - self, - event: str | None = None, - data: str | None = None, - id: str | None = None, - retry: int | None = None + self, event: str | None = None, data: str | None = None, id: str | None = None, retry: int | None = None ): self._event = event self._data = data @@ -111,21 +106,28 @@ def __init__( def __repr__(self): data_len = len(self._data) if self._data else 0 - return f"Event(event={self._event}, data={self._data} ,data_length={data_len}, id={self._id}, retry={self._retry}" # noqa: E501 + return ( + f"Event(event={self._event}, data={self._data} ,data_length={data_len}, id={self._id}, retry={self._retry}" # noqa: E501 + ) @property - def event(self): return self._event + def event(self): + return self._event @property - def data(self): return self._data + def data(self): + return self._data - def json_data(self): return json.loads(self._data) + def json_data(self): + return json.loads(self._data) @property - def id(self): return self._id + def id(self): + return self._id @property - def retry(self): return self._retry + def retry(self): + return self._retry class SSELineParser: @@ -142,19 +144,11 @@ def __init__(self): def iter_lines(self, lines: Iterator[str]) -> Iterator[Event]: for line in lines: - line = line.rstrip('\n') + line = line.rstrip("\n") if not line: - if self._event is None and \ - not self._data and \ - self._id is None and \ - self._retry is None: + if self._event is None and not self._data and self._id is None and self._retry is None: continue - sse_event = Event( - event=self._event, - data='\n'.join(self._data), - id=self._id, - retry=self._retry - ) + sse_event = Event(event=self._event, data="\n".join(self._data), id=self._id, retry=self._retry) self._event = None self._data = [] self._id = None @@ -169,7 +163,7 @@ def decode_line(self, line: str): field, _p, value = line.partition(":") - if value.startswith(' '): + if value.startswith(" "): value = value[1:] if field == "data": self._data.append(value) @@ -190,9 +184,9 @@ def is_stream_class_type(typ: type) -> TypeGuard[type[StreamResponse[object]]]: def extract_stream_chunk_type( - stream_cls: type, - *, - failure_message: str | None = None, + stream_cls: type, + *, + failure_message: str | None = None, ) -> type: """Given a type like `StreamResponse[T]`, returns the generic type variable `T`. @@ -208,6 +202,6 @@ class MyStream(StreamResponse[bytes]): return extract_type_var_from_base( stream_cls, index=0, - generic_bases=cast("tuple[type, ...]", (StreamResponse, )), + generic_bases=cast("tuple[type, ...]", (StreamResponse,)), failure_message=failure_message, ) diff --git a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/logs.py b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/logs.py index bce343c02cb61f..e5fce94c00e9e0 100644 --- a/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/logs.py +++ b/api/core/model_runtime/model_providers/zhipuai/zhipuai_sdk/core/logs.py @@ -24,25 +24,15 @@ def get_log_file(log_path: str, sub_dir: str): return os.path.join(log_dir, "zhipuai.log") -def get_config_dict( - log_level: str, log_file_path: str, log_backup_count: int, log_max_bytes: int -) -> dict: +def get_config_dict(log_level: str, log_file_path: str, log_backup_count: int, log_max_bytes: int) -> dict: # for windows, the path should be a raw string. - log_file_path = ( - log_file_path.encode("unicode-escape").decode() - if os.name == "nt" - else log_file_path - ) + log_file_path = log_file_path.encode("unicode-escape").decode() if os.name == "nt" else log_file_path log_level = log_level.upper() config_dict = { "version": 1, "disable_existing_loggers": False, "formatters": { - "formatter": { - "format": ( - "%(asctime)s %(name)-12s %(process)d %(levelname)-8s %(message)s" - ) - }, + "formatter": {"format": ("%(asctime)s %(name)-12s %(process)d %(levelname)-8s %(message)s")}, }, "filters": { "logger_name_filter": {