From dc0bfc588983dff62a0de1cd8263849555dd08f7 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 4 Aug 2020 18:32:38 +0200 Subject: [PATCH] Make FeedParser generic over Message (#4375) --- stdlib/3/email/feedparser.pyi | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/stdlib/3/email/feedparser.pyi b/stdlib/3/email/feedparser.pyi index d68ecc794..ffcf4f0a7 100644 --- a/stdlib/3/email/feedparser.pyi +++ b/stdlib/3/email/feedparser.pyi @@ -1,15 +1,21 @@ -# Stubs for email.feedparser (Python 3.4) - from email.message import Message from email.policy import Policy -from typing import Callable +from typing import Callable, Generic, TypeVar, overload -class FeedParser: - def __init__(self, _factory: Callable[[], Message] = ..., *, policy: Policy = ...) -> None: ... +_M = TypeVar("_M", bound=Message) + +class FeedParser(Generic[_M]): + @overload + def __init__(self: FeedParser[Message], _factory: None = ..., *, policy: Policy = ...) -> None: ... + @overload + def __init__(self, _factory: Callable[[], _M], *, policy: Policy = ...) -> None: ... def feed(self, data: str) -> None: ... - def close(self) -> Message: ... + def close(self) -> _M: ... -class BytesFeedParser: - def __init__(self, _factory: Callable[[], Message] = ..., *, policy: Policy = ...) -> None: ... +class BytesFeedParser(Generic[_M]): + @overload + def __init__(self: BytesFeedParser[Message], _factory: None = ..., *, policy: Policy = ...) -> None: ... + @overload + def __init__(self, _factory: Callable[[], _M], *, policy: Policy = ...) -> None: ... def feed(self, data: bytes) -> None: ... - def close(self) -> Message: ... + def close(self) -> _M: ...