From 1336ee4a9b698bf501b5cda40e3524d6f5e532d5 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Mon, 24 Apr 2023 00:58:04 +0200 Subject: Remove unused constants (#2141) * Remove `PY38_PLUS` constant * Remove `BUILTINS` constants * Remove `Load` + `Store` + `Del` * Remove `BOOL_SPECIAL_METHOD` --- astroid/__init__.py | 2 +- astroid/bases.py | 6 +-- astroid/brain/brain_ssl.py | 6 +-- astroid/brain/brain_typing.py | 4 +- astroid/brain/brain_unittest.py | 6 +-- astroid/const.py | 8 ---- astroid/nodes/scoped_nodes/scoped_nodes.py | 4 +- astroid/rebuilder.py | 63 ++---------------------------- 8 files changed, 13 insertions(+), 86 deletions(-) (limited to 'astroid') diff --git a/astroid/__init__.py b/astroid/__init__.py index 1c7c4af7..6711563a 100644 --- a/astroid/__init__.py +++ b/astroid/__init__.py @@ -46,7 +46,7 @@ from astroid.astroid_manager import MANAGER from astroid.bases import BaseInstance, BoundMethod, Instance, UnboundMethod from astroid.brain.helpers import register_module_extender from astroid.builder import extract_node, parse -from astroid.const import BRAIN_MODULES_DIRECTORY, PY310_PLUS, Context, Del, Load, Store +from astroid.const import BRAIN_MODULES_DIRECTORY, PY310_PLUS, Context from astroid.exceptions import ( AstroidBuildingError, AstroidBuildingException, diff --git a/astroid/bases.py b/astroid/bases.py index e3832d8b..6a4c3191 100644 --- a/astroid/bases.py +++ b/astroid/bases.py @@ -39,10 +39,6 @@ if TYPE_CHECKING: from astroid.constraint import Constraint -# TODO: check if needs special treatment -BOOL_SPECIAL_METHOD = "__bool__" -BUILTINS = "builtins" # TODO Remove in 2.8 - PROPERTIES = {"builtins.property", "abc.abstractproperty"} if PY310_PLUS: PROPERTIES.add("enum.property") @@ -383,7 +379,7 @@ class Instance(BaseInstance): context.boundnode = self try: - result = _infer_method_result_truth(self, BOOL_SPECIAL_METHOD, context) + result = _infer_method_result_truth(self, "__bool__", context) except (InferenceError, AttributeInferenceError): # Fallback to __len__. try: diff --git a/astroid/brain/brain_ssl.py b/astroid/brain/brain_ssl.py index 0f0f939f..a4d89b74 100644 --- a/astroid/brain/brain_ssl.py +++ b/astroid/brain/brain_ssl.py @@ -6,7 +6,7 @@ from astroid import parse from astroid.brain.helpers import register_module_extender -from astroid.const import PY38_PLUS, PY310_PLUS +from astroid.const import PY310_PLUS from astroid.manager import AstroidManager @@ -41,9 +41,7 @@ def _options_enum() -> str: OP_SINGLE_ECDH_USE = 10 OP_NO_COMPRESSION = 11 OP_NO_TICKET = 12 - OP_NO_RENEGOTIATION = 13""" - if PY38_PLUS: - enum += """ + OP_NO_RENEGOTIATION = 13 OP_ENABLE_MIDDLEBOX_COMPAT = 14""" return enum diff --git a/astroid/brain/brain_typing.py b/astroid/brain/brain_typing.py index 35c5f0d8..efa0a054 100644 --- a/astroid/brain/brain_typing.py +++ b/astroid/brain/brain_typing.py @@ -13,7 +13,7 @@ from typing import Final from astroid import context, extract_node, inference_tip from astroid.builder import _extract_single_node -from astroid.const import PY38_PLUS, PY39_PLUS +from astroid.const import PY39_PLUS from astroid.exceptions import ( AttributeInferenceError, InferenceError, @@ -428,7 +428,7 @@ if PY39_PLUS: AstroidManager().register_transform( FunctionDef, inference_tip(infer_typedDict), _looks_like_typedDict ) -elif PY38_PLUS: +else: AstroidManager().register_transform( ClassDef, inference_tip(infer_old_typedDict), _looks_like_typedDict ) diff --git a/astroid/brain/brain_unittest.py b/astroid/brain/brain_unittest.py index e8f08a1b..db5ea8c9 100644 --- a/astroid/brain/brain_unittest.py +++ b/astroid/brain/brain_unittest.py @@ -5,7 +5,6 @@ """Astroid hooks for unittest module.""" from astroid.brain.helpers import register_module_extender from astroid.builder import parse -from astroid.const import PY38_PLUS from astroid.manager import AstroidManager @@ -27,7 +26,4 @@ def IsolatedAsyncioTestCaseImport(): ) -if PY38_PLUS: - register_module_extender( - AstroidManager(), "unittest", IsolatedAsyncioTestCaseImport - ) +register_module_extender(AstroidManager(), "unittest", IsolatedAsyncioTestCaseImport) diff --git a/astroid/const.py b/astroid/const.py index 8e2f6012..95672ae5 100644 --- a/astroid/const.py +++ b/astroid/const.py @@ -7,11 +7,9 @@ import sys from pathlib import Path PY38 = sys.version_info[:2] == (3, 8) -PY38_PLUS = sys.version_info >= (3, 8) PY39_PLUS = sys.version_info >= (3, 9) PY310_PLUS = sys.version_info >= (3, 10) PY311_PLUS = sys.version_info >= (3, 11) -BUILTINS = "builtins" # TODO Remove in 2.8 WIN32 = sys.platform == "win32" @@ -28,12 +26,6 @@ class Context(enum.Enum): Del = 3 -# TODO Remove in 3.0 in favor of Context -Load = Context.Load -Store = Context.Store -Del = Context.Del - - ASTROID_INSTALL_DIRECTORY = Path(__file__).parent BRAIN_MODULES_DIRECTORY = ASTROID_INSTALL_DIRECTORY / "brain" diff --git a/astroid/nodes/scoped_nodes/scoped_nodes.py b/astroid/nodes/scoped_nodes/scoped_nodes.py index 771f93f3..ef25c2b7 100644 --- a/astroid/nodes/scoped_nodes/scoped_nodes.py +++ b/astroid/nodes/scoped_nodes/scoped_nodes.py @@ -19,7 +19,7 @@ from functools import cached_property, lru_cache from typing import TYPE_CHECKING, ClassVar, Literal, NoReturn, TypeVar, overload from astroid import bases, util -from astroid.const import IS_PYPY, PY38, PY38_PLUS, PY39_PLUS, PYPY_7_3_11_PLUS +from astroid.const import IS_PYPY, PY38, PY39_PLUS, PYPY_7_3_11_PLUS from astroid.context import ( CallContext, InferenceContext, @@ -2000,7 +2000,7 @@ class ClassDef( Can also return 0 if the line can not be determined. """ - if not PY38_PLUS or IS_PYPY and PY38 and not PYPY_7_3_11_PLUS: + if IS_PYPY and PY38 and not PYPY_7_3_11_PLUS: # For Python < 3.8 the lineno is the line number of the first decorator. # We want the class statement lineno. Similar to 'FunctionDef.fromlineno' # PyPy (3.8): Fixed with version v7.3.11 diff --git a/astroid/rebuilder.py b/astroid/rebuilder.py index 5a17c3b9..1efa7fc4 100644 --- a/astroid/rebuilder.py +++ b/astroid/rebuilder.py @@ -18,7 +18,7 @@ from typing import TYPE_CHECKING, Final, TypeVar, Union, cast, overload from astroid import nodes from astroid._ast import ParserModule, get_parser_module, parse_function_type_comment -from astroid.const import IS_PYPY, PY38, PY38_PLUS, PY39_PLUS, Context +from astroid.const import IS_PYPY, PY38, PY39_PLUS, Context from astroid.manager import AstroidManager from astroid.nodes import NodeNG from astroid.nodes.utils import Position @@ -74,10 +74,8 @@ class TreeRebuilder: try: if node.body and isinstance(node.body[0], ast.Expr): first_value = node.body[0].value - if isinstance(first_value, ast.Str) or ( - PY38_PLUS - and isinstance(first_value, ast.Constant) - and isinstance(first_value.value, str) + if isinstance(first_value, ast.Constant) and isinstance( + first_value.value, str ): doc_ast_node = first_value node.body = node.body[1:] @@ -158,56 +156,6 @@ class TreeRebuilder: end_col_offset=t.end[1], ) - def _fix_doc_node_position(self, node: NodesWithDocsType) -> None: - """Fix start and end position of doc nodes for Python < 3.8.""" - if not self._data or not node.doc_node or node.lineno is None: - return - if PY38_PLUS: - return - - lineno = node.lineno or 1 # lineno of modules is 0 - end_range: int | None = node.doc_node.lineno - if IS_PYPY and not PY39_PLUS: - end_range = None - # pylint: disable-next=unsubscriptable-object - data = "\n".join(self._data[lineno - 1 : end_range]) - - found_start, found_end = False, False - open_brackets = 0 - skip_token: set[int] = {token.NEWLINE, token.INDENT, token.NL, token.COMMENT} - - if isinstance(node, nodes.Module): - found_end = True - - for t in generate_tokens(StringIO(data).readline): - if found_end is False: - if ( - found_start is False - and t.type == token.NAME - and t.string in {"def", "class"} - ): - found_start = True - elif found_start is True and t.type == token.OP: - if t.exact_type == token.COLON and open_brackets == 0: - found_end = True - elif t.exact_type == token.LPAR: - open_brackets += 1 - elif t.exact_type == token.RPAR: - open_brackets -= 1 - continue - if t.type in skip_token: - continue - if t.type == token.STRING: - break - return - else: - return - - node.doc_node.lineno = lineno + t.start[0] - 1 - node.doc_node.col_offset = t.start[1] - node.doc_node.end_lineno = lineno + t.end[0] - 1 - node.doc_node.end_col_offset = t.end[1] - def _reset_end_lineno(self, newnode: nodes.NodeNG) -> None: """Reset end_lineno and end_col_offset attributes for PyPy 3.8. @@ -246,7 +194,6 @@ class TreeRebuilder: [self.visit(child, newnode) for child in node.body], doc_node=self.visit(doc_ast_node, newnode), ) - self._fix_doc_node_position(newnode) if IS_PYPY and PY38: self._reset_end_lineno(newnode) return newnode @@ -953,7 +900,6 @@ class TreeRebuilder: position=self._get_position_info(node, newnode), doc_node=self.visit(doc_ast_node, newnode), ) - self._fix_doc_node_position(newnode) return newnode def visit_continue(self, node: ast.Continue, parent: NodeNG) -> nodes.Continue: @@ -1225,7 +1171,7 @@ class TreeRebuilder: node, doc_ast_node = self._get_doc(node) lineno = node.lineno - if PY38_PLUS and node.decorator_list: + if node.decorator_list: # Python 3.8 sets the line number of a decorated function # to be the actual line number of the function, but the # previous versions expected the decorator's line number instead. @@ -1265,7 +1211,6 @@ class TreeRebuilder: position=self._get_position_info(node, newnode), doc_node=self.visit(doc_ast_node, newnode), ) - self._fix_doc_node_position(newnode) self._global_names.pop() return newnode -- cgit v1.2.1