mirror of
https://github.com/anomalyco/opencode-sdk-python.git
synced 2026-05-15 10:00:36 +00:00
feat(api): update via SDK Studio
This commit is contained in:
parent
6d8571b73d
commit
d70071b1fc
6 changed files with 84 additions and 35 deletions
|
|
@ -8,8 +8,6 @@ from typing import Any, cast
|
|||
import pytest
|
||||
|
||||
from opencode_ai import Opencode, AsyncOpencode
|
||||
from tests.utils import assert_matches_type
|
||||
from opencode_ai.types import EventListResponse
|
||||
|
||||
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
||||
|
||||
|
|
@ -20,18 +18,17 @@ class TestEvent:
|
|||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_method_list(self, client: Opencode) -> None:
|
||||
event = client.event.list()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
event_stream = client.event.list()
|
||||
event_stream.response.close()
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_raw_response_list(self, client: Opencode) -> None:
|
||||
response = client.event.with_raw_response.list()
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
event = response.parse()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
stream = response.parse()
|
||||
stream.close()
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
|
|
@ -40,8 +37,8 @@ class TestEvent:
|
|||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
event = response.parse()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
stream = response.parse()
|
||||
stream.close()
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
|
|
@ -54,18 +51,17 @@ class TestAsyncEvent:
|
|||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_method_list(self, async_client: AsyncOpencode) -> None:
|
||||
event = await async_client.event.list()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
event_stream = await async_client.event.list()
|
||||
await event_stream.response.aclose()
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_raw_response_list(self, async_client: AsyncOpencode) -> None:
|
||||
response = await async_client.event.with_raw_response.list()
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
event = await response.parse()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
stream = await response.parse()
|
||||
await stream.close()
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
|
|
@ -74,7 +70,7 @@ class TestAsyncEvent:
|
|||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
event = await response.parse()
|
||||
assert_matches_type(EventListResponse, event, path=["response"])
|
||||
stream = await response.parse()
|
||||
await stream.close()
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ from pydantic import ValidationError
|
|||
from opencode_ai import Opencode, AsyncOpencode, APIResponseValidationError
|
||||
from opencode_ai._types import Omit
|
||||
from opencode_ai._models import BaseModel, FinalRequestOptions
|
||||
from opencode_ai._streaming import Stream, AsyncStream
|
||||
from opencode_ai._exceptions import APIStatusError, APITimeoutError, APIResponseValidationError
|
||||
from opencode_ai._base_client import (
|
||||
DEFAULT_TIMEOUT,
|
||||
|
|
@ -624,6 +625,17 @@ class TestOpencode:
|
|||
with pytest.raises(TypeError, match=r"max_retries cannot be None"):
|
||||
Opencode(base_url=base_url, _strict_response_validation=True, max_retries=cast(Any, None))
|
||||
|
||||
@pytest.mark.respx(base_url=base_url)
|
||||
def test_default_stream_cls(self, respx_mock: MockRouter) -> None:
|
||||
class Model(BaseModel):
|
||||
name: str
|
||||
|
||||
respx_mock.post("/foo").mock(return_value=httpx.Response(200, json={"foo": "bar"}))
|
||||
|
||||
stream = self.client.post("/foo", cast_to=Model, stream=True, stream_cls=Stream[Model])
|
||||
assert isinstance(stream, Stream)
|
||||
stream.response.close()
|
||||
|
||||
@pytest.mark.respx(base_url=base_url)
|
||||
def test_received_text_for_expected_json(self, respx_mock: MockRouter) -> None:
|
||||
class Model(BaseModel):
|
||||
|
|
@ -1390,6 +1402,18 @@ class TestAsyncOpencode:
|
|||
with pytest.raises(TypeError, match=r"max_retries cannot be None"):
|
||||
AsyncOpencode(base_url=base_url, _strict_response_validation=True, max_retries=cast(Any, None))
|
||||
|
||||
@pytest.mark.respx(base_url=base_url)
|
||||
@pytest.mark.asyncio
|
||||
async def test_default_stream_cls(self, respx_mock: MockRouter) -> None:
|
||||
class Model(BaseModel):
|
||||
name: str
|
||||
|
||||
respx_mock.post("/foo").mock(return_value=httpx.Response(200, json={"foo": "bar"}))
|
||||
|
||||
stream = await self.client.post("/foo", cast_to=Model, stream=True, stream_cls=AsyncStream[Model])
|
||||
assert isinstance(stream, AsyncStream)
|
||||
await stream.response.aclose()
|
||||
|
||||
@pytest.mark.respx(base_url=base_url)
|
||||
@pytest.mark.asyncio
|
||||
async def test_received_text_for_expected_json(self, respx_mock: MockRouter) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue