--- /dev/null
+import sys\r
+from typing import Any, Awaitable, Callable, Generator, Iterable, List, Optional, Tuple, Union\r
+\r
+from . import coroutines\r
+from . import events\r
+from . import protocols\r
+from . import transports\r
+\r
+_ClientConnectedCallback = Callable[[StreamReader, StreamWriter], Optional[Awaitable[None]]]\r
+\r
+\r
+__all__: List[str]\r
+\r
+class IncompleteReadError(EOFError):\r
+ expected = ... # type: Optional[int]\r
+ partial = ... # type: bytes\r
+ def __init__(self, partial: bytes, expected: Optional[int]) -> None: ...\r
+\r
+class LimitOverrunError(Exception):\r
+ consumed = ... # type: int\r
+ def __init__(self, message: str, consumed: int) -> None: ...\r
+\r
+@coroutines.coroutine\r
+def open_connection(\r
+ host: str = ...,\r
+ port: Union[int, str] = ...,\r
+ *,\r
+ loop: Optional[events.AbstractEventLoop] = ...,\r
+ limit: int = ...,\r
+ **kwds: Any\r
+) -> Generator[Any, None, Tuple[StreamReader, StreamWriter]]: ...\r
+\r
+@coroutines.coroutine\r
+def start_server(\r
+ client_connected_cb: _ClientConnectedCallback,\r
+ host: Optional[str] = ...,\r
+ port: Optional[Union[int, str]] = ...,\r
+ *,\r
+ loop: Optional[events.AbstractEventLoop] = ...,\r
+ limit: int = ...,\r
+ **kwds: Any\r
+) -> Generator[Any, None, events.AbstractServer]: ...\r
+\r
+if sys.platform != 'win32':\r
+ @coroutines.coroutine\r
+ def open_unix_connection(\r
+ path: str = ...,\r
+ *,\r
+ loop: Optional[events.AbstractEventLoop] = ...,\r
+ limit: int = ...,\r
+ **kwds: Any\r
+ ) -> Generator[Any, None, Tuple[StreamReader, StreamWriter]]: ...\r
+\r
+ @coroutines.coroutine\r
+ def start_unix_server(\r
+ client_connected_cb: _ClientConnectedCallback,\r
+ path: str = ...,\r
+ *,\r
+ loop: Optional[events.AbstractEventLoop] = ...,\r
+ limit: int = ...,\r
+ **kwds: Any) -> Generator[Any, None, events.AbstractServer]: ...\r
+\r
+class FlowControlMixin(protocols.Protocol): ...\r
+\r
+class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):\r
+ def __init__(self,\r
+ stream_reader: StreamReader,\r
+ client_connected_cb: _ClientConnectedCallback = ...,\r
+ loop: Optional[events.AbstractEventLoop] = ...) -> None: ...\r
+ def connection_made(self, transport: transports.BaseTransport) -> None: ...\r
+ def connection_lost(self, exc: Exception) -> None: ...\r
+ def data_received(self, data: bytes) -> None: ...\r
+ def eof_received(self) -> bool: ...\r
+\r
+class StreamWriter:\r
+ def __init__(self,\r
+ transport: transports.BaseTransport,\r
+ protocol: protocols.BaseProtocol,\r
+ reader: StreamReader,\r
+ loop: events.AbstractEventLoop) -> None: ...\r
+ @property\r
+ def transport(self) -> transports.BaseTransport: ...\r
+ def write(self, data: bytes) -> None: ...\r
+ def writelines(self, data: Iterable[bytes]) -> None: ...\r
+ def write_eof(self) -> None: ...\r
+ def can_write_eof(self) -> bool: ...\r
+ def close(self) -> None: ...\r
+ def get_extra_info(self, name: str, default: Any = ...) -> Any: ...\r
+ @coroutines.coroutine\r
+ def drain(self) -> Generator[Any, None, None]: ...\r
+\r
+class StreamReader:\r
+ def __init__(self,\r
+ limit: int = ...,\r
+ loop: Optional[events.AbstractEventLoop] = ...) -> None: ...\r
+ def exception(self) -> Exception: ...\r
+ def set_exception(self, exc: Exception) -> None: ...\r
+ def set_transport(self, transport: transports.BaseTransport) -> None: ...\r
+ def feed_eof(self) -> None: ...\r
+ def at_eof(self) -> bool: ...\r
+ def feed_data(self, data: bytes) -> None: ...\r
+ @coroutines.coroutine\r
+ def readline(self) -> Generator[Any, None, bytes]: ...\r
+ @coroutines.coroutine\r
+ def readuntil(self, separator: bytes = ...) -> Generator[Any, None, bytes]: ...\r
+ @coroutines.coroutine\r
+ def read(self, n: int = ...) -> Generator[Any, None, bytes]: ...\r
+ @coroutines.coroutine\r
+ def readexactly(self, n: int) -> Generator[Any, None, bytes]: ...\r