diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-09-28 08:07:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-28 08:07:26 +0200 |
commit | 3fbf19284b6992fdeefd013bfa74724a43c521c4 (patch) | |
tree | 6203a29f3b6fd4f289f2f98b891fd4f009d56a6d | |
parent | a602692aa169c2b1fb355ee67c8b67b6fb76f34e (diff) | |
download | pylint-git-3fbf19284b6992fdeefd013bfa74724a43c521c4.tar.gz |
Fix ``invalid-name`` for overwritten base ``object`` methods (#5079)
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | pylint/checkers/utils.py | 5 | ||||
-rw-r--r-- | tests/functional/i/invalid/invalid_name.py | 9 | ||||
-rw-r--r-- | tests/functional/i/invalid/invalid_name.txt | 11 |
4 files changed, 22 insertions, 7 deletions
@@ -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 <name> is a method overridden from an ancestor""" + """return True if <name> 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 |