-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Copy pathmailbox.pyi
259 lines (233 loc) · 10.5 KB
/
mailbox.pyi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
import email.message
import io
import sys
from _typeshed import StrPath, SupportsNoArgReadline, SupportsRead
from abc import ABCMeta, abstractmethod
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
from types import GenericAlias, TracebackType
from typing import IO, Any, AnyStr, Generic, Literal, Protocol, TypeVar, overload
from typing_extensions import Self, TypeAlias
__all__ = [
"Mailbox",
"Maildir",
"mbox",
"MH",
"Babyl",
"MMDF",
"Message",
"MaildirMessage",
"mboxMessage",
"MHMessage",
"BabylMessage",
"MMDFMessage",
"Error",
"NoSuchMailboxError",
"NotEmptyError",
"ExternalClashError",
"FormatError",
]
_T = TypeVar("_T")
_MessageT = TypeVar("_MessageT", bound=Message)
class _SupportsReadAndReadline(SupportsRead[bytes], SupportsNoArgReadline[bytes], Protocol): ...
_MessageData: TypeAlias = email.message.Message | bytes | str | io.StringIO | _SupportsReadAndReadline
class _HasIteritems(Protocol):
def iteritems(self) -> Iterator[tuple[str, _MessageData]]: ...
class _HasItems(Protocol):
def items(self) -> Iterator[tuple[str, _MessageData]]: ...
linesep: bytes
class Mailbox(Generic[_MessageT]):
_path: str # undocumented
_factory: Callable[[IO[Any]], _MessageT] | None # undocumented
@overload
def __init__(self, path: StrPath, factory: Callable[[IO[Any]], _MessageT], create: bool = True) -> None: ...
@overload
def __init__(self, path: StrPath, factory: None = None, create: bool = True) -> None: ...
@abstractmethod
def add(self, message: _MessageData) -> str: ...
@abstractmethod
def remove(self, key: str) -> None: ...
def __delitem__(self, key: str) -> None: ...
def discard(self, key: str) -> None: ...
@abstractmethod
def __setitem__(self, key: str, message: _MessageData) -> None: ...
@overload
def get(self, key: str, default: None = None) -> _MessageT | None: ...
@overload
def get(self, key: str, default: _T) -> _MessageT | _T: ...
def __getitem__(self, key: str) -> _MessageT: ...
@abstractmethod
def get_message(self, key: str) -> _MessageT: ...
def get_string(self, key: str) -> str: ...
@abstractmethod
def get_bytes(self, key: str) -> bytes: ...
# As '_ProxyFile' doesn't implement the full IO spec, and BytesIO is incompatible with it, get_file return is Any here
@abstractmethod
def get_file(self, key: str) -> Any: ...
@abstractmethod
def iterkeys(self) -> Iterator[str]: ...
def keys(self) -> list[str]: ...
def itervalues(self) -> Iterator[_MessageT]: ...
def __iter__(self) -> Iterator[_MessageT]: ...
def values(self) -> list[_MessageT]: ...
def iteritems(self) -> Iterator[tuple[str, _MessageT]]: ...
def items(self) -> list[tuple[str, _MessageT]]: ...
@abstractmethod
def __contains__(self, key: str) -> bool: ...
@abstractmethod
def __len__(self) -> int: ...
def clear(self) -> None: ...
@overload
def pop(self, key: str, default: None = None) -> _MessageT | None: ...
@overload
def pop(self, key: str, default: _T) -> _MessageT | _T: ...
def popitem(self) -> tuple[str, _MessageT]: ...
def update(self, arg: _HasIteritems | _HasItems | Iterable[tuple[str, _MessageData]] | None = None) -> None: ...
@abstractmethod
def flush(self) -> None: ...
@abstractmethod
def lock(self) -> None: ...
@abstractmethod
def unlock(self) -> None: ...
@abstractmethod
def close(self) -> None: ...
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
class Maildir(Mailbox[MaildirMessage]):
colon: str
def __init__(
self, dirname: StrPath, factory: Callable[[IO[Any]], MaildirMessage] | None = None, create: bool = True
) -> None: ...
def add(self, message: _MessageData) -> str: ...
def remove(self, key: str) -> None: ...
def __setitem__(self, key: str, message: _MessageData) -> None: ...
def get_message(self, key: str) -> MaildirMessage: ...
def get_bytes(self, key: str) -> bytes: ...
def get_file(self, key: str) -> _ProxyFile[bytes]: ...
if sys.version_info >= (3, 13):
def get_info(self, key: str) -> str: ...
def set_info(self, key: str, info: str) -> None: ...
def get_flags(self, key: str) -> str: ...
def set_flags(self, key: str, flags: str) -> None: ...
def add_flag(self, key: str, flag: str) -> None: ...
def remove_flag(self, key: str, flag: str) -> None: ...
def iterkeys(self) -> Iterator[str]: ...
def __contains__(self, key: str) -> bool: ...
def __len__(self) -> int: ...
def flush(self) -> None: ...
def lock(self) -> None: ...
def unlock(self) -> None: ...
def close(self) -> None: ...
def list_folders(self) -> list[str]: ...
def get_folder(self, folder: str) -> Maildir: ...
def add_folder(self, folder: str) -> Maildir: ...
def remove_folder(self, folder: str) -> None: ...
def clean(self) -> None: ...
def next(self) -> str | None: ...
class _singlefileMailbox(Mailbox[_MessageT], metaclass=ABCMeta):
def add(self, message: _MessageData) -> str: ...
def remove(self, key: str) -> None: ...
def __setitem__(self, key: str, message: _MessageData) -> None: ...
def iterkeys(self) -> Iterator[str]: ...
def __contains__(self, key: str) -> bool: ...
def __len__(self) -> int: ...
def lock(self) -> None: ...
def unlock(self) -> None: ...
def flush(self) -> None: ...
def close(self) -> None: ...
class _mboxMMDF(_singlefileMailbox[_MessageT]):
def get_message(self, key: str) -> _MessageT: ...
def get_file(self, key: str, from_: bool = False) -> _PartialFile[bytes]: ...
def get_bytes(self, key: str, from_: bool = False) -> bytes: ...
def get_string(self, key: str, from_: bool = False) -> str: ...
class mbox(_mboxMMDF[mboxMessage]):
def __init__(self, path: StrPath, factory: Callable[[IO[Any]], mboxMessage] | None = None, create: bool = True) -> None: ...
class MMDF(_mboxMMDF[MMDFMessage]):
def __init__(self, path: StrPath, factory: Callable[[IO[Any]], MMDFMessage] | None = None, create: bool = True) -> None: ...
class MH(Mailbox[MHMessage]):
def __init__(self, path: StrPath, factory: Callable[[IO[Any]], MHMessage] | None = None, create: bool = True) -> None: ...
def add(self, message: _MessageData) -> str: ...
def remove(self, key: str) -> None: ...
def __setitem__(self, key: str, message: _MessageData) -> None: ...
def get_message(self, key: str) -> MHMessage: ...
def get_bytes(self, key: str) -> bytes: ...
def get_file(self, key: str) -> _ProxyFile[bytes]: ...
def iterkeys(self) -> Iterator[str]: ...
def __contains__(self, key: str) -> bool: ...
def __len__(self) -> int: ...
def flush(self) -> None: ...
def lock(self) -> None: ...
def unlock(self) -> None: ...
def close(self) -> None: ...
def list_folders(self) -> list[str]: ...
def get_folder(self, folder: StrPath) -> MH: ...
def add_folder(self, folder: StrPath) -> MH: ...
def remove_folder(self, folder: StrPath) -> None: ...
def get_sequences(self) -> dict[str, list[int]]: ...
def set_sequences(self, sequences: Mapping[str, Sequence[int]]) -> None: ...
def pack(self) -> None: ...
class Babyl(_singlefileMailbox[BabylMessage]):
def __init__(self, path: StrPath, factory: Callable[[IO[Any]], BabylMessage] | None = None, create: bool = True) -> None: ...
def get_message(self, key: str) -> BabylMessage: ...
def get_bytes(self, key: str) -> bytes: ...
def get_file(self, key: str) -> IO[bytes]: ...
def get_labels(self) -> list[str]: ...
class Message(email.message.Message):
def __init__(self, message: _MessageData | None = None) -> None: ...
class MaildirMessage(Message):
def get_subdir(self) -> str: ...
def set_subdir(self, subdir: Literal["new", "cur"]) -> None: ...
def get_flags(self) -> str: ...
def set_flags(self, flags: Iterable[str]) -> None: ...
def add_flag(self, flag: str) -> None: ...
def remove_flag(self, flag: str) -> None: ...
def get_date(self) -> int: ...
def set_date(self, date: float) -> None: ...
def get_info(self) -> str: ...
def set_info(self, info: str) -> None: ...
class _mboxMMDFMessage(Message):
def get_from(self) -> str: ...
def set_from(self, from_: str, time_: bool | tuple[int, int, int, int, int, int, int, int, int] | None = None) -> None: ...
def get_flags(self) -> str: ...
def set_flags(self, flags: Iterable[str]) -> None: ...
def add_flag(self, flag: str) -> None: ...
def remove_flag(self, flag: str) -> None: ...
class mboxMessage(_mboxMMDFMessage): ...
class MHMessage(Message):
def get_sequences(self) -> list[str]: ...
def set_sequences(self, sequences: Iterable[str]) -> None: ...
def add_sequence(self, sequence: str) -> None: ...
def remove_sequence(self, sequence: str) -> None: ...
class BabylMessage(Message):
def get_labels(self) -> list[str]: ...
def set_labels(self, labels: Iterable[str]) -> None: ...
def add_label(self, label: str) -> None: ...
def remove_label(self, label: str) -> None: ...
def get_visible(self) -> Message: ...
def set_visible(self, visible: _MessageData) -> None: ...
def update_visible(self) -> None: ...
class MMDFMessage(_mboxMMDFMessage): ...
class _ProxyFile(Generic[AnyStr]):
def __init__(self, f: IO[AnyStr], pos: int | None = None) -> None: ...
def read(self, size: int | None = None) -> AnyStr: ...
def read1(self, size: int | None = None) -> AnyStr: ...
def readline(self, size: int | None = None) -> AnyStr: ...
def readlines(self, sizehint: int | None = None) -> list[AnyStr]: ...
def __iter__(self) -> Iterator[AnyStr]: ...
def tell(self) -> int: ...
def seek(self, offset: int, whence: int = 0) -> None: ...
def close(self) -> None: ...
def __enter__(self) -> Self: ...
def __exit__(self, exc_type: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None) -> None: ...
def readable(self) -> bool: ...
def writable(self) -> bool: ...
def seekable(self) -> bool: ...
def flush(self) -> None: ...
@property
def closed(self) -> bool: ...
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
class _PartialFile(_ProxyFile[AnyStr]):
def __init__(self, f: IO[AnyStr], start: int | None = None, stop: int | None = None) -> None: ...
class Error(Exception): ...
class NoSuchMailboxError(Error): ...
class NotEmptyError(Error): ...
class ExternalClashError(Error): ...
class FormatError(Error): ...