Metadata-Version: 2.4
Name: collab-editor-provider
Version: 0.1.0.dev5
Summary: Python SDK for implementing collab-editor storage providers
License-Expression: MIT
Requires-Python: >=3.10
Requires-Dist: pycrdt<1,>=0.12
Provides-Extra: dev
Requires-Dist: fastapi>=0.100; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: uvicorn[standard]>=0.20; extra == 'dev'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.100; extra == 'fastapi'
Requires-Dist: uvicorn[standard]>=0.20; extra == 'fastapi'
Description-Content-Type: text/markdown

# collab-editor-provider

Python SDK for implementing collab-editor storage providers.

## Installation

```bash
pip install collab-editor-provider
```

With FastAPI support:
```bash
pip install collab-editor-provider[fastapi]
```

For the latest dev build (published on every push to main):
```bash
pip install --pre collab-editor-provider
```

## Quick Start

```python
from collab_editor_provider import Provider, ContentResult, create_fastapi_router, serve
from fastapi import FastAPI

class MyProvider(Provider):
    async def read_content(self, document_id: str) -> ContentResult:
        text = read_from_your_storage(document_id)
        return ContentResult(content=text, mime_type="text/plain")

    async def write_content(self, document_id: str, content: str, mime_type: str) -> None:
        save_to_your_storage(document_id, content)

# Option 1: FastAPI router
app = FastAPI()
app.include_router(create_fastapi_router(MyProvider()), prefix="/collab")

# Option 2: Standalone server
serve(MyProvider(), port=8081)

# Option 3: Manual processing
from collab_editor_provider import ProviderProcessor
processor = ProviderProcessor(MyProvider())
result = await processor.process_store(document_id, updates)
```
