From 3fbf19284b6992fdeefd013bfa74724a43c521c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Tue, 28 Sep 2021 08:07:26 +0200 Subject: Fix ``invalid-name`` for overwritten base ``object`` methods (#5079) --- ChangeLog | 4 ++++ pylint/checkers/utils.py | 5 ++++- tests/functional/i/invalid/invalid_name.py | 9 ++++++++- tests/functional/i/invalid/invalid_name.txt | 11 ++++++----- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index dce8f9c25..324a5dcab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -47,6 +47,10 @@ Release date: TBA Closes #5066 +* Fixed ``invalid-name`` not checking parameters of overwritten base ``object`` methods + + Closes #3614 + What's New in Pylint 2.11.1? ============================ diff --git a/pylint/checkers/utils.py b/pylint/checkers/utils.py index 7f04e22f7..6e96b3a97 100644 --- a/pylint/checkers/utils.py +++ b/pylint/checkers/utils.py @@ -456,8 +456,11 @@ def assign_parent(node: nodes.NodeNG) -> nodes.NodeNG: def overrides_a_method(class_node: nodes.ClassDef, name: str) -> bool: - """return True if is a method overridden from an ancestor""" + """return True if is a method overridden from an ancestor + which is not the base object class""" for ancestor in class_node.ancestors(): + if ancestor.name == "object": + continue if name in ancestor and isinstance(ancestor[name], nodes.FunctionDef): return True return False diff --git a/tests/functional/i/invalid/invalid_name.py b/tests/functional/i/invalid/invalid_name.py index 9ec81bfbf..ea55102d7 100644 --- a/tests/functional/i/invalid/invalid_name.py +++ b/tests/functional/i/invalid/invalid_name.py @@ -1,5 +1,7 @@ """ Tests for invalid-name checker. """ -# pylint: disable=unused-import, wrong-import-position,import-outside-toplevel +# pylint: disable=unused-import, wrong-import-position, import-outside-toplevel, missing-class-docstring +# pylint: disable=too-few-public-methods + AAA = 24 try: @@ -67,3 +69,8 @@ def a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad(): # Shoul print('LOL') a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad() + + +class FooBar: + def __init__(self, fooBar) -> None: # [invalid-name] + self.foo_bar = fooBar diff --git a/tests/functional/i/invalid/invalid_name.txt b/tests/functional/i/invalid/invalid_name.txt index c4ecbfafd..e2471e368 100644 --- a/tests/functional/i/invalid/invalid_name.txt +++ b/tests/functional/i/invalid/invalid_name.txt @@ -1,5 +1,6 @@ -invalid-name:10:0::"Constant name ""aaa"" doesn't conform to UPPER_CASE naming style" -invalid-name:14:4::"Constant name ""time"" doesn't conform to UPPER_CASE naming style" -invalid-name:30:0:a:"Function name ""a"" doesn't conform to snake_case naming style" -invalid-name:44:4::"Constant name ""Foocapfor"" doesn't conform to UPPER_CASE naming style" -invalid-name:61:0:a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad:"Function name ""a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad"" doesn't conform to snake_case naming style" +invalid-name:12:0::"Constant name ""aaa"" doesn't conform to UPPER_CASE naming style":HIGH +invalid-name:16:4::"Constant name ""time"" doesn't conform to UPPER_CASE naming style":HIGH +invalid-name:32:0:a:"Function name ""a"" doesn't conform to snake_case naming style":HIGH +invalid-name:46:4::"Constant name ""Foocapfor"" doesn't conform to UPPER_CASE naming style":HIGH +invalid-name:63:0:a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad:"Function name ""a_very_very_very_long_function_name_WithCamelCase_to_make_it_sad"" doesn't conform to snake_case naming style":HIGH +invalid-name:75:4:FooBar.__init__:"Argument name ""fooBar"" doesn't conform to snake_case naming style":HIGH -- cgit v1.2.1