Metadata-Version: 2.4
Name: iridium-relay
Version: 1.1.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Classifier: Typing :: Typed
License-File: LICENSE-MIT
License-File: LICENSE-APACHE
Summary: Python asyncio bindings for the Iridium Rust client
Keywords: iridium,networking,quic,relay,asyncio
License-Expression: MIT OR Apache-2.0
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://github.com/henrikxyz/iridium/tree/main/docs
Project-URL: Homepage, https://github.com/henrikxyz/iridium
Project-URL: Issues, https://github.com/henrikxyz/iridium/issues
Project-URL: Repository, https://github.com/henrikxyz/iridium

# Iridium Python client

This package is a thin Python `asyncio` binding over the official Rust
`crates/client` implementation. It does not contain a second QUIC or protocol
implementation.

```console
python -m pip install iridium-relay
```

The distribution is named `iridium-relay`; Python code imports `iridium`.

```python
import iridium

async with await iridium.connect("server.example:4433") as client:
    stream = await client.tcp_connect("127.0.0.1", 8080)
    await stream.write(b"hello")
    print(await stream.read())
```

Use `await iridium.connect_file("client.json")` with the output of
`iridium-server init`. The lower-level `ClientConfig` API remains available
for advanced settings.

Build a development wheel with `uv run maturin develop`.

The binding also supports target WebSockets, buffered HTTP/HTTPS, and
`quic`, `wss`, or automatic transport selection. All protocol work remains in
the Rust client. Pass `token=None` when connecting to a server configured with
`authentication: "none"`.

Leave `ca_certificate=None` for a publicly trusted server certificate, or set
`tofu_store` to a persistent directory to pin a self-signed certificate on
first use. Supplying both is rejected.

