Format: application/octet-stream
1 import email.message
2 import sys
3 from _typeshed import AnyPath
4 from types import TracebackType
5 from typing import (
6 IO,
7 Any,
8 AnyStr,
9 Callable,
10 Dict,
11 Generic,
12 Iterable,
13 Iterator,
14 List,
15 Mapping,
16 Optional,
17 Protocol,
18 Sequence,
19 Text,
20 Tuple,
21 Type,
22 TypeVar,
23 Union,
24 overload,
25 )
26 from typing_extensions import Literal
27
28 if sys.version_info >= (3, 9):
29 from types import GenericAlias
30
31 _T = TypeVar("_T")
32 _MessageType = TypeVar("_MessageType", bound=Message)
33 _MessageData = Union[email.message.Message, bytes, str, IO[str], IO[bytes]]
34
35 class _HasIteritems(Protocol):
36 def iteritems(self) -> Iterator[Tuple[str, _MessageData]]: ...
37
38 class _HasItems(Protocol):
39 def items(self) -> Iterator[Tuple[str, _MessageData]]: ...
40
41 linesep: bytes
42
43 class Mailbox(Generic[_MessageType]):
44
45 _path: Union[bytes, str] # undocumented
46 _factory: Optional[Callable[[IO[Any]], _MessageType]] # undocumented
47 def __init__(self, path: AnyPath, factory: Optional[Callable[[IO[Any]], _MessageType]] = ..., create: bool = ...) -> None: ...
48 def add(self, message: _MessageData) -> str: ...
49 def remove(self, key: str) -> None: ...
50 def __delitem__(self, key: str) -> None: ...
51 def discard(self, key: str) -> None: ...
52 def __setitem__(self, key: str, message: _MessageData) -> None: ...
53 @overload
54 def get(self, key: str, default: None = ...) -> Optional[_MessageType]: ...
55 @overload
56 def get(self, key: str, default: _T) -> Union[_MessageType, _T]: ...
57 def __getitem__(self, key: str) -> _MessageType: ...
58 def get_message(self, key: str) -> _MessageType: ...
59 def get_string(self, key: str) -> str: ...
60 def get_bytes(self, key: str) -> bytes: ...
61 # As '_ProxyFile' doesn't implement the full IO spec, and BytesIO is incompatible with it, get_file return is Any here
62 def get_file(self, key: str) -> Any: ...
63 def iterkeys(self) -> Iterator[str]: ...
64 def keys(self) -> List[str]: ...
65 def itervalues(self) -> Iterator[_MessageType]: ...
66 def __iter__(self) -> Iterator[_MessageType]: ...
67 def values(self) -> List[_MessageType]: ...
68 def iteritems(self) -> Iterator[Tuple[str, _MessageType]]: ...
69 def items(self) -> List[Tuple[str, _MessageType]]: ...
70 def __contains__(self, key: str) -> bool: ...
71 def __len__(self) -> int: ...
72 def clear(self) -> None: ...
73 @overload
74 def pop(self, key: str, default: None = ...) -> Optional[_MessageType]: ...
75 @overload
76 def pop(self, key: str, default: _T = ...) -> Union[_MessageType, _T]: ...
77 def popitem(self) -> Tuple[str, _MessageType]: ...
78 def update(self, arg: Optional[Union[_HasIteritems, _HasItems, Iterable[Tuple[str, _MessageData]]]] = ...) -> None: ...
79 def flush(self) -> None: ...
80 def lock(self) -> None: ...
81 def unlock(self) -> None: ...
82 def close(self) -> None: ...
83 if sys.version_info >= (3, 9):
84 def __class_getitem__(cls, item: Any) -> GenericAlias: ...
85
86 class Maildir(Mailbox[MaildirMessage]):
87
88 colon: str
89 def __init__(
90 self, dirname: AnyPath, factory: Optional[Callable[[IO[Any]], MaildirMessage]] = ..., create: bool = ...
91 ) -> None: ...
92 def get_file(self, key: str) -> _ProxyFile[bytes]: ...
93 def list_folders(self) -> List[str]: ...
94 def get_folder(self, folder: Text) -> Maildir: ...
95 def add_folder(self, folder: Text) -> Maildir: ...
96 def remove_folder(self, folder: Text) -> None: ...
97 def clean(self) -> None: ...
98 def next(self) -> Optional[str]: ...
99
100 class _singlefileMailbox(Mailbox[_MessageType]): ...
101
102 class _mboxMMDF(_singlefileMailbox[_MessageType]):
103 def get_file(self, key: str) -> _PartialFile[bytes]: ...
104
105 class mbox(_mboxMMDF[mboxMessage]):
106 def __init__(
107 self, dirname: AnyPath, factory: Optional[Callable[[IO[Any]], mboxMessage]] = ..., create: bool = ...
108 ) -> None: ...
109
110 class MMDF(_mboxMMDF[MMDFMessage]):
111 def __init__(
112 self, dirname: AnyPath, factory: Optional[Callable[[IO[Any]], MMDFMessage]] = ..., create: bool = ...
113 ) -> None: ...
114
115 class MH(Mailbox[MHMessage]):
116 def __init__(self, dirname: AnyPath, factory: Optional[Callable[[IO[Any]], MHMessage]] = ..., create: bool = ...) -> None: ...
117 def get_file(self, key: str) -> _ProxyFile[bytes]: ...
118 def list_folders(self) -> List[str]: ...
119 def get_folder(self, folder: AnyPath) -> MH: ...
120 def add_folder(self, folder: AnyPath) -> MH: ...
121 def remove_folder(self, folder: AnyPath) -> None: ...
122 def get_sequences(self) -> Dict[str, List[int]]: ...
123 def set_sequences(self, sequences: Mapping[str, Sequence[int]]) -> None: ...
124 def pack(self) -> None: ...
125
126 class Babyl(_singlefileMailbox[BabylMessage]):
127 def __init__(
128 self, dirname: AnyPath, factory: Optional[Callable[[IO[Any]], BabylMessage]] = ..., create: bool = ...
129 ) -> None: ...
130 def get_file(self, key: str) -> IO[bytes]: ...
131 def get_labels(self) -> List[str]: ...
132
133 class Message(email.message.Message):
134 def __init__(self, message: Optional[_MessageData] = ...) -> None: ...
135
136 class MaildirMessage(Message):
137 def get_subdir(self) -> str: ...
138 def set_subdir(self, subdir: Literal["new", "cur"]) -> None: ...
139 def get_flags(self) -> str: ...
140 def set_flags(self, flags: Iterable[str]) -> None: ...
141 def add_flag(self, flag: str) -> None: ...
142 def remove_flag(self, flag: str) -> None: ...
143 def get_date(self) -> int: ...
144 def set_date(self, date: float) -> None: ...
145 def get_info(self) -> str: ...
146 def set_info(self, info: str) -> None: ...
147
148 class _mboxMMDFMessage(Message):
149 def get_from(self) -> str: ...
150 def set_from(
151 self, from_: str, time_: Optional[Union[bool, Tuple[int, int, int, int, int, int, int, int, int]]] = ...
152 ) -> None: ...
153 def get_flags(self) -> str: ...
154 def set_flags(self, flags: Iterable[str]) -> None: ...
155 def add_flag(self, flag: str) -> None: ...
156 def remove_flag(self, flag: str) -> None: ...
157
158 class mboxMessage(_mboxMMDFMessage): ...
159
160 class MHMessage(Message):
161 def get_sequences(self) -> List[str]: ...
162 def set_sequences(self, sequences: Iterable[str]) -> None: ...
163 def add_sequence(self, sequence: str) -> None: ...
164 def remove_sequence(self, sequence: str) -> None: ...
165
166 class BabylMessage(Message):
167 def get_labels(self) -> List[str]: ...
168 def set_labels(self, labels: Iterable[str]) -> None: ...
169 def add_label(self, label: str) -> None: ...
170 def remove_label(self, label: str) -> None: ...
171 def get_visible(self) -> Message: ...
172 def set_visible(self, visible: _MessageData) -> None: ...
173 def update_visible(self) -> None: ...
174
175 class MMDFMessage(_mboxMMDFMessage): ...
176
177 class _ProxyFile(Generic[AnyStr]):
178 def __init__(self, f: IO[AnyStr], pos: Optional[int] = ...) -> None: ...
179 def read(self, size: Optional[int] = ...) -> AnyStr: ...
180 def read1(self, size: Optional[int] = ...) -> AnyStr: ...
181 def readline(self, size: Optional[int] = ...) -> AnyStr: ...
182 def readlines(self, sizehint: Optional[int] = ...) -> List[AnyStr]: ...
183 def __iter__(self) -> Iterator[AnyStr]: ...
184 def tell(self) -> int: ...
185 def seek(self, offset: int, whence: int = ...) -> None: ...
186 def close(self) -> None: ...
187 def __enter__(self) -> _ProxyFile[AnyStr]: ...
188 def __exit__(
189 self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType]
190 ) -> None: ...
191 def readable(self) -> bool: ...
192 def writable(self) -> bool: ...
193 def seekable(self) -> bool: ...
194 def flush(self) -> None: ...
195 @property
196 def closed(self) -> bool: ...
197 if sys.version_info >= (3, 9):
198 def __class_getitem__(cls, item: Any) -> GenericAlias: ...
199
200 class _PartialFile(_ProxyFile[AnyStr]):
201 def __init__(self, f: IO[AnyStr], start: Optional[int] = ..., stop: Optional[int] = ...) -> None: ...
202
203 class Error(Exception): ...
204 class NoSuchMailboxError(Error): ...
205 class NotEmptyError(Error): ...
206 class ExternalClashError(Error): ...
207 class FormatError(Error): ...
208