summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2023-04-24 00:58:04 +0200
committerGitHub <noreply@github.com>2023-04-24 00:58:04 +0200
commit1336ee4a9b698bf501b5cda40e3524d6f5e532d5 (patch)
tree2289350c7e17a98838037438102e8bedaa2cb427
parent7fa848126c8178e78c47dff0415a1fc175b041eb (diff)
downloadastroid-git-1336ee4a9b698bf501b5cda40e3524d6f5e532d5.tar.gz
Remove unused constants (#2141)
* Remove `PY38_PLUS` constant * Remove `BUILTINS` constants * Remove `Load` + `Store` + `Del` * Remove `BOOL_SPECIAL_METHOD`
-rw-r--r--ChangeLog11
-rw-r--r--astroid/__init__.py2
-rw-r--r--astroid/bases.py6
-rw-r--r--astroid/brain/brain_ssl.py6
-rw-r--r--astroid/brain/brain_typing.py4
-rw-r--r--astroid/brain/brain_unittest.py6
-rw-r--r--astroid/const.py8
-rw-r--r--astroid/nodes/scoped_nodes/scoped_nodes.py4
-rw-r--r--astroid/rebuilder.py63
-rw-r--r--tests/test_builder.py14
-rw-r--r--tests/test_inference.py6
-rw-r--r--tests/test_nodes.py27
-rw-r--r--tests/test_nodes_lineno.py6
-rw-r--r--tests/test_protocols.py3
-rw-r--r--tests/test_regrtest.py2
-rw-r--r--tests/test_scoped_nodes.py11
-rw-r--r--tests/test_utils.py6
17 files changed, 39 insertions, 146 deletions
diff --git a/ChangeLog b/ChangeLog
index 709b53ad..48bf6895 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -88,6 +88,17 @@ Release date: TBA
Refs #1490
+* Remove unused and / or deprecated constants:
+ - ``astroid.bases.BOOL_SPECIAL_METHOD``
+ - ``astroid.bases.BUILTINS``
+ - ``astroid.const.BUILTINS``
+ - ``astroid.const.PY38_PLUS``
+ - ``astroid.const.Load``
+ - ``astroid.const.Store``
+ - ``astroid.const.Del``
+
+ Refs #2141
+
What's New in astroid 2.15.4?
=============================
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
diff --git a/tests/test_builder.py b/tests/test_builder.py
index 15ee26c5..b4a0c464 100644
--- a/tests/test_builder.py
+++ b/tests/test_builder.py
@@ -19,7 +19,7 @@ import unittest.mock
import pytest
from astroid import Instance, builder, nodes, test_utils, 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.exceptions import (
AstroidBuildingError,
AstroidSyntaxError,
@@ -62,10 +62,7 @@ class FromToLineNoTest(unittest.TestCase):
else:
self.assertEqual(strarg.tolineno, 5)
else:
- if not PY38_PLUS:
- self.assertEqual(strarg.fromlineno, 5)
- else:
- self.assertEqual(strarg.fromlineno, 4)
+ self.assertEqual(strarg.fromlineno, 4)
self.assertEqual(strarg.tolineno, 5)
namearg = callfunc.args[1]
self.assertIsInstance(namearg, nodes.Name)
@@ -160,8 +157,8 @@ class FromToLineNoTest(unittest.TestCase):
c = ast_module.body[2]
assert isinstance(c, nodes.ClassDef)
- if not PY38_PLUS or IS_PYPY and PY38 and not PYPY_7_3_11_PLUS:
- # Not perfect, but best we can do for Python 3.7 and PyPy 3.8 (< v7.3.11).
+ if IS_PYPY and PY38 and not PYPY_7_3_11_PLUS:
+ # Not perfect, but best we can do for PyPy 3.8 (< v7.3.11).
# Can't detect closing bracket on new line.
assert c.fromlineno == 12
else:
@@ -923,8 +920,7 @@ def test_module_build_dunder_file() -> None:
assert module.path[0] == collections.__file__
-@pytest.mark.skipif(
- PY38_PLUS,
+@pytest.mark.xfail(
reason=(
"The builtin ast module does not fail with a specific error "
"for syntax error caused by invalid type comments."
diff --git a/tests/test_inference.py b/tests/test_inference.py
index b81a3e17..cdb61918 100644
--- a/tests/test_inference.py
+++ b/tests/test_inference.py
@@ -31,7 +31,7 @@ from astroid import decorators as decoratorsmod
from astroid.arguments import CallSite
from astroid.bases import BoundMethod, Instance, UnboundMethod, UnionType
from astroid.builder import AstroidBuilder, _extract_single_node, extract_node, parse
-from astroid.const import PY38_PLUS, PY39_PLUS, PY310_PLUS
+from astroid.const import PY39_PLUS, PY310_PLUS
from astroid.context import CallContext, InferenceContext
from astroid.exceptions import (
AstroidTypeError,
@@ -959,8 +959,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase):
self.assertEqual("module.C", should_be_c[0].qname())
self.assertEqual("module.D", should_be_d[0].qname())
- @pytest.mark.skipif(
- PY38_PLUS,
+ @pytest.mark.xfail(
reason="pathlib.Path cannot be inferred on Python 3.8",
)
def test_factory_methods_inside_binary_operation(self):
@@ -6588,7 +6587,6 @@ def test_custom_decorators_for_classmethod_and_staticmethods(code, obj, obj_type
assert inferred.type == obj_type
-@pytest.mark.skipif(not PY38_PLUS, reason="Needs dataclasses available")
@pytest.mark.skipif(
PY39_PLUS,
reason="Exact inference with dataclasses (replace function) in python3.9",
diff --git a/tests/test_nodes.py b/tests/test_nodes.py
index 9d5f3ba0..1d8d67a0 100644
--- a/tests/test_nodes.py
+++ b/tests/test_nodes.py
@@ -26,7 +26,7 @@ from astroid import (
transforms,
util,
)
-from astroid.const import PY38_PLUS, PY310_PLUS, Context
+from astroid.const import PY310_PLUS, Context
from astroid.context import InferenceContext
from astroid.exceptions import (
AstroidBuildingError,
@@ -48,13 +48,6 @@ from astroid.nodes.scoped_nodes import ClassDef, FunctionDef, GeneratorExp, Modu
from . import resources
abuilder = builder.AstroidBuilder()
-try:
- import typed_ast # pylint: disable=unused-import
-
- HAS_TYPED_AST = True
-except ImportError:
- # typed_ast merged in `ast` in Python 3.8
- HAS_TYPED_AST = PY38_PLUS
class AsStringTest(resources.SysPathSetup, unittest.TestCase):
@@ -641,9 +634,6 @@ class ConstNodeTest(unittest.TestCase):
def test_unicode(self) -> None:
self._test("a")
- @pytest.mark.skipif(
- not PY38_PLUS, reason="kind attribute for ast.Constant was added in 3.8"
- )
def test_str_kind(self):
node = builder.extract_node(
"""
@@ -673,7 +663,6 @@ class NameNodeTest(unittest.TestCase):
builder.parse(code)
-@pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
class TestNamedExprNode:
"""Tests for the NamedExpr node."""
@@ -1237,7 +1226,6 @@ def test_unknown() -> None:
assert isinstance(nodes.Unknown().qname(), str)
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_with() -> None:
module = builder.parse(
"""
@@ -1254,7 +1242,6 @@ def test_type_comments_with() -> None:
assert ignored_node.type_annotation is None
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_for() -> None:
module = builder.parse(
"""
@@ -1272,7 +1259,6 @@ def test_type_comments_for() -> None:
assert ignored_node.type_annotation is None
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_coments_assign() -> None:
module = builder.parse(
"""
@@ -1288,7 +1274,6 @@ def test_type_coments_assign() -> None:
assert ignored_node.type_annotation is None
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_invalid_expression() -> None:
module = builder.parse(
"""
@@ -1301,7 +1286,6 @@ def test_type_comments_invalid_expression() -> None:
assert node.type_annotation is None
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_invalid_function_comments() -> None:
module = builder.parse(
"""
@@ -1321,7 +1305,6 @@ def test_type_comments_invalid_function_comments() -> None:
assert node.type_comment_args is None
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_function() -> None:
module = builder.parse(
"""
@@ -1352,7 +1335,6 @@ def test_type_comments_function() -> None:
assert node.type_comment_returns.as_string() == expected_returns_string
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_type_comments_arguments() -> None:
module = builder.parse(
"""
@@ -1392,9 +1374,6 @@ def test_type_comments_arguments() -> None:
assert actual_arg.as_string() == expected_arg
-@pytest.mark.skipif(
- not PY38_PLUS, reason="needs to be able to parse positional only arguments"
-)
def test_type_comments_posonly_arguments() -> None:
module = builder.parse(
"""
@@ -1430,7 +1409,6 @@ def test_type_comments_posonly_arguments() -> None:
assert actual_arg.as_string() == expected_arg
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_correct_function_type_comment_parent() -> None:
data = """
def f(a):
@@ -1512,7 +1490,6 @@ def test_f_string_correct_line_numbering() -> None:
assert node.last_child().last_child().lineno == 5
-@pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_assignment_expression() -> None:
code = """
if __(a := 1):
@@ -1535,7 +1512,6 @@ def test_assignment_expression() -> None:
assert second.as_string() == "b := test"
-@pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_assignment_expression_in_functiondef() -> None:
code = """
def function(param = (assignment := "walrus")):
@@ -1650,7 +1626,6 @@ def test_parse_fstring_debug_mode() -> None:
assert node.as_string() == "f'3={3!r}'"
-@pytest.mark.skipif(not HAS_TYPED_AST, reason="requires typed_ast")
def test_parse_type_comments_with_proper_parent() -> None:
code = """
class D: #@
diff --git a/tests/test_nodes_lineno.py b/tests/test_nodes_lineno.py
index bbc1a300..126655df 100644
--- a/tests/test_nodes_lineno.py
+++ b/tests/test_nodes_lineno.py
@@ -8,11 +8,11 @@ import pytest
import astroid
from astroid import builder, nodes
-from astroid.const import IS_PYPY, PY38, PY38_PLUS, PY39_PLUS, PY310_PLUS
+from astroid.const import IS_PYPY, PY38, PY39_PLUS, PY310_PLUS
@pytest.mark.skipif(
- PY38_PLUS and not (PY38 and IS_PYPY),
+ not (PY38 and IS_PYPY),
reason="end_lineno and end_col_offset were added in PY38",
)
class TestEndLinenoNotSet:
@@ -43,7 +43,7 @@ class TestEndLinenoNotSet:
@pytest.mark.skipif(
- not PY38_PLUS or PY38 and IS_PYPY,
+ PY38 and IS_PYPY,
reason="end_lineno and end_col_offset were added in PY38",
)
class TestLinenoColOffset:
diff --git a/tests/test_protocols.py b/tests/test_protocols.py
index 4841ae7b..d24659ba 100644
--- a/tests/test_protocols.py
+++ b/tests/test_protocols.py
@@ -13,7 +13,7 @@ import pytest
import astroid
from astroid import extract_node, nodes
-from astroid.const import PY38_PLUS, PY310_PLUS
+from astroid.const import PY310_PLUS
from astroid.exceptions import InferenceError
from astroid.manager import AstroidManager
from astroid.util import Uninferable, UninferableBase
@@ -280,7 +280,6 @@ class ProtocolTests(unittest.TestCase):
assert parsed.inferred() == [Uninferable]
-@pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_named_expr_inference() -> None:
code = """
if (a := 2) == 2:
diff --git a/tests/test_regrtest.py b/tests/test_regrtest.py
index 88c4aab9..31d9e6b8 100644
--- a/tests/test_regrtest.py
+++ b/tests/test_regrtest.py
@@ -11,7 +11,6 @@ import pytest
from astroid import MANAGER, Instance, bases, nodes, parse, test_utils
from astroid.builder import AstroidBuilder, _extract_single_node, extract_node
-from astroid.const import PY38_PLUS
from astroid.context import InferenceContext
from astroid.exceptions import InferenceError
from astroid.raw_building import build_module
@@ -163,7 +162,6 @@ def test():
base = next(result._proxied.bases[0].infer())
self.assertEqual(base.name, "int")
- @pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_filter_stmts_nested_if(self) -> None:
builder = AstroidBuilder()
data = """
diff --git a/tests/test_scoped_nodes.py b/tests/test_scoped_nodes.py
index 60fd68f7..9f409582 100644
--- a/tests/test_scoped_nodes.py
+++ b/tests/test_scoped_nodes.py
@@ -30,7 +30,7 @@ from astroid import (
util,
)
from astroid.bases import BoundMethod, Generator, Instance, UnboundMethod
-from astroid.const import IS_PYPY, PY38, PY38_PLUS
+from astroid.const import IS_PYPY, PY38
from astroid.exceptions import (
AttributeInferenceError,
DuplicateBasesError,
@@ -530,7 +530,6 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase):
astroid["f"].argnames(), ["a", "b", "args", "c", "d", "kwargs"]
)
- @unittest.skipUnless(PY38_PLUS, "positional-only argument syntax")
def test_positional_only_argnames(self) -> None:
code = "def f(a, b, /, c=None, *args, d, **kwargs): pass"
astroid = builder.parse(code, __name__)
@@ -1333,7 +1332,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase):
astroid = builder.parse(data)
self.assertEqual(astroid["g1"].fromlineno, 4)
self.assertEqual(astroid["g1"].tolineno, 5)
- if not PY38_PLUS or PY38 and IS_PYPY:
+ if PY38 and IS_PYPY:
self.assertEqual(astroid["g2"].fromlineno, 9)
else:
self.assertEqual(astroid["g2"].fromlineno, 10)
@@ -1943,7 +1942,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase):
cls.mro()
def test_mro_typing_extensions(self):
- """Regression test for mro() inference on typing_extesnions.
+ """Regression test for mro() inference on typing_extensions.
Regression reported in:
https://github.com/pylint-dev/astroid/issues/1124
@@ -1973,9 +1972,6 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase):
"Protocol",
"object",
]
- if not PY38_PLUS:
- class_names.pop(-2)
-
final_def = module.body[-1]
self.assertEqual(class_names, sorted(i.name for i in final_def.mro()))
@@ -2799,7 +2795,6 @@ def test_slots_duplicate_bases_issue_1089() -> None:
class TestFrameNodes:
@staticmethod
- @pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_frame_node():
"""Test if the frame of FunctionDef, ClassDef and Module is correctly set."""
module = builder.parse(
diff --git a/tests/test_utils.py b/tests/test_utils.py
index a0f2137a..c06ee58e 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -4,10 +4,7 @@
import unittest
-import pytest
-
from astroid import Uninferable, builder, extract_node, nodes
-from astroid.const import PY38_PLUS
from astroid.exceptions import InferenceError
@@ -33,7 +30,6 @@ class InferenceUtil(unittest.TestCase):
self.assertEqual(nodes.are_exclusive(xass1, xnames[1]), False)
self.assertEqual(nodes.are_exclusive(xass1, xnames[2]), False)
- @pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_not_exclusive_walrus_operator(self) -> None:
node_if, node_body, node_or_else = extract_node(
"""
@@ -54,7 +50,6 @@ class InferenceUtil(unittest.TestCase):
assert nodes.are_exclusive(node_if, node_or_else) is False
assert nodes.are_exclusive(node_body, node_or_else) is True
- @pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_not_exclusive_walrus_multiple(self) -> None:
node_if, body_1, body_2, or_else_1, or_else_2 = extract_node(
"""
@@ -84,7 +79,6 @@ class InferenceUtil(unittest.TestCase):
assert nodes.are_exclusive(walruses[1], or_else_1) is False
assert nodes.are_exclusive(walruses[1], or_else_2) is False
- @pytest.mark.skipif(not PY38_PLUS, reason="needs assignment expressions")
def test_not_exclusive_walrus_operator_nested(self) -> None:
node_if, node_body, node_or_else = extract_node(
"""