diff --git a/astroid/nodes/node_classes.py b/astroid/nodes/node_classes.py index 0d3a425cd..cfd78e69e 100644 --- a/astroid/nodes/node_classes.py +++ b/astroid/nodes/node_classes.py @@ -1022,7 +1022,7 @@ def get_children(self): @decorators.raise_if_nothing_inferred def _infer( - self: nodes.Arguments, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[InferenceResult]: # pylint: disable-next=import-outside-toplevel from astroid.protocols import _arguments_infer_argname @@ -1441,7 +1441,7 @@ def _infer_augassign( @decorators.raise_if_nothing_inferred @decorators.path_wrapper def _infer( - self: nodes.AugAssign, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[InferenceResult]: return self._filter_operation_errors( self._infer_augassign, context, util.BadBinaryOperationMessage @@ -1556,7 +1556,7 @@ def _infer_binop( @decorators.yes_if_nothing_inferred @decorators.path_wrapper def _infer( - self: nodes.BinOp, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[InferenceResult]: return self._filter_operation_errors( self._infer_binop, context, util.BadBinaryOperationMessage @@ -1633,7 +1633,7 @@ def op_precedence(self) -> int: @decorators.raise_if_nothing_inferred @decorators.path_wrapper def _infer( - self: nodes.BoolOp, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[InferenceResult, None, InferenceErrorInfo | None]: """Infer a boolean operation (and / or / not). @@ -4318,7 +4318,7 @@ def op_precedence(self) -> int: return super().op_precedence() def _infer_unaryop( - self: nodes.UnaryOp, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[ InferenceResult | util.BadUnaryOperationMessage, None, InferenceErrorInfo ]: @@ -4384,7 +4384,7 @@ def _infer_unaryop( @decorators.raise_if_nothing_inferred @decorators.path_wrapper def _infer( - self: nodes.UnaryOp, context: InferenceContext | None = None, **kwargs: Any + self, context: InferenceContext | None = None, **kwargs: Any ) -> Generator[InferenceResult, None, InferenceErrorInfo]: """Infer what an UnaryOp should return when evaluated.""" yield from self._filter_operation_errors( diff --git a/astroid/nodes/scoped_nodes/mixin.py b/astroid/nodes/scoped_nodes/mixin.py index 8874c0691..b3b91769b 100644 --- a/astroid/nodes/scoped_nodes/mixin.py +++ b/astroid/nodes/scoped_nodes/mixin.py @@ -6,7 +6,9 @@ from __future__ import annotations -from typing import TYPE_CHECKING, TypeVar, overload +from typing import TYPE_CHECKING, overload + +from typing_extensions import Self from astroid.exceptions import ParentMissingError from astroid.filter_statements import _filter_stmts @@ -17,8 +19,6 @@ if TYPE_CHECKING: from astroid import nodes -_T = TypeVar("_T") - class LocalsDictNodeNG(_base_nodes.LookupMixIn): """this class provides locals handling common to Module, FunctionDef @@ -46,7 +46,7 @@ def qname(self) -> str: except ParentMissingError: return self.name - def scope(self: _T) -> _T: + def scope(self) -> Self: """The first parent node defining a new scope. :returns: The first parent scope node. diff --git a/astroid/nodes/scoped_nodes/scoped_nodes.py b/astroid/nodes/scoped_nodes/scoped_nodes.py index f232db32b..1e9fea644 100644 --- a/astroid/nodes/scoped_nodes/scoped_nodes.py +++ b/astroid/nodes/scoped_nodes/scoped_nodes.py @@ -15,7 +15,9 @@ import os from collections.abc import Generator, Iterable, Iterator, Sequence from functools import cached_property, lru_cache -from typing import TYPE_CHECKING, Any, ClassVar, Literal, NoReturn, TypeVar +from typing import TYPE_CHECKING, Any, ClassVar, Literal, NoReturn + +from typing_extensions import Self from astroid import bases, protocols, util from astroid.context import ( @@ -62,8 +64,6 @@ {"classmethod", "staticmethod", "builtins.classmethod", "builtins.staticmethod"} ) -_T = TypeVar("_T") - def _c3_merge(sequences, cls, context): """Merges MROs in *sequences* to a single MRO using the C3 algorithm. @@ -587,7 +587,7 @@ def bool_value(self, context: InferenceContext | None = None) -> bool: def get_children(self): yield from self.body - def frame(self: _T, *, future: Literal[None, True] = None) -> _T: + def frame(self, *, future: Literal[None, True] = None) -> Self: """The node's frame node. A frame node is a :class:`Module`, :class:`FunctionDef`, @@ -1030,7 +1030,7 @@ def get_children(self): yield self.args yield self.body - def frame(self: _T, *, future: Literal[None, True] = None) -> _T: + def frame(self, *, future: Literal[None, True] = None) -> Self: """The node's frame node. A frame node is a :class:`Module`, :class:`FunctionDef`, @@ -1677,7 +1677,7 @@ def scope_lookup( frame = self return frame._scope_lookup(node, name, offset) - def frame(self: _T, *, future: Literal[None, True] = None) -> _T: + def frame(self, *, future: Literal[None, True] = None) -> Self: """The node's frame node. A frame node is a :class:`Module`, :class:`FunctionDef`, @@ -2884,7 +2884,7 @@ def _assign_nodes_in_scope(self): ) return list(itertools.chain.from_iterable(children_assign_nodes)) - def frame(self: _T, *, future: Literal[None, True] = None) -> _T: + def frame(self, *, future: Literal[None, True] = None) -> Self: """The node's frame node. A frame node is a :class:`Module`, :class:`FunctionDef`, diff --git a/astroid/objects.py b/astroid/objects.py index 73670ec55..85ae00800 100644 --- a/astroid/objects.py +++ b/astroid/objects.py @@ -15,7 +15,9 @@ from collections.abc import Generator, Iterator from functools import cached_property -from typing import Any, Literal, NoReturn, TypeVar +from typing import Any, Literal, NoReturn + +from typing_extensions import Self from astroid import bases, util from astroid.context import InferenceContext @@ -30,8 +32,6 @@ from astroid.nodes import node_classes, scoped_nodes from astroid.typing import InferenceResult, SuccessfulInferenceResult -_T = TypeVar("_T") - class FrozenSet(node_classes.BaseContainer): """Class representing a FrozenSet composite node.""" @@ -355,6 +355,6 @@ def infer_call_result( raise InferenceError("Properties are not callable") def _infer( - self: _T, context: InferenceContext | None = None, **kwargs: Any - ) -> Generator[_T]: + self, context: InferenceContext | None = None, **kwargs: Any + ) -> Generator[Self]: yield self