1 # Stubs for smtpd (Python 2 and 3)
\r
7 from typing import Any, DefaultDict, List, Optional, Text, Tuple, Type
\r
9 _Address = Tuple[str, int] # (host, port)
\r
12 class SMTPChannel(asynchat.async_chat):
\r
16 if sys.version_info >= (3, 3):
\r
17 command_size_limits: DefaultDict[str, int]
\r
19 if sys.version_info >= (3,):
\r
20 smtp_server: SMTPServer
\r
23 received_lines: List[Text]
\r
32 command_size_limit: int
\r
33 data_size_limit: int
\r
35 if sys.version_info >= (3, 5):
\r
36 enable_SMTPUTF8: bool
\r
38 if sys.version_info >= (3, 3):
\r
40 def max_command_size_limit(self) -> int: ...
\r
42 if sys.version_info >= (3, 5):
\r
43 def __init__(self, server: SMTPServer, conn: socket.socket, addr: Any, data_size_limit: int = ...,
\r
44 map: Optional[asyncore._maptype] = ..., enable_SMTPUTF8: bool = ..., decode_data: bool = ...) -> None: ...
\r
45 elif sys.version_info >= (3, 4):
\r
46 def __init__(self, server: SMTPServer, conn: socket.socket, addr: Any, data_size_limit: int = ...,
\r
47 map: Optional[asyncore._maptype] = ...) -> None: ...
\r
49 def __init__(self, server: SMTPServer, conn: socket.socket, addr: Any, data_size_limit: int = ...) -> None: ...
\r
50 def push(self, msg: bytes) -> None: ...
\r
51 def collect_incoming_data(self, data: bytes) -> None: ...
\r
52 def found_terminator(self) -> None: ...
\r
53 def smtp_HELO(self, arg: str) -> None: ...
\r
54 def smtp_NOOP(self, arg: str) -> None: ...
\r
55 def smtp_QUIT(self, arg: str) -> None: ...
\r
56 def smtp_MAIL(self, arg: str) -> None: ...
\r
57 def smtp_RCPT(self, arg: str) -> None: ...
\r
58 def smtp_RSET(self, arg: str) -> None: ...
\r
59 def smtp_DATA(self, arg: str) -> None: ...
\r
60 if sys.version_info >= (3, 3):
\r
61 def smtp_EHLO(self, arg: str) -> None: ...
\r
62 def smtp_HELP(self, arg: str) -> None: ...
\r
63 def smtp_VRFY(self, arg: str) -> None: ...
\r
64 def smtp_EXPN(self, arg: str) -> None: ...
\r
66 class SMTPServer(asyncore.dispatcher):
\r
67 channel_class: Type[SMTPChannel]
\r
69 data_size_limit: int
\r
70 enable_SMTPUTF8: bool
\r
72 if sys.version_info >= (3, 5):
\r
73 def __init__(self, localaddr: _Address, remoteaddr: _Address,
\r
74 data_size_limit: int = ..., map: Optional[asyncore._maptype] = ...,
\r
75 enable_SMTPUTF8: bool = ..., decode_data: bool = ...) -> None: ...
\r
76 elif sys.version_info >= (3, 4):
\r
77 def __init__(self, localaddr: _Address, remoteaddr: _Address,
\r
78 data_size_limit: int = ..., map: Optional[asyncore._maptype] = ...) -> None: ...
\r
80 def __init__(self, localaddr: _Address, remoteaddr: _Address,
\r
81 data_size_limit: int = ...) -> None: ...
\r
82 def handle_accepted(self, conn: socket.socket, addr: Any) -> None: ...
\r
83 def process_message(self, peer: _Address, mailfrom: str, rcpttos: List[Text], data: str, **kwargs: Any) -> Optional[str]: ...
\r
85 class DebuggingServer(SMTPServer): ...
\r
86 class PureProxy(SMTPServer): ...
\r
87 class MailmanProxy(PureProxy): ...
\r