From e21041ec5587a6c09c8f98f58dc56d7ad9f4ac96 Mon Sep 17 00:00:00 2001 From: njbrake <33383515+njbrake@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:05:52 +0000 Subject: [PATCH] chore: regenerate SDK client core from gateway OpenAPI spec --- src/otari/_client/__init__.py | 6 - src/otari/_client/api/audio_api.py | 18 +-- src/otari/_client/models/__init__.py | 3 - .../models/cc_chat_completion_message.py | 6 +- .../cc_chat_completion_token_logprob.py | 6 +- .../models/cc_completion_tokens_details.py | 127 ------------------ .../_client/models/cc_completion_usage.py | 6 +- src/otari/_client/models/cc_reasoning.py | 88 ------------ src/otari/_client/models/cc_top_logprob.py | 110 --------------- 9 files changed, 18 insertions(+), 352 deletions(-) delete mode 100644 src/otari/_client/models/cc_completion_tokens_details.py delete mode 100644 src/otari/_client/models/cc_reasoning.py delete mode 100644 src/otari/_client/models/cc_top_logprob.py diff --git a/src/otari/_client/__init__.py b/src/otari/_client/__init__.py index c5d554b..386422e 100644 --- a/src/otari/_client/__init__.py +++ b/src/otari/_client/__init__.py @@ -54,7 +54,6 @@ "CCChatCompletionTokenLogprob", "CCChoice", "CCChoiceLogprobs", - "CCCompletionTokensDetails", "CCCompletionUsage", "CCCustom", "CCFunction", @@ -72,8 +71,6 @@ "CCKReasoning", "CCKTopLogprob", "CCPromptTokensDetails", - "CCReasoning", - "CCTopLogprob", "Caller", "ChatCompletion", "ChatCompletionChunk", @@ -247,7 +244,6 @@ from otari._client.models.cc_chat_completion_token_logprob import CCChatCompletionTokenLogprob as CCChatCompletionTokenLogprob from otari._client.models.cc_choice import CCChoice as CCChoice from otari._client.models.cc_choice_logprobs import CCChoiceLogprobs as CCChoiceLogprobs -from otari._client.models.cc_completion_tokens_details import CCCompletionTokensDetails as CCCompletionTokensDetails from otari._client.models.cc_completion_usage import CCCompletionUsage as CCCompletionUsage from otari._client.models.cc_custom import CCCustom as CCCustom from otari._client.models.cc_function import CCFunction as CCFunction @@ -265,8 +261,6 @@ from otari._client.models.cck_reasoning import CCKReasoning as CCKReasoning from otari._client.models.cck_top_logprob import CCKTopLogprob as CCKTopLogprob from otari._client.models.cc_prompt_tokens_details import CCPromptTokensDetails as CCPromptTokensDetails -from otari._client.models.cc_reasoning import CCReasoning as CCReasoning -from otari._client.models.cc_top_logprob import CCTopLogprob as CCTopLogprob from otari._client.models.caller import Caller as Caller from otari._client.models.chat_completion import ChatCompletion as ChatCompletion from otari._client.models.chat_completion_chunk import ChatCompletionChunk as ChatCompletionChunk diff --git a/src/otari/_client/api/audio_api.py b/src/otari/_client/api/audio_api.py index 2418145..50c2d45 100644 --- a/src/otari/_client/api/audio_api.py +++ b/src/otari/_client/api/audio_api.py @@ -15,8 +15,8 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import StrictFloat, StrictInt, StrictStr -from typing import Any, Optional, Union +from pydantic import StrictBytes, StrictFloat, StrictInt, StrictStr +from typing import Any, Optional, Tuple, Union from otari._client.models.audio_speech_request import AudioSpeechRequest from otari._client.api_client import ApiClient, RequestSerialized @@ -322,7 +322,7 @@ def _create_speech_v1_audio_speech_post_serialize( @validate_call def create_transcription_v1_audio_transcriptions_post( self, - file: StrictStr, + file: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], model: StrictStr, language: Optional[StrictStr] = None, prompt: Optional[StrictStr] = None, @@ -347,7 +347,7 @@ def create_transcription_v1_audio_transcriptions_post( OpenAI-compatible audio transcription endpoint. Authentication modes: - Master key + user field: Use specified user (must exist) - API key + user field: Use specified user (must exist) - API key without user field: Use virtual user created with API key :param file: (required) - :type file: str + :type file: bytes :param model: (required) :type model: str :param language: @@ -414,7 +414,7 @@ def create_transcription_v1_audio_transcriptions_post( @validate_call def create_transcription_v1_audio_transcriptions_post_with_http_info( self, - file: StrictStr, + file: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], model: StrictStr, language: Optional[StrictStr] = None, prompt: Optional[StrictStr] = None, @@ -439,7 +439,7 @@ def create_transcription_v1_audio_transcriptions_post_with_http_info( OpenAI-compatible audio transcription endpoint. Authentication modes: - Master key + user field: Use specified user (must exist) - API key + user field: Use specified user (must exist) - API key without user field: Use virtual user created with API key :param file: (required) - :type file: str + :type file: bytes :param model: (required) :type model: str :param language: @@ -506,7 +506,7 @@ def create_transcription_v1_audio_transcriptions_post_with_http_info( @validate_call def create_transcription_v1_audio_transcriptions_post_without_preload_content( self, - file: StrictStr, + file: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], model: StrictStr, language: Optional[StrictStr] = None, prompt: Optional[StrictStr] = None, @@ -531,7 +531,7 @@ def create_transcription_v1_audio_transcriptions_post_without_preload_content( OpenAI-compatible audio transcription endpoint. Authentication modes: - Master key + user field: Use specified user (must exist) - API key + user field: Use specified user (must exist) - API key without user field: Use virtual user created with API key :param file: (required) - :type file: str + :type file: bytes :param model: (required) :type model: str :param language: @@ -625,7 +625,7 @@ def _create_transcription_v1_audio_transcriptions_post_serialize( # process the header parameters # process the form parameters if file is not None: - _form_params.append(('file', file)) + _files['file'] = file if language is not None: _form_params.append(('language', language)) if model is not None: diff --git a/src/otari/_client/models/__init__.py b/src/otari/_client/models/__init__.py index d886a76..2ebd7ff 100644 --- a/src/otari/_client/models/__init__.py +++ b/src/otari/_client/models/__init__.py @@ -24,7 +24,6 @@ from otari._client.models.cc_chat_completion_token_logprob import CCChatCompletionTokenLogprob from otari._client.models.cc_choice import CCChoice from otari._client.models.cc_choice_logprobs import CCChoiceLogprobs -from otari._client.models.cc_completion_tokens_details import CCCompletionTokensDetails from otari._client.models.cc_completion_usage import CCCompletionUsage from otari._client.models.cc_custom import CCCustom from otari._client.models.cc_function import CCFunction @@ -42,8 +41,6 @@ from otari._client.models.cck_reasoning import CCKReasoning from otari._client.models.cck_top_logprob import CCKTopLogprob from otari._client.models.cc_prompt_tokens_details import CCPromptTokensDetails -from otari._client.models.cc_reasoning import CCReasoning -from otari._client.models.cc_top_logprob import CCTopLogprob from otari._client.models.caller import Caller from otari._client.models.chat_completion import ChatCompletion from otari._client.models.chat_completion_chunk import ChatCompletionChunk diff --git a/src/otari/_client/models/cc_chat_completion_message.py b/src/otari/_client/models/cc_chat_completion_message.py index b6d515b..b30cc84 100644 --- a/src/otari/_client/models/cc_chat_completion_message.py +++ b/src/otari/_client/models/cc_chat_completion_message.py @@ -22,7 +22,7 @@ from otari._client.models.cc_chat_completion_audio import CCChatCompletionAudio from otari._client.models.cc_chat_completion_message_tool_calls_inner import CCChatCompletionMessageToolCallsInner from otari._client.models.cc_function_call import CCFunctionCall -from otari._client.models.cc_reasoning import CCReasoning +from otari._client.models.cck_reasoning import CCKReasoning from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -38,7 +38,7 @@ class CCChatCompletionMessage(BaseModel): audio: Optional[CCChatCompletionAudio] = None function_call: Optional[CCFunctionCall] = None tool_calls: Optional[List[CCChatCompletionMessageToolCallsInner]] = None - reasoning: Optional[CCReasoning] = None + reasoning: Optional[CCKReasoning] = None additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["content", "refusal", "role", "annotations", "audio", "function_call", "tool_calls", "reasoning"] @@ -165,7 +165,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "audio": CCChatCompletionAudio.from_dict(obj["audio"]) if obj.get("audio") is not None else None, "function_call": CCFunctionCall.from_dict(obj["function_call"]) if obj.get("function_call") is not None else None, "tool_calls": [CCChatCompletionMessageToolCallsInner.from_dict(_item) for _item in obj["tool_calls"]] if obj.get("tool_calls") is not None else None, - "reasoning": CCReasoning.from_dict(obj["reasoning"]) if obj.get("reasoning") is not None else None + "reasoning": CCKReasoning.from_dict(obj["reasoning"]) if obj.get("reasoning") is not None else None }) # store additional fields in additional_properties for _key in obj.keys(): diff --git a/src/otari/_client/models/cc_chat_completion_token_logprob.py b/src/otari/_client/models/cc_chat_completion_token_logprob.py index 5443004..04d015c 100644 --- a/src/otari/_client/models/cc_chat_completion_token_logprob.py +++ b/src/otari/_client/models/cc_chat_completion_token_logprob.py @@ -19,7 +19,7 @@ from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union -from otari._client.models.cc_top_logprob import CCTopLogprob +from otari._client.models.cck_top_logprob import CCKTopLogprob from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -31,7 +31,7 @@ class CCChatCompletionTokenLogprob(BaseModel): token: StrictStr bytes: Optional[List[StrictInt]] = None logprob: Union[StrictFloat, StrictInt] - top_logprobs: List[CCTopLogprob] + top_logprobs: List[CCKTopLogprob] additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["token", "bytes", "logprob", "top_logprobs"] @@ -108,7 +108,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "token": obj.get("token"), "bytes": obj.get("bytes"), "logprob": obj.get("logprob"), - "top_logprobs": [CCTopLogprob.from_dict(_item) for _item in obj["top_logprobs"]] if obj.get("top_logprobs") is not None else None + "top_logprobs": [CCKTopLogprob.from_dict(_item) for _item in obj["top_logprobs"]] if obj.get("top_logprobs") is not None else None }) # store additional fields in additional_properties for _key in obj.keys(): diff --git a/src/otari/_client/models/cc_completion_tokens_details.py b/src/otari/_client/models/cc_completion_tokens_details.py deleted file mode 100644 index 47caf33..0000000 --- a/src/otari/_client/models/cc_completion_tokens_details.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 - -""" - otari-gateway - - A clean FastAPI gateway for otari with API key management - - The version of the OpenAPI document: 0.0.0-dev - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self -from pydantic_core import to_jsonable_python - -class CCCompletionTokensDetails(BaseModel): - """ - Breakdown of tokens used in a completion. - """ # noqa: E501 - accepted_prediction_tokens: Optional[StrictInt] = None - audio_tokens: Optional[StrictInt] = None - reasoning_tokens: Optional[StrictInt] = None - rejected_prediction_tokens: Optional[StrictInt] = None - additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["accepted_prediction_tokens", "audio_tokens", "reasoning_tokens", "rejected_prediction_tokens"] - - model_config = ConfigDict( - validate_by_name=True, - validate_by_alias=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return json.dumps(to_jsonable_python(self.to_dict())) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CCCompletionTokensDetails from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * Fields in `self.additional_properties` are added to the output dict. - """ - excluded_fields: Set[str] = set([ - "additional_properties", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # puts key-value pairs in additional_properties in the top level - if self.additional_properties is not None: - for _key, _value in self.additional_properties.items(): - _dict[_key] = _value - - # set to None if accepted_prediction_tokens (nullable) is None - # and model_fields_set contains the field - if self.accepted_prediction_tokens is None and "accepted_prediction_tokens" in self.model_fields_set: - _dict['accepted_prediction_tokens'] = None - - # set to None if audio_tokens (nullable) is None - # and model_fields_set contains the field - if self.audio_tokens is None and "audio_tokens" in self.model_fields_set: - _dict['audio_tokens'] = None - - # set to None if reasoning_tokens (nullable) is None - # and model_fields_set contains the field - if self.reasoning_tokens is None and "reasoning_tokens" in self.model_fields_set: - _dict['reasoning_tokens'] = None - - # set to None if rejected_prediction_tokens (nullable) is None - # and model_fields_set contains the field - if self.rejected_prediction_tokens is None and "rejected_prediction_tokens" in self.model_fields_set: - _dict['rejected_prediction_tokens'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CCCompletionTokensDetails from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "accepted_prediction_tokens": obj.get("accepted_prediction_tokens"), - "audio_tokens": obj.get("audio_tokens"), - "reasoning_tokens": obj.get("reasoning_tokens"), - "rejected_prediction_tokens": obj.get("rejected_prediction_tokens") - }) - # store additional fields in additional_properties - for _key in obj.keys(): - if _key not in cls.__properties: - _obj.additional_properties[_key] = obj.get(_key) - - return _obj - - diff --git a/src/otari/_client/models/cc_completion_usage.py b/src/otari/_client/models/cc_completion_usage.py index 105ca2f..a8e5151 100644 --- a/src/otari/_client/models/cc_completion_usage.py +++ b/src/otari/_client/models/cc_completion_usage.py @@ -19,8 +19,8 @@ from pydantic import BaseModel, ConfigDict, StrictInt from typing import Any, ClassVar, Dict, List, Optional -from otari._client.models.cc_completion_tokens_details import CCCompletionTokensDetails from otari._client.models.cc_prompt_tokens_details import CCPromptTokensDetails +from otari._client.models.cck_completion_tokens_details import CCKCompletionTokensDetails from typing import Optional, Set from typing_extensions import Self from pydantic_core import to_jsonable_python @@ -32,7 +32,7 @@ class CCCompletionUsage(BaseModel): completion_tokens: StrictInt prompt_tokens: StrictInt total_tokens: StrictInt - completion_tokens_details: Optional[CCCompletionTokensDetails] = None + completion_tokens_details: Optional[CCKCompletionTokensDetails] = None prompt_tokens_details: Optional[CCPromptTokensDetails] = None additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["completion_tokens", "prompt_tokens", "total_tokens", "completion_tokens_details", "prompt_tokens_details"] @@ -114,7 +114,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "completion_tokens": obj.get("completion_tokens"), "prompt_tokens": obj.get("prompt_tokens"), "total_tokens": obj.get("total_tokens"), - "completion_tokens_details": CCCompletionTokensDetails.from_dict(obj["completion_tokens_details"]) if obj.get("completion_tokens_details") is not None else None, + "completion_tokens_details": CCKCompletionTokensDetails.from_dict(obj["completion_tokens_details"]) if obj.get("completion_tokens_details") is not None else None, "prompt_tokens_details": CCPromptTokensDetails.from_dict(obj["prompt_tokens_details"]) if obj.get("prompt_tokens_details") is not None else None }) # store additional fields in additional_properties diff --git a/src/otari/_client/models/cc_reasoning.py b/src/otari/_client/models/cc_reasoning.py deleted file mode 100644 index a985df3..0000000 --- a/src/otari/_client/models/cc_reasoning.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - otari-gateway - - A clean FastAPI gateway for otari with API key management - - The version of the OpenAPI document: 0.0.0-dev - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self -from pydantic_core import to_jsonable_python - -class CCReasoning(BaseModel): - """ - Reasoning content emitted by a model. Serializes as a plain JSON string so that responses are compatible with OpenAI-style clients that expect ``delta.reasoning`` / ``message.reasoning`` to be a string. The Python attribute ``content`` remains available for typed access (e.g. ``message.reasoning.content``). - """ # noqa: E501 - content: StrictStr - __properties: ClassVar[List[str]] = ["content"] - - model_config = ConfigDict( - validate_by_name=True, - validate_by_alias=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return json.dumps(to_jsonable_python(self.to_dict())) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CCReasoning from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CCReasoning from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content") - }) - return _obj - - diff --git a/src/otari/_client/models/cc_top_logprob.py b/src/otari/_client/models/cc_top_logprob.py deleted file mode 100644 index f078648..0000000 --- a/src/otari/_client/models/cc_top_logprob.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - otari-gateway - - A clean FastAPI gateway for otari with API key management - - The version of the OpenAPI document: 0.0.0-dev - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self -from pydantic_core import to_jsonable_python - -class CCTopLogprob(BaseModel): - """ - CCTopLogprob - """ # noqa: E501 - token: StrictStr - bytes: Optional[List[StrictInt]] = None - logprob: Union[StrictFloat, StrictInt] - additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["token", "bytes", "logprob"] - - model_config = ConfigDict( - validate_by_name=True, - validate_by_alias=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return json.dumps(to_jsonable_python(self.to_dict())) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CCTopLogprob from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * Fields in `self.additional_properties` are added to the output dict. - """ - excluded_fields: Set[str] = set([ - "additional_properties", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # puts key-value pairs in additional_properties in the top level - if self.additional_properties is not None: - for _key, _value in self.additional_properties.items(): - _dict[_key] = _value - - # set to None if bytes (nullable) is None - # and model_fields_set contains the field - if self.bytes is None and "bytes" in self.model_fields_set: - _dict['bytes'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CCTopLogprob from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "token": obj.get("token"), - "bytes": obj.get("bytes"), - "logprob": obj.get("logprob") - }) - # store additional fields in additional_properties - for _key in obj.keys(): - if _key not in cls.__properties: - _obj.additional_properties[_key] = obj.get(_key) - - return _obj - -