from __future__ import annotations
import typing
from dataclasses import dataclass
from httpx import URL as HttpxURL
from httpx import Limits
from httpx import Timeout as HttpxTimeout
@dataclass(frozen=True, repr=True)
class CertificateInfo:
certfile: typing.Optional[str] = None
keyfile: typing.Optional[str] = None
password: typing.Optional[str] = None
class Timeout(HttpxTimeout):
...
[docs]class Connection(Limits):
[docs] @classmethod
def from_tuple(cls, options: typing.Union[typing.Tuple[int, int], typing.Tuple[int, int, float]]) -> Connection:
"""
Class method for converting a length 2 OR 3 tuple into the appropriate `Connection` instance.
"""
if len(options) == 3:
max_conns, max_keep, expiry = typing.cast(typing.Tuple[int, int, float], options)
return cls(max_connections=max_conns, max_keepalive_connections=max_keep, keepalive_expiry=expiry)
elif len(options) == 2:
max_conns, max_keep = typing.cast(typing.Tuple[int, int], options)
return cls(max_connections=max_conns, max_keepalive_connections=max_keep)
else:
raise ValueError("When using a tuple for connection=, at least two values must be provided.")
class URL(HttpxURL):
...