mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 12:44:28 +08:00
Make mailbox.MailDir abstract (#7201)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import email.message
|
||||
import sys
|
||||
from _typeshed import Self, StrOrBytesPath
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from types import TracebackType
|
||||
from typing import IO, Any, AnyStr, Callable, Generic, Iterable, Iterator, Mapping, Protocol, Sequence, TypeVar, Union, overload
|
||||
from typing_extensions import Literal
|
||||
@@ -27,21 +28,28 @@ class Mailbox(Generic[_MessageT]):
|
||||
def __init__(
|
||||
self, path: StrOrBytesPath, factory: Callable[[IO[Any]], _MessageT] | None = ..., create: bool = ...
|
||||
) -> 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 = ...) -> _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]: ...
|
||||
@@ -49,7 +57,9 @@ class Mailbox(Generic[_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
|
||||
@@ -58,9 +68,13 @@ class Mailbox(Generic[_MessageT]):
|
||||
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: ...
|
||||
@abstractmethod
|
||||
def flush(self) -> None: ...
|
||||
@abstractmethod
|
||||
def lock(self) -> None: ...
|
||||
@abstractmethod
|
||||
def unlock(self) -> None: ...
|
||||
@abstractmethod
|
||||
def close(self) -> None: ...
|
||||
if sys.version_info >= (3, 9):
|
||||
def __class_getitem__(cls, item: Any) -> GenericAlias: ...
|
||||
@@ -71,7 +85,19 @@ class Maildir(Mailbox[MaildirMessage]):
|
||||
def __init__(
|
||||
self, dirname: StrOrBytesPath, factory: Callable[[IO[Any]], MaildirMessage] | None = ..., create: bool = ...
|
||||
) -> 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]: ...
|
||||
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: ...
|
||||
@@ -79,9 +105,20 @@ class Maildir(Mailbox[MaildirMessage]):
|
||||
def clean(self) -> None: ...
|
||||
def next(self) -> str | None: ...
|
||||
|
||||
class _singlefileMailbox(Mailbox[_MessageT]): ...
|
||||
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 = ...) -> _PartialFile[bytes]: ...
|
||||
def get_bytes(self, key: str, from_: bool = ...) -> bytes: ...
|
||||
def get_string(self, key: str, from_: bool = ...) -> str: ...
|
||||
@@ -100,7 +137,19 @@ class MH(Mailbox[MHMessage]):
|
||||
def __init__(
|
||||
self, path: StrOrBytesPath, factory: Callable[[IO[Any]], MHMessage] | None = ..., create: bool = ...
|
||||
) -> 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: StrOrBytesPath) -> MH: ...
|
||||
def add_folder(self, folder: StrOrBytesPath) -> MH: ...
|
||||
@@ -113,6 +162,8 @@ class Babyl(_singlefileMailbox[BabylMessage]):
|
||||
def __init__(
|
||||
self, path: StrOrBytesPath, factory: Callable[[IO[Any]], BabylMessage] | None = ..., create: bool = ...
|
||||
) -> 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]: ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user