Commit d0a20e9e
Changed files (24)
src
openai
resources
beta
assistants
threads
chat
fine_tuning
src/openai/resources/audio/speech.py
@@ -7,13 +7,7 @@ from typing_extensions import Literal
import httpx
-from ..._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ..._utils import maybe_transform
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/audio/transcriptions.py
@@ -7,14 +7,7 @@ from typing_extensions import Literal
import httpx
-from ..._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
- FileTypes,
-)
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
from ..._utils import extract_files, maybe_transform, deepcopy_minimal
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/audio/translations.py
@@ -7,14 +7,7 @@ from typing_extensions import Literal
import httpx
-from ..._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
- FileTypes,
-)
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
from ..._utils import extract_files, maybe_transform, deepcopy_minimal
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/assistants/assistants.py
@@ -8,13 +8,7 @@ from typing_extensions import Literal
import httpx
from .files import Files, AsyncFiles, FilesWithRawResponse, AsyncFilesWithRawResponse
-from ...._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ...._utils import maybe_transform
from ...._compat import cached_property
from ...._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/assistants/files.py
@@ -6,13 +6,7 @@ from typing_extensions import Literal
import httpx
-from ...._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ...._utils import maybe_transform
from ...._compat import cached_property
from ...._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/threads/messages/files.py
@@ -6,13 +6,7 @@ from typing_extensions import Literal
import httpx
-from ....._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ....._utils import maybe_transform
from ....._compat import cached_property
from ....._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/threads/messages/messages.py
@@ -8,13 +8,7 @@ from typing_extensions import Literal
import httpx
from .files import Files, AsyncFiles, FilesWithRawResponse, AsyncFilesWithRawResponse
-from ....._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ....._utils import maybe_transform
from ....._compat import cached_property
from ....._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/threads/runs/runs.py
@@ -8,13 +8,7 @@ from typing_extensions import Literal
import httpx
from .steps import Steps, AsyncSteps, StepsWithRawResponse, AsyncStepsWithRawResponse
-from ....._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ....._utils import maybe_transform
from ....._compat import cached_property
from ....._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/threads/runs/steps.py
@@ -6,13 +6,7 @@ from typing_extensions import Literal
import httpx
-from ....._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ....._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ....._utils import maybe_transform
from ....._compat import cached_property
from ....._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/beta/threads/threads.py
@@ -8,13 +8,7 @@ import httpx
from .runs import Runs, AsyncRuns, RunsWithRawResponse, AsyncRunsWithRawResponse
from .messages import Messages, AsyncMessages, MessagesWithRawResponse, AsyncMessagesWithRawResponse
-from ...._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ...._utils import maybe_transform
from .runs.runs import Runs, AsyncRuns
from ...._compat import cached_property
src/openai/resources/chat/completions.py
@@ -7,13 +7,7 @@ from typing_extensions import Literal
import httpx
-from ..._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ..._utils import required_args, maybe_transform
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/fine_tuning/jobs.py
@@ -7,13 +7,7 @@ from typing_extensions import Literal
import httpx
-from ..._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ..._utils import maybe_transform
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/completions.py
@@ -8,13 +8,7 @@ from typing_extensions import Literal
import httpx
from ..types import Completion, completion_create_params
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import required_args, maybe_transform
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/edits.py
@@ -9,13 +9,7 @@ from typing_extensions import Literal
import httpx
from ..types import Edit, edit_create_params
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import maybe_transform
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/embeddings.py
@@ -9,13 +9,7 @@ from typing_extensions import Literal
import httpx
from ..types import CreateEmbeddingResponse, embedding_create_params
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import is_given, maybe_transform
from .._compat import cached_property
from .._extras import numpy as np, has_numpy
src/openai/resources/files.py
@@ -10,14 +10,7 @@ from typing_extensions import Literal
import httpx
from ..types import FileObject, FileDeleted, file_list_params, file_create_params
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
- FileTypes,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
from .._utils import extract_files, maybe_transform, deepcopy_minimal
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/fine_tunes.py
@@ -14,13 +14,7 @@ from ..types import (
fine_tune_create_params,
fine_tune_list_events_params,
)
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import maybe_transform
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/images.py
@@ -13,14 +13,7 @@ from ..types import (
image_generate_params,
image_create_variation_params,
)
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
- FileTypes,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
from .._utils import extract_files, maybe_transform, deepcopy_minimal
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/resources/models.py
@@ -5,13 +5,7 @@ from __future__ import annotations
import httpx
from ..types import Model, ModelDeleted
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
from .._response import to_raw_response_wrapper, async_to_raw_response_wrapper
src/openai/resources/moderations.py
@@ -8,13 +8,7 @@ from typing_extensions import Literal
import httpx
from ..types import ModerationCreateResponse, moderation_create_params
-from .._types import (
- NOT_GIVEN,
- Body,
- Query,
- Headers,
- NotGiven,
-)
+from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import maybe_transform
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
src/openai/_base_client.py
@@ -48,7 +48,6 @@ from ._types import (
Body,
Omit,
Query,
- ModelT,
Headers,
Timeout,
NotGiven,
@@ -61,7 +60,6 @@ from ._types import (
HttpxSendArgs,
AsyncTransport,
RequestOptions,
- UnknownResponse,
ModelBuilderProtocol,
BinaryResponseContent,
)
@@ -142,7 +140,7 @@ class PageInfo:
self.params = params
-class BasePage(GenericModel, Generic[ModelT]):
+class BasePage(GenericModel, Generic[_T]):
"""
Defines the core interface for pagination.
@@ -155,7 +153,7 @@ class BasePage(GenericModel, Generic[ModelT]):
"""
_options: FinalRequestOptions = PrivateAttr()
- _model: Type[ModelT] = PrivateAttr()
+ _model: Type[_T] = PrivateAttr()
def has_next_page(self) -> bool:
items = self._get_page_items()
@@ -166,7 +164,7 @@ class BasePage(GenericModel, Generic[ModelT]):
def next_page_info(self) -> Optional[PageInfo]:
...
- def _get_page_items(self) -> Iterable[ModelT]: # type: ignore[empty-body]
+ def _get_page_items(self) -> Iterable[_T]: # type: ignore[empty-body]
...
def _params_from_url(self, url: URL) -> httpx.QueryParams:
@@ -191,13 +189,13 @@ class BasePage(GenericModel, Generic[ModelT]):
raise ValueError("Unexpected PageInfo state")
-class BaseSyncPage(BasePage[ModelT], Generic[ModelT]):
+class BaseSyncPage(BasePage[_T], Generic[_T]):
_client: SyncAPIClient = pydantic.PrivateAttr()
def _set_private_attributes(
self,
client: SyncAPIClient,
- model: Type[ModelT],
+ model: Type[_T],
options: FinalRequestOptions,
) -> None:
self._model = model
@@ -212,7 +210,7 @@ class BaseSyncPage(BasePage[ModelT], Generic[ModelT]):
# methods should continue to work as expected as there is an alternative method
# to cast a model to a dictionary, model.dict(), which is used internally
# by pydantic.
- def __iter__(self) -> Iterator[ModelT]: # type: ignore
+ def __iter__(self) -> Iterator[_T]: # type: ignore
for page in self.iter_pages():
for item in page._get_page_items():
yield item
@@ -237,13 +235,13 @@ class BaseSyncPage(BasePage[ModelT], Generic[ModelT]):
return self._client._request_api_list(self._model, page=self.__class__, options=options)
-class AsyncPaginator(Generic[ModelT, AsyncPageT]):
+class AsyncPaginator(Generic[_T, AsyncPageT]):
def __init__(
self,
client: AsyncAPIClient,
options: FinalRequestOptions,
page_cls: Type[AsyncPageT],
- model: Type[ModelT],
+ model: Type[_T],
) -> None:
self._model = model
self._client = client
@@ -266,7 +264,7 @@ class AsyncPaginator(Generic[ModelT, AsyncPageT]):
return await self._client.request(self._page_cls, self._options)
- async def __aiter__(self) -> AsyncIterator[ModelT]:
+ async def __aiter__(self) -> AsyncIterator[_T]:
# https://github.com/microsoft/pyright/issues/3464
page = cast(
AsyncPageT,
@@ -276,12 +274,12 @@ class AsyncPaginator(Generic[ModelT, AsyncPageT]):
yield item
-class BaseAsyncPage(BasePage[ModelT], Generic[ModelT]):
+class BaseAsyncPage(BasePage[_T], Generic[_T]):
_client: AsyncAPIClient = pydantic.PrivateAttr()
def _set_private_attributes(
self,
- model: Type[ModelT],
+ model: Type[_T],
client: AsyncAPIClient,
options: FinalRequestOptions,
) -> None:
@@ -289,7 +287,7 @@ class BaseAsyncPage(BasePage[ModelT], Generic[ModelT]):
self._client = client
self._options = options
- async def __aiter__(self) -> AsyncIterator[ModelT]:
+ async def __aiter__(self) -> AsyncIterator[_T]:
async for page in self.iter_pages():
for item in page._get_page_items():
yield item
@@ -528,7 +526,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
if data is None:
return cast(ResponseT, None)
- if cast_to is UnknownResponse:
+ if cast_to is object:
return cast(ResponseT, data)
try:
@@ -970,7 +968,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
def _request_api_list(
self,
- model: Type[ModelT],
+ model: Type[object],
page: Type[SyncPageT],
options: FinalRequestOptions,
) -> SyncPageT:
@@ -1132,7 +1130,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
self,
path: str,
*,
- model: Type[ModelT],
+ model: Type[object],
page: Type[SyncPageT],
body: Body | None = None,
options: RequestOptions = {},
@@ -1434,10 +1432,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
def _request_api_list(
self,
- model: Type[ModelT],
+ model: Type[_T],
page: Type[AsyncPageT],
options: FinalRequestOptions,
- ) -> AsyncPaginator[ModelT, AsyncPageT]:
+ ) -> AsyncPaginator[_T, AsyncPageT]:
return AsyncPaginator(client=self, options=options, page_cls=page, model=model)
@overload
@@ -1584,13 +1582,12 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
self,
path: str,
*,
- # TODO: support paginating `str`
- model: Type[ModelT],
+ model: Type[_T],
page: Type[AsyncPageT],
body: Body | None = None,
options: RequestOptions = {},
method: str = "get",
- ) -> AsyncPaginator[ModelT, AsyncPageT]:
+ ) -> AsyncPaginator[_T, AsyncPageT]:
opts = FinalRequestOptions.construct(method=method, url=path, json_data=body, **options)
return self._request_api_list(model, page, opts)
src/openai/_response.py
@@ -9,7 +9,7 @@ from typing_extensions import Awaitable, ParamSpec, override, get_origin
import httpx
-from ._types import NoneType, UnknownResponse, BinaryResponseContent
+from ._types import NoneType, BinaryResponseContent
from ._utils import is_given, extract_type_var_from_base
from ._models import BaseModel, is_basemodel
from ._constants import RAW_RESPONSE_HEADER
@@ -162,7 +162,7 @@ class APIResponse(Generic[R]):
# `ResponseT` TypeVar, however if that TypeVar is ever updated in the future, then
# this function would become unsafe but a type checker would not report an error.
if (
- cast_to is not UnknownResponse
+ cast_to is not object
and not origin is list
and not origin is dict
and not origin is Union
src/openai/_types.py
@@ -258,11 +258,6 @@ class RequestOptions(TypedDict, total=False):
idempotency_key: str
-# Sentinel class used when the response type is an object with an unknown schema
-class UnknownResponse:
- ...
-
-
# Sentinel class used until PEP 0661 is accepted
class NotGiven:
"""
@@ -339,7 +334,17 @@ HeadersLike = Union[Headers, HeadersLikeProtocol]
ResponseT = TypeVar(
"ResponseT",
- bound="Union[str, None, BaseModel, List[Any], Dict[str, Any], Response, UnknownResponse, ModelBuilderProtocol, BinaryResponseContent]",
+ bound=Union[
+ object,
+ str,
+ None,
+ "BaseModel",
+ List[Any],
+ Dict[str, Any],
+ Response,
+ ModelBuilderProtocol,
+ BinaryResponseContent,
+ ],
)
StrBytesIntFloat = Union[str, bytes, int, float]
src/openai/pagination.py
@@ -1,27 +1,28 @@
# File generated from our OpenAPI spec by Stainless.
-from typing import Any, List, Generic, Optional, cast
+from typing import Any, List, Generic, TypeVar, Optional, cast
from typing_extensions import Protocol, override, runtime_checkable
-from ._types import ModelT
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
__all__ = ["SyncPage", "AsyncPage", "SyncCursorPage", "AsyncCursorPage"]
+_T = TypeVar("_T")
+
@runtime_checkable
class CursorPageItem(Protocol):
id: Optional[str]
-class SyncPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
+class SyncPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
- data: List[ModelT]
+ data: List[_T]
object: str
@override
- def _get_page_items(self) -> List[ModelT]:
+ def _get_page_items(self) -> List[_T]:
data = self.data
if not data:
return []
@@ -36,14 +37,14 @@ class SyncPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
return None
-class AsyncPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
+class AsyncPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
"""Note: no pagination actually occurs yet, this is for forwards-compatibility."""
- data: List[ModelT]
+ data: List[_T]
object: str
@override
- def _get_page_items(self) -> List[ModelT]:
+ def _get_page_items(self) -> List[_T]:
data = self.data
if not data:
return []
@@ -58,11 +59,11 @@ class AsyncPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
return None
-class SyncCursorPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
- data: List[ModelT]
+class SyncCursorPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
+ data: List[_T]
@override
- def _get_page_items(self) -> List[ModelT]:
+ def _get_page_items(self) -> List[_T]:
data = self.data
if not data:
return []
@@ -82,11 +83,11 @@ class SyncCursorPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
return PageInfo(params={"after": item.id})
-class AsyncCursorPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
- data: List[ModelT]
+class AsyncCursorPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
+ data: List[_T]
@override
- def _get_page_items(self) -> List[ModelT]:
+ def _get_page_items(self) -> List[_T]:
data = self.data
if not data:
return []