mirror of
https://github.com/anomalyco/opencode-sdk-python.git
synced 2026-04-28 12:39:54 +00:00
feat(api): api update
This commit is contained in:
parent
730f1be142
commit
d63c6f6f73
43 changed files with 974 additions and 241 deletions
|
|
@ -9,7 +9,7 @@ import pytest
|
|||
|
||||
from opencode_ai import Opencode, AsyncOpencode
|
||||
from tests.utils import assert_matches_type
|
||||
from opencode_ai.types import App, AppInitResponse
|
||||
from opencode_ai.types import App, AppLogResponse, AppInitResponse, AppModesResponse
|
||||
|
||||
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
||||
|
||||
|
|
@ -73,6 +73,85 @@ class TestApp:
|
|||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_method_log(self, client: Opencode) -> None:
|
||||
app = client.app.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
)
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_method_log_with_all_params(self, client: Opencode) -> None:
|
||||
app = client.app.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
extra={"foo": "bar"},
|
||||
)
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_raw_response_log(self, client: Opencode) -> None:
|
||||
response = client.app.with_raw_response.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
)
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
app = response.parse()
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_streaming_response_log(self, client: Opencode) -> None:
|
||||
with client.app.with_streaming_response.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
) as response:
|
||||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
app = response.parse()
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_method_modes(self, client: Opencode) -> None:
|
||||
app = client.app.modes()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_raw_response_modes(self, client: Opencode) -> None:
|
||||
response = client.app.with_raw_response.modes()
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
app = response.parse()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
def test_streaming_response_modes(self, client: Opencode) -> None:
|
||||
with client.app.with_streaming_response.modes() as response:
|
||||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
app = response.parse()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
|
||||
class TestAsyncApp:
|
||||
parametrize = pytest.mark.parametrize(
|
||||
|
|
@ -134,3 +213,82 @@ class TestAsyncApp:
|
|||
assert_matches_type(AppInitResponse, app, path=["response"])
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_method_log(self, async_client: AsyncOpencode) -> None:
|
||||
app = await async_client.app.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
)
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_method_log_with_all_params(self, async_client: AsyncOpencode) -> None:
|
||||
app = await async_client.app.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
extra={"foo": "bar"},
|
||||
)
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_raw_response_log(self, async_client: AsyncOpencode) -> None:
|
||||
response = await async_client.app.with_raw_response.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
)
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
app = await response.parse()
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_streaming_response_log(self, async_client: AsyncOpencode) -> None:
|
||||
async with async_client.app.with_streaming_response.log(
|
||||
level="debug",
|
||||
message="message",
|
||||
service="service",
|
||||
) as response:
|
||||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
app = await response.parse()
|
||||
assert_matches_type(AppLogResponse, app, path=["response"])
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_method_modes(self, async_client: AsyncOpencode) -> None:
|
||||
app = await async_client.app.modes()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_raw_response_modes(self, async_client: AsyncOpencode) -> None:
|
||||
response = await async_client.app.with_raw_response.modes()
|
||||
|
||||
assert response.is_closed is True
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
app = await response.parse()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
@pytest.mark.skip()
|
||||
@parametrize
|
||||
async def test_streaming_response_modes(self, async_client: AsyncOpencode) -> None:
|
||||
async with async_client.app.with_streaming_response.modes() as response:
|
||||
assert not response.is_closed
|
||||
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
||||
|
||||
app = await response.parse()
|
||||
assert_matches_type(AppModesResponse, app, path=["response"])
|
||||
|
||||
assert cast(Any, response.is_closed) is True
|
||||
|
|
|
|||
|
|
@ -171,11 +171,17 @@ class TestSession:
|
|||
def test_method_chat(self, client: Opencode) -> None:
|
||||
session = client.session.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -187,11 +193,17 @@ class TestSession:
|
|||
def test_raw_response_chat(self, client: Opencode) -> None:
|
||||
response = client.session.with_raw_response.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -207,11 +219,17 @@ class TestSession:
|
|||
def test_streaming_response_chat(self, client: Opencode) -> None:
|
||||
with client.session.with_streaming_response.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -230,11 +248,17 @@ class TestSession:
|
|||
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
||||
client.session.with_raw_response.chat(
|
||||
id="",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -245,6 +269,7 @@ class TestSession:
|
|||
def test_method_init(self, client: Opencode) -> None:
|
||||
session = client.session.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
@ -255,6 +280,7 @@ class TestSession:
|
|||
def test_raw_response_init(self, client: Opencode) -> None:
|
||||
response = client.session.with_raw_response.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
@ -269,6 +295,7 @@ class TestSession:
|
|||
def test_streaming_response_init(self, client: Opencode) -> None:
|
||||
with client.session.with_streaming_response.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
) as response:
|
||||
|
|
@ -286,6 +313,7 @@ class TestSession:
|
|||
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
||||
client.session.with_raw_response.init(
|
||||
id="",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
@ -617,11 +645,17 @@ class TestAsyncSession:
|
|||
async def test_method_chat(self, async_client: AsyncOpencode) -> None:
|
||||
session = await async_client.session.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -633,11 +667,17 @@ class TestAsyncSession:
|
|||
async def test_raw_response_chat(self, async_client: AsyncOpencode) -> None:
|
||||
response = await async_client.session.with_raw_response.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -653,11 +693,17 @@ class TestAsyncSession:
|
|||
async def test_streaming_response_chat(self, async_client: AsyncOpencode) -> None:
|
||||
async with async_client.session.with_streaming_response.chat(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -676,11 +722,17 @@ class TestAsyncSession:
|
|||
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
||||
await async_client.session.with_raw_response.chat(
|
||||
id="",
|
||||
message_id="messageID",
|
||||
mode="mode",
|
||||
model_id="modelID",
|
||||
parts=[
|
||||
{
|
||||
"text": "text",
|
||||
"type": "text",
|
||||
"id": "id",
|
||||
"message_id": "messageID",
|
||||
"mime": "mime",
|
||||
"session_id": "sessionID",
|
||||
"type": "file",
|
||||
"url": "url",
|
||||
}
|
||||
],
|
||||
provider_id="providerID",
|
||||
|
|
@ -691,6 +743,7 @@ class TestAsyncSession:
|
|||
async def test_method_init(self, async_client: AsyncOpencode) -> None:
|
||||
session = await async_client.session.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
@ -701,6 +754,7 @@ class TestAsyncSession:
|
|||
async def test_raw_response_init(self, async_client: AsyncOpencode) -> None:
|
||||
response = await async_client.session.with_raw_response.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
@ -715,6 +769,7 @@ class TestAsyncSession:
|
|||
async def test_streaming_response_init(self, async_client: AsyncOpencode) -> None:
|
||||
async with async_client.session.with_streaming_response.init(
|
||||
id="id",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
) as response:
|
||||
|
|
@ -732,6 +787,7 @@ class TestAsyncSession:
|
|||
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
||||
await async_client.session.with_raw_response.init(
|
||||
id="",
|
||||
message_id="messageID",
|
||||
model_id="modelID",
|
||||
provider_id="providerID",
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue