From 6b628b176e4482b4f56aa21e37a9ed3155260751 Mon Sep 17 00:00:00 2001 From: Pierre Sassoulas Date: Mon, 15 Dec 2025 22:28:03 +0100 Subject: [PATCH] [typing] Add sys check guard for typing.Self for python < 3.11 (#2911) Closes #2910 (cherry picked from commit 66df47f39e41b1820132e10c04fca6c8d4b3f644) --- astroid/nodes/scoped_nodes/mixin.py | 7 +++++-- astroid/nodes/scoped_nodes/scoped_nodes.py | 8 ++++++-- astroid/objects.py | 8 ++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/astroid/nodes/scoped_nodes/mixin.py b/astroid/nodes/scoped_nodes/mixin.py index b3b91769b..d10d31744 100644 --- a/astroid/nodes/scoped_nodes/mixin.py +++ b/astroid/nodes/scoped_nodes/mixin.py @@ -6,16 +6,19 @@ from __future__ import annotations +import sys from typing import TYPE_CHECKING, overload -from typing_extensions import Self - from astroid.exceptions import ParentMissingError from astroid.filter_statements import _filter_stmts from astroid.nodes import _base_nodes, scoped_nodes from astroid.nodes.scoped_nodes.utils import builtin_lookup from astroid.typing import InferenceResult, SuccessfulInferenceResult +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self if TYPE_CHECKING: from astroid import nodes diff --git a/astroid/nodes/scoped_nodes/scoped_nodes.py b/astroid/nodes/scoped_nodes/scoped_nodes.py index 1e9fea644..f9b06bf6a 100644 --- a/astroid/nodes/scoped_nodes/scoped_nodes.py +++ b/astroid/nodes/scoped_nodes/scoped_nodes.py @@ -13,12 +13,11 @@ import io import itertools import os +import sys from collections.abc import Generator, Iterable, Iterator, Sequence from functools import cached_property, lru_cache from typing import TYPE_CHECKING, Any, ClassVar, Literal, NoReturn -from typing_extensions import Self - from astroid import bases, protocols, util from astroid.context import ( CallContext, @@ -52,6 +51,11 @@ SuccessfulInferenceResult, ) +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self + if TYPE_CHECKING: from astroid import nodes, objects from astroid.nodes import Arguments, Const, NodeNG diff --git a/astroid/objects.py b/astroid/objects.py index 85ae00800..2c96815bf 100644 --- a/astroid/objects.py +++ b/astroid/objects.py @@ -13,12 +13,11 @@ from __future__ import annotations +import sys from collections.abc import Generator, Iterator from functools import cached_property from typing import Any, Literal, NoReturn -from typing_extensions import Self - from astroid import bases, util from astroid.context import InferenceContext from astroid.exceptions import ( @@ -32,6 +31,11 @@ from astroid.nodes import node_classes, scoped_nodes from astroid.typing import InferenceResult, SuccessfulInferenceResult +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self + class FrozenSet(node_classes.BaseContainer): """Class representing a FrozenSet composite node."""