From 98fea8c600b0a9dda6c24f6844f6c624bc003fc2 Mon Sep 17 00:00:00 2001 From: Christoph Tyralla Date: Fri, 11 Oct 2024 20:31:47 +0200 Subject: [PATCH] Do not report using indirectly deprecated aliases. --- mypy/checker.py | 8 -------- test-data/unit/check-deprecated.test | 10 ++++++---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/mypy/checker.py b/mypy/checker.py index c7c44e41f7d1..ecc714b7d7cd 100644 --- a/mypy/checker.py +++ b/mypy/checker.py @@ -293,19 +293,11 @@ class InstanceDeprecatedVisitor(TypeTraverserVisitor): def __init__(self, typechecker: TypeChecker, context: Context) -> None: self.typechecker = typechecker self.context = context - self.seen_aliases: set[TypeAliasType] = set() def visit_instance(self, t: Instance) -> None: super().visit_instance(t) self.typechecker.check_deprecated(t.type, self.context) - def visit_type_alias_type(self, t: TypeAliasType) -> None: - super().visit_type_alias_type(t) - if t not in self.seen_aliases: - self.seen_aliases.add(t) - if ((alias := t.alias) is not None) and ((target := alias.target) is not None): - target.accept(self) - class TypeChecker(NodeVisitor[None], CheckerPluginInterface): """Mypy type checker. diff --git a/test-data/unit/check-deprecated.test b/test-data/unit/check-deprecated.test index 4ff95fa42d3b..13cebc85513e 100644 --- a/test-data/unit/check-deprecated.test +++ b/test-data/unit/check-deprecated.test @@ -103,7 +103,7 @@ def h() -> None: ... [case testDeprecatedClass] from typing import Callable, List, Optional, Tuple, Union -from typing_extensions import deprecated, TypeAlias +from typing_extensions import deprecated, TypeAlias, TypeVar @deprecated("use C2 instead") class C: ... @@ -141,11 +141,13 @@ x8: List[Optional[Tuple[Union[List[C], int]]]] # N: class __main__.C is depreca x9: Callable[[int], C] # N: class __main__.C is deprecated: use C2 instead x10: Callable[[int, C, int], int] # N: class __main__.C is deprecated: use C2 instead +T = TypeVar("T") A1: TypeAlias = Optional[C] # ToDo -x11: A1 # N: class __main__.C is deprecated: use C2 instead - +x11: A1 A2: TypeAlias = List[Union[A2, C]] # ToDo -x12: A2 # N: class __main__.C is deprecated: use C2 instead +x12: A2 +A3: TypeAlias = List[Optional[T]] +x13: A3[C] # N: class __main__.C is deprecated: use C2 instead [builtins fixtures/tuple.pyi]