2 from _typeshed import StrPath
3 from typing import Any, AsyncIterator, Awaitable, Callable, Iterable, Optional
5 from . import events, protocols, transports
6 from .base_events import Server
8 _ClientConnectedCallback = Callable[[StreamReader, StreamWriter], Optional[Awaitable[None]]]
10 if sys.version_info < (3, 8):
11 class IncompleteReadError(EOFError):
14 def __init__(self, partial: bytes, expected: int | None) -> None: ...
15 class LimitOverrunError(Exception):
17 def __init__(self, message: str, consumed: int) -> None: ...
19 async def open_connection(
20 host: str | None = ...,
21 port: int | str | None = ...,
23 loop: events.AbstractEventLoop | None = ...,
25 ssl_handshake_timeout: float | None = ...,
27 ) -> tuple[StreamReader, StreamWriter]: ...
28 async def start_server(
29 client_connected_cb: _ClientConnectedCallback,
30 host: str | None = ...,
31 port: int | str | None = ...,
33 loop: events.AbstractEventLoop | None = ...,
35 ssl_handshake_timeout: float | None = ...,
39 if sys.platform != "win32":
40 if sys.version_info >= (3, 7):
44 async def open_unix_connection(
45 path: _PathType | None = ..., *, loop: events.AbstractEventLoop | None = ..., limit: int = ..., **kwds: Any
46 ) -> tuple[StreamReader, StreamWriter]: ...
47 async def start_unix_server(
48 client_connected_cb: _ClientConnectedCallback,
49 path: _PathType | None = ...,
51 loop: events.AbstractEventLoop | None = ...,
56 class FlowControlMixin(protocols.Protocol):
57 def __init__(self, loop: events.AbstractEventLoop | None = ...) -> None: ...
59 class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
62 stream_reader: StreamReader,
63 client_connected_cb: _ClientConnectedCallback | None = ...,
64 loop: events.AbstractEventLoop | None = ...,
66 def connection_made(self, transport: transports.BaseTransport) -> None: ...
67 def connection_lost(self, exc: Exception | None) -> None: ...
68 def data_received(self, data: bytes) -> None: ...
69 def eof_received(self) -> bool: ...
74 transport: transports.BaseTransport,
75 protocol: protocols.BaseProtocol,
76 reader: StreamReader | None,
77 loop: events.AbstractEventLoop,
80 def transport(self) -> transports.BaseTransport: ...
81 def write(self, data: bytes) -> None: ...
82 def writelines(self, data: Iterable[bytes]) -> None: ...
83 def write_eof(self) -> None: ...
84 def can_write_eof(self) -> bool: ...
85 def close(self) -> None: ...
86 if sys.version_info >= (3, 7):
87 def is_closing(self) -> bool: ...
88 async def wait_closed(self) -> None: ...
89 def get_extra_info(self, name: str, default: Any = ...) -> Any: ...
90 async def drain(self) -> None: ...
93 def __init__(self, limit: int = ..., loop: events.AbstractEventLoop | None = ...) -> None: ...
94 def exception(self) -> Exception: ...
95 def set_exception(self, exc: Exception) -> None: ...
96 def set_transport(self, transport: transports.BaseTransport) -> None: ...
97 def feed_eof(self) -> None: ...
98 def at_eof(self) -> bool: ...
99 def feed_data(self, data: bytes) -> None: ...
100 async def readline(self) -> bytes: ...
101 async def readuntil(self, separator: bytes = ...) -> bytes: ...
102 async def read(self, n: int = ...) -> bytes: ...
103 async def readexactly(self, n: int) -> bytes: ...
104 def __aiter__(self) -> AsyncIterator[bytes]: ...
105 async def __anext__(self) -> bytes: ...