Metadata-Version: 2.4
Name: janus-api-streaming
Version: 0.2.0
Summary: Typed Janus Streaming plugin and async toolkit for janus-api-core
Author: S.A
License: MIT
Requires-Python: >=3.14
Requires-Dist: janus-api-core<4,>=3
Requires-Dist: pydantic<3,>=2.12
Provides-Extra: dev
Requires-Dist: mypy<2,>=1.15; extra == 'dev'
Requires-Dist: pytest-asyncio<2,>=0.25; extra == 'dev'
Requires-Dist: pytest<9,>=8.3; extra == 'dev'
Requires-Dist: ruff<1,>=0.11; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest-asyncio<2,>=0.25; extra == 'test'
Requires-Dist: pytest<9,>=8.3; extra == 'test'
Description-Content-Type: text/markdown

# janus-api-streaming

A standalone, typed named-plugin distribution for `janus.plugin.streaming`. It
depends on `janus-api-core>=3,<4`, but **not** on the source orchestrator,
Django, Qt, FFmpeg, GStreamer, or SRS.

The package owns:

- the concrete `StreamingPlugin` subclass, published as the `streaming`
  `janus_api.plugins` entry point;
- strict request models for every Streaming command in
  `janus_streaming.requests` and forward-compatible response models in
  `janus_streaming.responses`;
- typed convenience methods for every Streaming command on `StreamingPlugin`;
- a reusable administrative handle;
- stable mountpoint specifications and response models;
- one-handle-per-viewer negotiation state machines;
- operation deadlines and normalized errors;
- optional runtime helpers for applications that want the package to own a
  `janus-api-core` session manager.

Core remains named-plugin-free: this package is the sole owner of the Streaming
implementation and never imports
`janus_api.models.streaming` or `janus_api.lib.plugins.streaming`, and never
asks core to provide a registered Streaming implementation. All direct core
imports are confined to `janus_streaming._compat`.

```python
from janus_streaming import StreamingPlugin
from janus_streaming.requests import ListRequest

plugin = await StreamingPlugin(session=session).attach()
response = await plugin.send(ListRequest())
```

Source lifecycle orchestration lives elsewhere. Install
`janus-stream-orchestrator` only when you want to expose this package as a
mountpoint backend to `stream-orchestrator`.
