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