--- /dev/null
+from abc import abstractmethod\r
+import asyncore\r
+import socket\r
+import sys\r
+from typing import Optional, Sequence, Tuple, Union\r
+\r
+\r
+class simple_producer:\r
+ def __init__(self, data: bytes, buffer_size: int = ...) -> None: ...\r
+ def more(self) -> bytes: ...\r
+\r
+class async_chat(asyncore.dispatcher):\r
+ ac_in_buffer_size = ... # type: int\r
+ ac_out_buffer_size = ... # type: int\r
+ def __init__(self, sock: Optional[socket.socket] = ..., map: Optional[asyncore._maptype] = ...) -> None: ...\r
+\r
+ @abstractmethod\r
+ def collect_incoming_data(self, data: bytes) -> None: ...\r
+ @abstractmethod\r
+ def found_terminator(self) -> None: ...\r
+ def set_terminator(self, term: Union[bytes, int, None]) -> None: ...\r
+ def get_terminator(self) -> Union[bytes, int, None]: ...\r
+ def handle_read(self) -> None: ...\r
+ def handle_write(self) -> None: ...\r
+ def handle_close(self) -> None: ...\r
+ def push(self, data: bytes) -> None: ...\r
+ def push_with_producer(self, producer: simple_producer) -> None: ...\r
+ def readable(self) -> bool: ...\r
+ def writable(self) -> bool: ...\r
+ def close_when_done(self) -> None: ...\r
+ def initiate_send(self) -> None: ...\r
+ def discard_buffers(self) -> None: ...\r
+\r
+if sys.version_info < (3, 0):\r
+ class fifo:\r
+ def __init__(self, list: Sequence[Union[bytes, simple_producer]] = ...) -> None: ...\r
+ def __len__(self) -> int: ...\r
+ def is_empty(self) -> bool: ...\r
+ def first(self) -> bytes: ...\r
+ def push(self, data: Union[bytes, simple_producer]) -> None: ...\r
+ def pop(self) -> Tuple[int, bytes]: ...\r