Format: application/octet-stream
⬇ Download File (7.9 KB)
   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