diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 27d2fbbc..078b9e28 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.7.0"
+ ".": "3.8.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 425463f6..29f00c95 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 188
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/digitalocean%2Fgradient-f07d74847e620dfa26d8df40ea4680814af9bba381b3a57a7b6ed76ad49d85f8.yml
openapi_spec_hash: e3553dc2abf2afd4368b736bcc32a289
-config_hash: b712366a70c9d33e22d40eb601ca972f
+config_hash: b28984dd49d4baf1d68572efe83ac103
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 27493281..bf60097a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 3.8.0 (2025-11-20)
+
+Full Changelog: [v3.7.0...v3.8.0](https://github.com/digitalocean/gradient-python/compare/v3.7.0...v3.8.0)
+
+### Features
+
+* **api:** manual updates ([244277b](https://github.com/digitalocean/gradient-python/commit/244277b483ac97f733e8f37e0b556cb49813b554))
+
## 3.7.0 (2025-11-19)
Full Changelog: [v3.6.0...v3.7.0](https://github.com/digitalocean/gradient-python/compare/v3.6.0...v3.7.0)
diff --git a/api.md b/api.md
index 49135772..e32fae32 100644
--- a/api.md
+++ b/api.md
@@ -155,18 +155,6 @@ Methods:
- client.agents.evaluation_metrics.workspaces.agents.list(workspace_uuid, \*\*params) -> AgentListResponse
- client.agents.evaluation_metrics.workspaces.agents.move(path_workspace_uuid, \*\*params) -> AgentMoveResponse
-### Models
-
-Types:
-
-```python
-from gradient.types.agents.evaluation_metrics import ModelListResponse
-```
-
-Methods:
-
-- client.agents.evaluation_metrics.models.list(\*\*params) -> ModelListResponse
-
### Anthropic
#### Keys
diff --git a/pyproject.toml b/pyproject.toml
index 3832f578..28cc09df 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "gradient"
-version = "3.7.0"
+version = "3.8.0"
description = "The official Python library for the Gradient API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/gradient/_version.py b/src/gradient/_version.py
index 6e29a000..defad636 100644
--- a/src/gradient/_version.py
+++ b/src/gradient/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "gradient"
-__version__ = "3.7.0" # x-release-please-version
+__version__ = "3.8.0" # x-release-please-version
diff --git a/src/gradient/resources/agents/evaluation_metrics/__init__.py b/src/gradient/resources/agents/evaluation_metrics/__init__.py
index 515a221b..fcb54c78 100644
--- a/src/gradient/resources/agents/evaluation_metrics/__init__.py
+++ b/src/gradient/resources/agents/evaluation_metrics/__init__.py
@@ -1,13 +1,5 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-from .models import (
- ModelsResource,
- AsyncModelsResource,
- ModelsResourceWithRawResponse,
- AsyncModelsResourceWithRawResponse,
- ModelsResourceWithStreamingResponse,
- AsyncModelsResourceWithStreamingResponse,
-)
from .oauth2 import (
Oauth2Resource,
AsyncOauth2Resource,
@@ -64,12 +56,6 @@
"AsyncWorkspacesResourceWithRawResponse",
"WorkspacesResourceWithStreamingResponse",
"AsyncWorkspacesResourceWithStreamingResponse",
- "ModelsResource",
- "AsyncModelsResource",
- "ModelsResourceWithRawResponse",
- "AsyncModelsResourceWithRawResponse",
- "ModelsResourceWithStreamingResponse",
- "AsyncModelsResourceWithStreamingResponse",
"AnthropicResource",
"AsyncAnthropicResource",
"AnthropicResourceWithRawResponse",
diff --git a/src/gradient/resources/agents/evaluation_metrics/evaluation_metrics.py b/src/gradient/resources/agents/evaluation_metrics/evaluation_metrics.py
index 14ea4d55..b9080132 100644
--- a/src/gradient/resources/agents/evaluation_metrics/evaluation_metrics.py
+++ b/src/gradient/resources/agents/evaluation_metrics/evaluation_metrics.py
@@ -4,14 +4,6 @@
import httpx
-from .models import (
- ModelsResource,
- AsyncModelsResource,
- ModelsResourceWithRawResponse,
- AsyncModelsResourceWithRawResponse,
- ModelsResourceWithStreamingResponse,
- AsyncModelsResourceWithStreamingResponse,
-)
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
from ...._utils import maybe_transform, async_maybe_transform
from ...._compat import cached_property
@@ -75,10 +67,6 @@ class EvaluationMetricsResource(SyncAPIResource):
def workspaces(self) -> WorkspacesResource:
return WorkspacesResource(self._client)
- @cached_property
- def models(self) -> ModelsResource:
- return ModelsResource(self._client)
-
@cached_property
def anthropic(self) -> AnthropicResource:
return AnthropicResource(self._client)
@@ -192,10 +180,6 @@ class AsyncEvaluationMetricsResource(AsyncAPIResource):
def workspaces(self) -> AsyncWorkspacesResource:
return AsyncWorkspacesResource(self._client)
- @cached_property
- def models(self) -> AsyncModelsResource:
- return AsyncModelsResource(self._client)
-
@cached_property
def anthropic(self) -> AsyncAnthropicResource:
return AsyncAnthropicResource(self._client)
@@ -319,10 +303,6 @@ def __init__(self, evaluation_metrics: EvaluationMetricsResource) -> None:
def workspaces(self) -> WorkspacesResourceWithRawResponse:
return WorkspacesResourceWithRawResponse(self._evaluation_metrics.workspaces)
- @cached_property
- def models(self) -> ModelsResourceWithRawResponse:
- return ModelsResourceWithRawResponse(self._evaluation_metrics.models)
-
@cached_property
def anthropic(self) -> AnthropicResourceWithRawResponse:
return AnthropicResourceWithRawResponse(self._evaluation_metrics.anthropic)
@@ -355,10 +335,6 @@ def __init__(self, evaluation_metrics: AsyncEvaluationMetricsResource) -> None:
def workspaces(self) -> AsyncWorkspacesResourceWithRawResponse:
return AsyncWorkspacesResourceWithRawResponse(self._evaluation_metrics.workspaces)
- @cached_property
- def models(self) -> AsyncModelsResourceWithRawResponse:
- return AsyncModelsResourceWithRawResponse(self._evaluation_metrics.models)
-
@cached_property
def anthropic(self) -> AsyncAnthropicResourceWithRawResponse:
return AsyncAnthropicResourceWithRawResponse(self._evaluation_metrics.anthropic)
@@ -391,10 +367,6 @@ def __init__(self, evaluation_metrics: EvaluationMetricsResource) -> None:
def workspaces(self) -> WorkspacesResourceWithStreamingResponse:
return WorkspacesResourceWithStreamingResponse(self._evaluation_metrics.workspaces)
- @cached_property
- def models(self) -> ModelsResourceWithStreamingResponse:
- return ModelsResourceWithStreamingResponse(self._evaluation_metrics.models)
-
@cached_property
def anthropic(self) -> AnthropicResourceWithStreamingResponse:
return AnthropicResourceWithStreamingResponse(self._evaluation_metrics.anthropic)
@@ -427,10 +399,6 @@ def __init__(self, evaluation_metrics: AsyncEvaluationMetricsResource) -> None:
def workspaces(self) -> AsyncWorkspacesResourceWithStreamingResponse:
return AsyncWorkspacesResourceWithStreamingResponse(self._evaluation_metrics.workspaces)
- @cached_property
- def models(self) -> AsyncModelsResourceWithStreamingResponse:
- return AsyncModelsResourceWithStreamingResponse(self._evaluation_metrics.models)
-
@cached_property
def anthropic(self) -> AsyncAnthropicResourceWithStreamingResponse:
return AsyncAnthropicResourceWithStreamingResponse(self._evaluation_metrics.anthropic)
diff --git a/src/gradient/resources/agents/evaluation_metrics/models.py b/src/gradient/resources/agents/evaluation_metrics/models.py
deleted file mode 100644
index 7728e662..00000000
--- a/src/gradient/resources/agents/evaluation_metrics/models.py
+++ /dev/null
@@ -1,254 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import List
-from typing_extensions import Literal
-
-import httpx
-
-from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
-from ...._utils import maybe_transform, async_maybe_transform
-from ...._compat import cached_property
-from ...._resource import SyncAPIResource, AsyncAPIResource
-from ...._response import (
- to_raw_response_wrapper,
- to_streamed_response_wrapper,
- async_to_raw_response_wrapper,
- async_to_streamed_response_wrapper,
-)
-from ...._base_client import make_request_options
-from ....types.agents.evaluation_metrics import model_list_params
-from ....types.agents.evaluation_metrics.model_list_response import ModelListResponse
-
-__all__ = ["ModelsResource", "AsyncModelsResource"]
-
-
-class ModelsResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ModelsResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/digitalocean/gradient-python#accessing-raw-response-data-eg-headers
- """
- return ModelsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ModelsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/digitalocean/gradient-python#with_streaming_response
- """
- return ModelsResourceWithStreamingResponse(self)
-
- def list(
- self,
- *,
- page: int | Omit = omit,
- per_page: int | Omit = omit,
- public_only: bool | Omit = omit,
- usecases: List[
- Literal[
- "MODEL_USECASE_UNKNOWN",
- "MODEL_USECASE_AGENT",
- "MODEL_USECASE_FINETUNED",
- "MODEL_USECASE_KNOWLEDGEBASE",
- "MODEL_USECASE_GUARDRAIL",
- "MODEL_USECASE_REASONING",
- "MODEL_USECASE_SERVERLESS",
- ]
- ]
- | Omit = omit,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> ModelListResponse:
- """
- To list all models, send a GET request to `/v2/gen-ai/models`.
-
- Args:
- page: Page number.
-
- per_page: Items per page.
-
- public_only: Only include models that are publicly available.
-
- usecases: Include only models defined for the listed usecases.
-
- - MODEL_USECASE_UNKNOWN: The use case of the model is unknown
- - MODEL_USECASE_AGENT: The model maybe used in an agent
- - MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
- - MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
- (embedding models)
- - MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
- - MODEL_USECASE_REASONING: The model usecase for reasoning
- - MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return self._get(
- "/v2/gen-ai/models"
- if self._client._base_url_overridden
- else "https://api.digitalocean.com/v2/gen-ai/models",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=maybe_transform(
- {
- "page": page,
- "per_page": per_page,
- "public_only": public_only,
- "usecases": usecases,
- },
- model_list_params.ModelListParams,
- ),
- ),
- cast_to=ModelListResponse,
- )
-
-
-class AsyncModelsResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncModelsResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/digitalocean/gradient-python#accessing-raw-response-data-eg-headers
- """
- return AsyncModelsResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncModelsResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/digitalocean/gradient-python#with_streaming_response
- """
- return AsyncModelsResourceWithStreamingResponse(self)
-
- async def list(
- self,
- *,
- page: int | Omit = omit,
- per_page: int | Omit = omit,
- public_only: bool | Omit = omit,
- usecases: List[
- Literal[
- "MODEL_USECASE_UNKNOWN",
- "MODEL_USECASE_AGENT",
- "MODEL_USECASE_FINETUNED",
- "MODEL_USECASE_KNOWLEDGEBASE",
- "MODEL_USECASE_GUARDRAIL",
- "MODEL_USECASE_REASONING",
- "MODEL_USECASE_SERVERLESS",
- ]
- ]
- | Omit = omit,
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
- # The extra values given here take precedence over values defined on the client or passed to this method.
- extra_headers: Headers | None = None,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> ModelListResponse:
- """
- To list all models, send a GET request to `/v2/gen-ai/models`.
-
- Args:
- page: Page number.
-
- per_page: Items per page.
-
- public_only: Only include models that are publicly available.
-
- usecases: Include only models defined for the listed usecases.
-
- - MODEL_USECASE_UNKNOWN: The use case of the model is unknown
- - MODEL_USECASE_AGENT: The model maybe used in an agent
- - MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
- - MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
- (embedding models)
- - MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
- - MODEL_USECASE_REASONING: The model usecase for reasoning
- - MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return await self._get(
- "/v2/gen-ai/models"
- if self._client._base_url_overridden
- else "https://api.digitalocean.com/v2/gen-ai/models",
- options=make_request_options(
- extra_headers=extra_headers,
- extra_query=extra_query,
- extra_body=extra_body,
- timeout=timeout,
- query=await async_maybe_transform(
- {
- "page": page,
- "per_page": per_page,
- "public_only": public_only,
- "usecases": usecases,
- },
- model_list_params.ModelListParams,
- ),
- ),
- cast_to=ModelListResponse,
- )
-
-
-class ModelsResourceWithRawResponse:
- def __init__(self, models: ModelsResource) -> None:
- self._models = models
-
- self.list = to_raw_response_wrapper(
- models.list,
- )
-
-
-class AsyncModelsResourceWithRawResponse:
- def __init__(self, models: AsyncModelsResource) -> None:
- self._models = models
-
- self.list = async_to_raw_response_wrapper(
- models.list,
- )
-
-
-class ModelsResourceWithStreamingResponse:
- def __init__(self, models: ModelsResource) -> None:
- self._models = models
-
- self.list = to_streamed_response_wrapper(
- models.list,
- )
-
-
-class AsyncModelsResourceWithStreamingResponse:
- def __init__(self, models: AsyncModelsResource) -> None:
- self._models = models
-
- self.list = async_to_streamed_response_wrapper(
- models.list,
- )
diff --git a/src/gradient/types/agents/evaluation_metrics/__init__.py b/src/gradient/types/agents/evaluation_metrics/__init__.py
index ade2b376..971eddef 100644
--- a/src/gradient/types/agents/evaluation_metrics/__init__.py
+++ b/src/gradient/types/agents/evaluation_metrics/__init__.py
@@ -7,8 +7,6 @@
anthropic, # type: ignore # noqa: F401
workspaces, # type: ignore # noqa: F401
)
-from .model_list_params import ModelListParams as ModelListParams
-from .model_list_response import ModelListResponse as ModelListResponse
from .workspace_create_params import WorkspaceCreateParams as WorkspaceCreateParams
from .workspace_list_response import WorkspaceListResponse as WorkspaceListResponse
from .workspace_update_params import WorkspaceUpdateParams as WorkspaceUpdateParams
diff --git a/src/gradient/types/agents/evaluation_metrics/model_list_params.py b/src/gradient/types/agents/evaluation_metrics/model_list_params.py
deleted file mode 100644
index a2fa066a..00000000
--- a/src/gradient/types/agents/evaluation_metrics/model_list_params.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing import List
-from typing_extensions import Literal, TypedDict
-
-__all__ = ["ModelListParams"]
-
-
-class ModelListParams(TypedDict, total=False):
- page: int
- """Page number."""
-
- per_page: int
- """Items per page."""
-
- public_only: bool
- """Only include models that are publicly available."""
-
- usecases: List[
- Literal[
- "MODEL_USECASE_UNKNOWN",
- "MODEL_USECASE_AGENT",
- "MODEL_USECASE_FINETUNED",
- "MODEL_USECASE_KNOWLEDGEBASE",
- "MODEL_USECASE_GUARDRAIL",
- "MODEL_USECASE_REASONING",
- "MODEL_USECASE_SERVERLESS",
- ]
- ]
- """Include only models defined for the listed usecases.
-
- - MODEL_USECASE_UNKNOWN: The use case of the model is unknown
- - MODEL_USECASE_AGENT: The model maybe used in an agent
- - MODEL_USECASE_FINETUNED: The model maybe used for fine tuning
- - MODEL_USECASE_KNOWLEDGEBASE: The model maybe used for knowledge bases
- (embedding models)
- - MODEL_USECASE_GUARDRAIL: The model maybe used for guardrails
- - MODEL_USECASE_REASONING: The model usecase for reasoning
- - MODEL_USECASE_SERVERLESS: The model usecase for serverless inference
- """
diff --git a/src/gradient/types/agents/evaluation_metrics/model_list_response.py b/src/gradient/types/agents/evaluation_metrics/model_list_response.py
deleted file mode 100644
index 2fc17524..00000000
--- a/src/gradient/types/agents/evaluation_metrics/model_list_response.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-
-from ...._models import BaseModel
-from ...api_model import APIModel
-from ...shared.api_meta import APIMeta
-from ...shared.api_links import APILinks
-
-__all__ = ["ModelListResponse"]
-
-
-class ModelListResponse(BaseModel):
- links: Optional[APILinks] = None
- """Links to other pages"""
-
- meta: Optional[APIMeta] = None
- """Meta information about the data set"""
-
- models: Optional[List[APIModel]] = None
- """The models"""
diff --git a/tests/api_resources/agents/evaluation_metrics/test_models.py b/tests/api_resources/agents/evaluation_metrics/test_models.py
deleted file mode 100644
index 677b3383..00000000
--- a/tests/api_resources/agents/evaluation_metrics/test_models.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import os
-from typing import Any, cast
-
-import pytest
-
-from gradient import Gradient, AsyncGradient
-from tests.utils import assert_matches_type
-from gradient.types.agents.evaluation_metrics import ModelListResponse
-
-base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
-
-
-class TestModels:
- parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_list(self, client: Gradient) -> None:
- model = client.agents.evaluation_metrics.models.list()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_list_with_all_params(self, client: Gradient) -> None:
- model = client.agents.evaluation_metrics.models.list(
- page=0,
- per_page=0,
- public_only=True,
- usecases=["MODEL_USECASE_UNKNOWN"],
- )
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_raw_response_list(self, client: Gradient) -> None:
- response = client.agents.evaluation_metrics.models.with_raw_response.list()
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- model = response.parse()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_streaming_response_list(self, client: Gradient) -> None:
- with client.agents.evaluation_metrics.models.with_streaming_response.list() as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- model = response.parse()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
-
-class TestAsyncModels:
- parametrize = pytest.mark.parametrize(
- "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
- )
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_list(self, async_client: AsyncGradient) -> None:
- model = await async_client.agents.evaluation_metrics.models.list()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_list_with_all_params(self, async_client: AsyncGradient) -> None:
- model = await async_client.agents.evaluation_metrics.models.list(
- page=0,
- per_page=0,
- public_only=True,
- usecases=["MODEL_USECASE_UNKNOWN"],
- )
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_raw_response_list(self, async_client: AsyncGradient) -> None:
- response = await async_client.agents.evaluation_metrics.models.with_raw_response.list()
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- model = await response.parse()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_streaming_response_list(self, async_client: AsyncGradient) -> None:
- async with async_client.agents.evaluation_metrics.models.with_streaming_response.list() as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- model = await response.parse()
- assert_matches_type(ModelListResponse, model, path=["response"])
-
- assert cast(Any, response.is_closed) is True