mailbox: Couple small fixes (#3490)

* mailbox: Make stub-only helpers private

These HasIteritems and HasItems protocols don't exist in the real
mailbox module so prefix them with underscore to indicate they are
private.

* mailbox: Fix type of message argument

The Mailbox.add and Mailbox.__setitem__ methods take a message argument
which can be anything that is convertible to a Message.  Fix the
signatures accordingly.
This commit is contained in:
Tuomas Suutari
2019-11-25 03:54:58 +02:00
committed by Jelle Zijlstra
parent 1f0dc6ee05
commit 90004af132

View File

@@ -19,10 +19,10 @@ _T = TypeVar("_T")
_MessageType = TypeVar("_MessageType", bound=Message)
_MessageData = Union[email.message.Message, bytes, str, IO[str], IO[bytes]]
class HasIteritems(Protocol):
class _HasIteritems(Protocol):
def iteritems(self) -> Iterator[Tuple[str, Message]]: ...
class HasItems(Protocol):
class _HasItems(Protocol):
def items(self) -> Iterator[Tuple[str, Message]]: ...
linesep: bytes
@@ -33,11 +33,11 @@ class Mailbox(Generic[_MessageType]):
_factory: Optional[Callable[[IO[Any]], _MessageType]] # undocumented
def __init__(self, path: _PathType, factory: Optional[Callable[[IO[Any]], _MessageType]] = ..., create: bool = ...) -> None: ...
def add(self, message: _MessageType) -> str: ...
def add(self, message: _MessageData) -> str: ...
def remove(self, key: str) -> None: ...
def __delitem__(self, key: str) -> None: ...
def discard(self, key: str) -> None: ...
def __setitem__(self, key: str, message: _MessageType) -> None: ...
def __setitem__(self, key: str, message: _MessageData) -> None: ...
@overload
def get(self, key: str, default: None = ...) -> Optional[_MessageType]: ...
@overload
@@ -63,7 +63,7 @@ class Mailbox(Generic[_MessageType]):
@overload
def pop(self, key: str, default: _T = ...) -> Union[_MessageType, _T]: ...
def popitem(self) -> Tuple[str, _MessageType]: ...
def update(self, arg: Optional[Union[HasIteritems, HasItems, Iterable[Tuple[str, _MessageType]]]] = ...) -> None: ...
def update(self, arg: Optional[Union[_HasIteritems, _HasItems, Iterable[Tuple[str, _MessageType]]]] = ...) -> None: ...
def flush(self) -> None: ...
def lock(self) -> None: ...
def unlock(self) -> None: ...