Metadata-Version: 2.4
Name: janus-echotest-plugin
Version: 3.0.0
Summary: Typed async client for the Janus EchoTest plugin
Author-email: Leydotpy <leydotpy.dev@gmail.com>
License-Expression: MIT
Project-URL: Documentation, https://janus.conf.meetecho.com/docs/echotest.html
Project-URL: JanusGateway, https://janus.conf.meetecho.com/
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: janus-api-core<4,>=3
Requires-Dist: pydantic<3,>=2.12
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: build>=1.2; extra == "test"

# janus-echotest-plugin

An independently installable, fully typed client for the Janus EchoTest
plugin. It depends only on `janus-api-core`; importing it does not install any
other named Janus plugin.

```python
from janus_api.models.base import Jsep
from janus_echotest_plugin import EchoTestPlugin

echo = EchoTestPlugin(session=session)
await echo.attach()
reply = await echo.negotiate(
    Jsep(type="offer", sdp=local_offer),
    audio=True,
    video=True,
    bitrate=1_500_000,
)
remote_answer = reply.jsep
```

`configure()` changes media, recording, bitrate, simulcast, or SVC settings
without renegotiating. `negotiate()` requires an offer and returns the outer
JSEP answer alongside typed plugin data. Plugin and Janus envelope failures are
raised as typed exceptions.

The request schema follows the official
[EchoTest API](https://janus.conf.meetecho.com/docs/echotest.html). Outbound
messages reject undocumented keys; inbound events retain unknown future keys.

