From 4ffea0b03f6d9e9feb25585c84b3ba227e53cb05 Mon Sep 17 00:00:00 2001 From: "Yu Shao, Pang" Date: Sun, 25 Jul 2021 13:12:29 +0800 Subject: [PATCH] Update pr based on review --- pylint/checkers/classes.py | 11 +++++++---- tests/functional/u/unused/unused_private_member.py | 6 ++---- tests/functional/u/unused/unused_private_member.txt | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pylint/checkers/classes.py b/pylint/checkers/classes.py index bc20483940..e3d921354f 100644 --- a/pylint/checkers/classes.py +++ b/pylint/checkers/classes.py @@ -912,9 +912,8 @@ def _check_unused_private_functions(self, node: astroid.ClassDef) -> None: parent_scope = function_def.parent.scope() if isinstance(parent_scope, astroid.FunctionDef): # Handle nested functions - outer_fn = parent_scope if function_def.name in ( - n.name for n in outer_fn.nodes_of_class(astroid.Name) + n.name for n in parent_scope.nodes_of_class(astroid.Name) ): continue for attribute in node.nodes_of_class(astroid.Attribute): @@ -940,19 +939,23 @@ def _check_unused_private_functions(self, node: astroid.ClassDef) -> None: break else: name_stack = [] + outer_level_names = "" curr = parent_scope # Generate proper names for nested functions while curr != node: name_stack.append(curr.name) curr = curr.parent.scope() - function_repr = f"{function_def.name}({function_def.args.as_string()})" + if name_stack: + outer_level_names = f"{'.'.join(reversed(name_stack))}." + + function_repr = f"{outer_level_names}{function_def.name}({function_def.args.as_string()})" self.add_message( "unused-private-member", node=function_def, args=( node.name, - f"{'.'.join(reversed(name_stack))}{'.' if name_stack else ''}{function_repr}", + function_repr, ), ) diff --git a/tests/functional/u/unused/unused_private_member.py b/tests/functional/u/unused/unused_private_member.py index 80aba2ca70..7aaab3cb6a 100644 --- a/tests/functional/u/unused/unused_private_member.py +++ b/tests/functional/u/unused/unused_private_member.py @@ -136,7 +136,6 @@ def attr_c(self): """Get c.""" return cls.__attr_c # [undefined-variable] -<<<<<<< HEAD # Test cases for false-positive reported in #4668 # https://github.com/PyCQA/pylint/issues/4668 @@ -161,10 +160,10 @@ def __new__(cls, func, *args): def exec(self): print(self.__secret_bool) return self.func(*self.__args) -======= + + # Test cases for false-positive reported in #4673 # https://github.com/PyCQA/pylint/issues/4673 - class FalsePositive4673: """ The testing class """ @@ -202,4 +201,3 @@ def __inner_4(): # [unused-private-member] fn_to_return = __inner_1 if flag else __inner_3(__inner_2) return fn_to_return ->>>>>>> 82fd4e90... [unused-private-member] add logic for checking nested functions diff --git a/tests/functional/u/unused/unused_private_member.txt b/tests/functional/u/unused/unused_private_member.txt index 77cab9b634..8d56b11649 100644 --- a/tests/functional/u/unused/unused_private_member.txt +++ b/tests/functional/u/unused/unused_private_member.txt @@ -7,5 +7,5 @@ unused-private-member:34:4:HasUnusedInClass.__test:Unused private member `HasUnu unused-private-member:55:4:HasUnusedInClass.__test_recursive:Unused private member `HasUnusedInClass.__test_recursive(self)`:HIGH unused-private-member:132:8:FalsePositive4657.__init__:Unused private member `FalsePositive4657.__attr_c`:HIGH undefined-variable:137:15:FalsePositive4657.attr_c:Undefined variable 'cls':HIGH -unused-private-member:154:8:FalsePositive4673.do_thing.__true_positive:Unused private member `FalsePositive4673.do_thing.__true_positive(in_thing)`:HIGH -unused-private-member:174:8:FalsePositive4673.complicated_example.__inner_4:Unused private member `FalsePositive4673.complicated_example.__inner_4()`:HIGH +unused-private-member:179:8:FalsePositive4673.do_thing.__true_positive:Unused private member `FalsePositive4673.do_thing.__true_positive(in_thing)`:HIGH +unused-private-member:199:8:FalsePositive4673.complicated_example.__inner_4:Unused private member `FalsePositive4673.complicated_example.__inner_4()`:HIGH