feat(api): api update

This commit is contained in:
stainless-app[bot] 2025-07-15 14:55:36 +00:00
parent 6927a1bfda
commit 4db7199701
3 changed files with 31 additions and 57 deletions

View file

@ -686,20 +686,20 @@ class TestOpencode:
@mock.patch("opencode_ai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter, client: Opencode) -> None:
respx_mock.get("/event").mock(side_effect=httpx.TimeoutException("Test timeout error"))
respx_mock.get("/session").mock(side_effect=httpx.TimeoutException("Test timeout error"))
with pytest.raises(APITimeoutError):
client.event.with_streaming_response.list().__enter__()
client.session.with_streaming_response.list().__enter__()
assert _get_open_connections(self.client) == 0
@mock.patch("opencode_ai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter, client: Opencode) -> None:
respx_mock.get("/event").mock(return_value=httpx.Response(500))
respx_mock.get("/session").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
client.event.with_streaming_response.list().__enter__()
client.session.with_streaming_response.list().__enter__()
assert _get_open_connections(self.client) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
@ -726,9 +726,9 @@ class TestOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = client.event.with_raw_response.list()
response = client.session.with_raw_response.list()
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@ -750,9 +750,9 @@ class TestOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = client.event.with_raw_response.list(extra_headers={"x-stainless-retry-count": Omit()})
response = client.session.with_raw_response.list(extra_headers={"x-stainless-retry-count": Omit()})
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@ -773,9 +773,9 @@ class TestOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = client.event.with_raw_response.list(extra_headers={"x-stainless-retry-count": "42"})
response = client.session.with_raw_response.list(extra_headers={"x-stainless-retry-count": "42"})
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
@ -1468,10 +1468,10 @@ class TestAsyncOpencode:
async def test_retrying_timeout_errors_doesnt_leak(
self, respx_mock: MockRouter, async_client: AsyncOpencode
) -> None:
respx_mock.get("/event").mock(side_effect=httpx.TimeoutException("Test timeout error"))
respx_mock.get("/session").mock(side_effect=httpx.TimeoutException("Test timeout error"))
with pytest.raises(APITimeoutError):
await async_client.event.with_streaming_response.list().__aenter__()
await async_client.session.with_streaming_response.list().__aenter__()
assert _get_open_connections(self.client) == 0
@ -1480,10 +1480,10 @@ class TestAsyncOpencode:
async def test_retrying_status_errors_doesnt_leak(
self, respx_mock: MockRouter, async_client: AsyncOpencode
) -> None:
respx_mock.get("/event").mock(return_value=httpx.Response(500))
respx_mock.get("/session").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
await async_client.event.with_streaming_response.list().__aenter__()
await async_client.session.with_streaming_response.list().__aenter__()
assert _get_open_connections(self.client) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
@ -1511,9 +1511,9 @@ class TestAsyncOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = await client.event.with_raw_response.list()
response = await client.session.with_raw_response.list()
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@ -1536,9 +1536,9 @@ class TestAsyncOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = await client.event.with_raw_response.list(extra_headers={"x-stainless-retry-count": Omit()})
response = await client.session.with_raw_response.list(extra_headers={"x-stainless-retry-count": Omit()})
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@ -1560,9 +1560,9 @@ class TestAsyncOpencode:
return httpx.Response(500)
return httpx.Response(200)
respx_mock.get("/event").mock(side_effect=retry_handler)
respx_mock.get("/session").mock(side_effect=retry_handler)
response = await client.event.with_raw_response.list(extra_headers={"x-stainless-retry-count": "42"})
response = await client.session.with_raw_response.list(extra_headers={"x-stainless-retry-count": "42"})
assert response.http_request.headers.get("x-stainless-retry-count") == "42"