diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b7d927155e..9d33a86e49 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,7 +47,7 @@ repos: hooks: - id: flake8 additional_dependencies: [flake8-bugbear, flake8-typing-imports==1.12.0] - exclude: tests/testdata|doc/conf.py|astroid/__init__.py + exclude: tests/testdata|doc/conf.py - repo: local hooks: - id: pylint diff --git a/astroid/__init__.py b/astroid/__init__.py index e068cead0d..faa6e1100e 100644 --- a/astroid/__init__.py +++ b/astroid/__init__.py @@ -64,7 +64,36 @@ from astroid.brain.helpers import register_module_extender from astroid.builder import extract_node, parse from astroid.const import PY310_PLUS, Context, Del, Load, Store -from astroid.exceptions import * +from astroid.exceptions import ( + AstroidBuildingError, + AstroidBuildingException, + AstroidError, + AstroidImportError, + AstroidIndexError, + AstroidSyntaxError, + AstroidTypeError, + AstroidValueError, + AttributeInferenceError, + BinaryOperationError, + DuplicateBasesError, + InconsistentMroError, + InferenceError, + InferenceOverwriteError, + MroError, + NameInferenceError, + NoDefault, + NotFoundError, + OperationError, + ParentMissingError, + ResolveError, + StatementMissing, + SuperArgumentTypeError, + SuperError, + TooManyLevelsError, + UnaryOperationError, + UnresolvableName, + UseInferenceDefault, +) from astroid.inference_tip import _inference_tip_cached, inference_tip from astroid.objects import ExceptionInstance diff --git a/astroid/exceptions.py b/astroid/exceptions.py index b8838023e4..9aaaaa539c 100644 --- a/astroid/exceptions.py +++ b/astroid/exceptions.py @@ -42,7 +42,9 @@ "NoDefault", "NotFoundError", "OperationError", + "ParentMissingError", "ResolveError", + "StatementMissing", "SuperArgumentTypeError", "SuperError", "TooManyLevelsError", diff --git a/astroid/nodes/scoped_nodes/scoped_nodes.py b/astroid/nodes/scoped_nodes/scoped_nodes.py index cdaf8c3928..2ef20eb0ad 100644 --- a/astroid/nodes/scoped_nodes/scoped_nodes.py +++ b/astroid/nodes/scoped_nodes/scoped_nodes.py @@ -636,8 +636,6 @@ def fully_defined(self): def statement(self, *, future: Literal[None] = ...) -> "Module": ... - # pylint: disable-next=arguments-differ - # https://github.com/PyCQA/pylint/issues/5264 @overload def statement(self, *, future: Literal[True]) -> NoReturn: ... diff --git a/astroid/rebuilder.py b/astroid/rebuilder.py index 141494ea72..52cd8f7f13 100644 --- a/astroid/rebuilder.py +++ b/astroid/rebuilder.py @@ -1750,6 +1750,7 @@ def visit_attribute( newnode = nodes.DelAttr(node.attr, node.lineno, node.col_offset, parent) elif context == Context.Store: if sys.version_info >= (3, 8): + # pylint: disable=redefined-variable-type newnode = nodes.AssignAttr( attrname=node.attr, lineno=node.lineno, @@ -2018,6 +2019,7 @@ def visit_name( newnode = nodes.DelName(node.id, node.lineno, node.col_offset, parent) elif context == Context.Store: if sys.version_info >= (3, 8): + # pylint: disable=redefined-variable-type newnode = nodes.AssignName( name=node.id, lineno=node.lineno, diff --git a/pylintrc b/pylintrc index 2ca5a62dd2..6f9dc1f37e 100644 --- a/pylintrc +++ b/pylintrc @@ -310,7 +310,7 @@ mixin-class-rgx=.*Mix[Ii]n # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. Python regular # expressions are accepted. -generated-members=REQUEST,acl_users,aq_parent +generated-members=REQUEST,acl_users,aq_parent,argparse.Namespace [VARIABLES] diff --git a/tests/unittest_builder.py b/tests/unittest_builder.py index 205f205583..9a3e636e7a 100644 --- a/tests/unittest_builder.py +++ b/tests/unittest_builder.py @@ -715,6 +715,7 @@ def func2(a={}): a.custom_attr = 0 """ builder.parse(code) + # pylint: disable=no-member nonetype = nodes.const_factory(None) self.assertNotIn("custom_attr", nonetype.locals) self.assertNotIn("custom_attr", nonetype.instance_attrs) diff --git a/tests/unittest_lookup.py b/tests/unittest_lookup.py index 1555603b9e..19d87432b8 100644 --- a/tests/unittest_lookup.py +++ b/tests/unittest_lookup.py @@ -394,6 +394,7 @@ def test_builtin_lookup(self) -> None: self.assertEqual(len(intstmts), 1) self.assertIsInstance(intstmts[0], nodes.ClassDef) self.assertEqual(intstmts[0].name, "int") + # pylint: disable=no-member self.assertIs(intstmts[0], nodes.const_factory(1)._proxied) def test_decorator_arguments_lookup(self) -> None: diff --git a/tests/unittest_nodes.py b/tests/unittest_nodes.py index a7735c5c6e..f07fd85791 100644 --- a/tests/unittest_nodes.py +++ b/tests/unittest_nodes.py @@ -633,6 +633,7 @@ def test_as_string(self) -> None: class ConstNodeTest(unittest.TestCase): def _test(self, value: Any) -> None: node = nodes.const_factory(value) + # pylint: disable=no-member self.assertIsInstance(node._proxied, nodes.ClassDef) self.assertEqual(node._proxied.name, value.__class__.__name__) self.assertIs(node.value, value) diff --git a/tests/unittest_scoped_nodes.py b/tests/unittest_scoped_nodes.py index 6a95385cec..251186626b 100644 --- a/tests/unittest_scoped_nodes.py +++ b/tests/unittest_scoped_nodes.py @@ -283,7 +283,7 @@ def test_file_stream_api(self) -> None: path = resources.find("data/all.py") file_build = builder.AstroidBuilder().file_build(path, "all") with self.assertRaises(AttributeError): - # pylint: disable=pointless-statement + # pylint: disable=pointless-statement, no-member file_build.file_stream def test_stream_api(self) -> None: