From ea97a9e9e75af858c5d876ca4559f570ffc481f8 Mon Sep 17 00:00:00 2001 From: Andrey Tikhonov <17@itishka.org> Date: Thu, 20 Feb 2025 15:24:57 +0100 Subject: [PATCH 1/2] backport typing fixes from dishka https://github.com/reagento/dishka/pull/370/files --- src/adaptix/_internal/type_tools/basic_utils.py | 6 +++--- src/adaptix/_internal/type_tools/generic_resolver.py | 3 ++- src/adaptix/_internal/type_tools/normalize_type.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/adaptix/_internal/type_tools/basic_utils.py b/src/adaptix/_internal/type_tools/basic_utils.py index 38dc6b0b..005aca82 100644 --- a/src/adaptix/_internal/type_tools/basic_utils.py +++ b/src/adaptix/_internal/type_tools/basic_utils.py @@ -43,11 +43,11 @@ def is_named_tuple_class(tp) -> bool: ) -def is_protocol(tp): +def is_protocol(tp: object) -> bool: if not isinstance(tp, type): return False - return Protocol in tp.__bases__ + return Protocol in tp.__bases__ # type: ignore[comparison-overlap] def create_union(args: tuple): @@ -64,7 +64,7 @@ def is_user_defined_generic(tp: TypeHint) -> bool: bool(get_type_vars(tp)) and ( is_subclass_soft(strip_alias(tp), Generic) - or isinstance(tp, typing.TypeAliasType) # type: ignore[attr-defined] + or isinstance(tp, typing.TypeAliasType) # type: ignore[attr-defined, unused-ignore] ) ) else: diff --git a/src/adaptix/_internal/type_tools/generic_resolver.py b/src/adaptix/_internal/type_tools/generic_resolver.py index 3f8c7347..65b21057 100644 --- a/src/adaptix/_internal/type_tools/generic_resolver.py +++ b/src/adaptix/_internal/type_tools/generic_resolver.py @@ -50,7 +50,8 @@ def _get_members_of_parametrized_generic(self, parametrized_generic) -> MembersS def _unpack_args(self, args): if HAS_UNPACK and any(strip_alias(arg) == typing.Unpack for arg in args): - return tuple(arg.source for arg in normalize_type(tuple[args]).args) + subscribed = tuple[args] # type: ignore[valid-type] + return tuple(arg.source for arg in normalize_type(subscribed).args) return args def _get_type_var_to_actual(self, type_vars, args): diff --git a/src/adaptix/_internal/type_tools/normalize_type.py b/src/adaptix/_internal/type_tools/normalize_type.py index 444dd4d8..dcf4ed0d 100644 --- a/src/adaptix/_internal/type_tools/normalize_type.py +++ b/src/adaptix/_internal/type_tools/normalize_type.py @@ -727,7 +727,7 @@ def _norm_callable(self, tp, origin, args): ) if args[0] is Ellipsis: - call_args = ... + call_args: Any = ... elif isinstance(args[0], list): call_args = self._norm_iter(args[0]) if HAS_TV_TUPLE: From 898471853fb8b27ee8f0d2e42e0f74ae5b194558 Mon Sep 17 00:00:00 2001 From: Andrey Tikhonov <17@itishka.org> Date: Thu, 20 Feb 2025 15:27:47 +0100 Subject: [PATCH 2/2] bump mypy --- requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/dev.txt b/requirements/dev.txt index 6121bedb..b56d18b1 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -118,7 +118,7 @@ mdurl==0.1.2 # via markdown-it-py msgspec==0.18.4 ; implementation_name != 'pypy' # via -r requirements/raw/bench.txt -mypy==1.14.0 +mypy==1.15.0 # via -r requirements/raw/lint.txt mypy-extensions==1.0.0 # via mypy