from __future__ import annotations

import httpx


class DownstreamProtocolError(RuntimeError):
    pass


def make_timeout(connect_s: float, request_s: float, stream_s: float | None = None) -> httpx.Timeout:
    return httpx.Timeout(
        timeout=request_s,
        connect=connect_s,
        read=stream_s if stream_s is not None else request_s,
        write=request_s,
        pool=connect_s,
    )
