Metadata-Version: 2.3
Name: ai-stream-proxy-sdk
Version: 0.2.3
Summary: Client SDK for ai-stream-proxy.
Author-email: 有害猫猫拳 <637450802@qq.com>
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: <4.0,>=3.10
Requires-Dist: httpx<1.0,>=0.25
Requires-Dist: tenacity<10,>=8
Description-Content-Type: text/markdown

## ai-stream-proxy-sdk

Import name stays `ai_stream_proxy`.

### Install

```bash
uv sync
```

### Test

```bash
uv run pytest
```

### Build

```bash
uv build
```

### Publish

```bash
uv publish --token <pypi-token>
```

### Sync usage

```python
from ai_stream_proxy import StreamProxyClient

client = StreamProxyClient(server_url="http://127.0.0.1:3000")

client.create_stream(
    stream_id="test",
    message_id="message-1",
    content_type="claude-code-stream-json+include-partial-messages",
)

with client.new_stream(stream_id="test") as stream:
    stream.enqueue(b'{"type":"chunk"}\n')
    stream.finish(abort=False, reason="done")

message = client.get_stream_message(stream_id="test")
client.delete_stream(stream_id="test")
client.close()
```

### Async usage

```python
import asyncio

from ai_stream_proxy import AsyncStreamProxyClient


async def main() -> None:
    client = AsyncStreamProxyClient(server_url="http://127.0.0.1:3000")

    await client.create_stream(
        stream_id="test",
        message_id="message-1",
        content_type="claude-code-stream-json+include-partial-messages",
    )

    async with client.new_stream(stream_id="test") as stream:
        stream.enqueue(b'{"type":"chunk"}\n')
        stream.finish(abort=False, reason="done")

    message = await client.get_stream_message(stream_id="test")
    await client.delete_stream(stream_id="test")
    await client.aclose()


asyncio.run(main())
```
