From 80b67a9c4c9bcbfb8a05a5311e269ae3bd55eec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Thu, 3 Mar 2022 00:55:35 +0100 Subject: Use functools.cached_property for 3.8+ (#1417) --- astroid/objects.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'astroid/objects.py') diff --git a/astroid/objects.py b/astroid/objects.py index 76ade71d..56fbcd7a 100644 --- a/astroid/objects.py +++ b/astroid/objects.py @@ -22,8 +22,10 @@ leads to an inferred FrozenSet: Call(func=Name('frozenset'), args=Tuple(...)) """ +import sys +from typing import TYPE_CHECKING -from astroid import bases, decorators, util +from astroid import bases, util from astroid.exceptions import ( AttributeInferenceError, InferenceError, @@ -35,6 +37,11 @@ from astroid.nodes import node_classes, scoped_nodes objectmodel = util.lazy_import("interpreter.objectmodel") +if sys.version_info >= (3, 8) or TYPE_CHECKING: + from functools import cached_property +else: + from astroid.decorators import cachedproperty as cached_property + class FrozenSet(node_classes.BaseContainer): """class representing a FrozenSet composite node""" @@ -45,7 +52,7 @@ class FrozenSet(node_classes.BaseContainer): def _infer(self, context=None): yield self - @decorators.cachedproperty + @cached_property def _proxied(self): # pylint: disable=method-hidden ast_builtins = AstroidManager().builtins_module return ast_builtins.getattr("frozenset")[0] @@ -114,7 +121,7 @@ class Super(node_classes.NodeNG): index = mro.index(self.mro_pointer) return mro[index + 1 :] - @decorators.cachedproperty + @cached_property def _proxied(self): ast_builtins = AstroidManager().builtins_module return ast_builtins.getattr("super")[0] @@ -218,7 +225,7 @@ class ExceptionInstance(bases.Instance): the case of .args. """ - @decorators.cachedproperty + @cached_property def special_attributes(self): qname = self.qname() instance = objectmodel.BUILTIN_EXCEPTIONS.get( -- cgit v1.2.1