summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2019-09-24 09:16:32 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-09-24 09:49:18 +0200
commitd9ed7d1db99d3b5ea84de4937997fae0dc22545f (patch)
tree5d94f91a1d0afc99e779670b691159b511e7d823
parentd23a16e3cb454e6343bc3772c82dca172f3eb6a8 (diff)
downloadpylint-git-d9ed7d1db99d3b5ea84de4937997fae0dc22545f.tar.gz
Simplify and improve the logic of consider-iterating-dictionary
-rw-r--r--pylint/checkers/refactoring.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/pylint/checkers/refactoring.py b/pylint/checkers/refactoring.py
index 05fef1f11..18f2642f9 100644
--- a/pylint/checkers/refactoring.py
+++ b/pylint/checkers/refactoring.py
@@ -1260,12 +1260,17 @@ class RecommandationChecker(checkers.BaseChecker):
@utils.check_messages("consider-iterating-dictionary")
def visit_call(self, node):
- inferred = utils.safe_infer(node.func)
- if not inferred:
+ if not isinstance(node.func, astroid.Attribute):
+ return
+ if node.func.attrname != "keys":
return
- if not isinstance(inferred, astroid.BoundMethod):
+ if not isinstance(node.parent, (astroid.For, astroid.Comprehension)):
return
- if not isinstance(inferred.bound, astroid.Dict) or inferred.name != "keys":
+
+ inferred = utils.safe_infer(node.func)
+ if not isinstance(inferred, astroid.BoundMethod) or not isinstance(
+ inferred.bound, astroid.Dict
+ ):
return
if isinstance(node.parent, (astroid.For, astroid.Comprehension)):