From c50cb066e02d6b53d4a261c147086ce425f81289 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Thu, 3 Mar 2022 15:22:40 +0000 Subject: [PATCH] Improve two classes which are namedtuples at runtime, but cannot be namedtuples in typeshed (#7429) --- stdlib/concurrent/futures/_base.pyi | 6 ++++-- stdlib/urllib/parse.pyi | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/stdlib/concurrent/futures/_base.pyi b/stdlib/concurrent/futures/_base.pyi index 7edcef223..cf822fc55 100644 --- a/stdlib/concurrent/futures/_base.pyi +++ b/stdlib/concurrent/futures/_base.pyi @@ -79,8 +79,10 @@ def as_completed(fs: Iterable[Future[_T]], timeout: float | None = ...) -> Itera # Ideally this would be a namedtuple, but mypy doesn't support generic tuple types. See #1976 class DoneAndNotDoneFutures(Sequence[set[Future[_T]]]): - done: set[Future[_T]] - not_done: set[Future[_T]] + @property + def done(self) -> set[Future[_T]]: ... + @property + def not_done(self) -> set[Future[_T]]: ... def __new__(_cls, done: set[Future[_T]], not_done: set[Future[_T]]) -> DoneAndNotDoneFutures[_T]: ... def __len__(self) -> int: ... @overload diff --git a/stdlib/urllib/parse.pyi b/stdlib/urllib/parse.pyi index ed5b127b5..39be46add 100644 --- a/stdlib/urllib/parse.pyi +++ b/stdlib/urllib/parse.pyi @@ -64,8 +64,10 @@ class _NetlocResultMixinStr(_NetlocResultMixinBase[str], _ResultMixinStr): ... class _NetlocResultMixinBytes(_NetlocResultMixinBase[bytes], _ResultMixinBytes): ... class _DefragResultBase(tuple[Any, ...], Generic[AnyStr]): - url: AnyStr - fragment: AnyStr + @property + def url(self) -> AnyStr: ... + @property + def fragment(self) -> AnyStr: ... class _SplitResultBase(NamedTuple): scheme: str