diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2019-09-24 09:16:32 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-09-24 09:49:18 +0200 |
commit | d9ed7d1db99d3b5ea84de4937997fae0dc22545f (patch) | |
tree | 5d94f91a1d0afc99e779670b691159b511e7d823 | |
parent | d23a16e3cb454e6343bc3772c82dca172f3eb6a8 (diff) | |
download | pylint-git-d9ed7d1db99d3b5ea84de4937997fae0dc22545f.tar.gz |
Simplify and improve the logic of consider-iterating-dictionary
-rw-r--r-- | pylint/checkers/refactoring.py | 13 |
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)): |