Skip to content

Commit c79d112

Browse files
committed
Revised codes based on review
1 parent b1fb77b commit c79d112

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

pylint/checkers/refactoring/recommendation_checker.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,9 @@ def _check_consider_using_dict_items(self, node: astroid.For) -> None:
153153

154154
if not isinstance(subscript.value, (astroid.Name, astroid.Attribute)):
155155
continue
156-
157156
value = subscript.slice
157+
if isinstance(value, astroid.Index):
158+
value = value.value
158159
if (
159160
not isinstance(value, astroid.Name)
160161
or value.name != node.target.name
@@ -185,7 +186,6 @@ def visit_comprehension(self, node: astroid.Comprehension) -> None:
185186
iterating_object_name = utils.get_iterating_dictionary_name(node)
186187
if iterating_object_name is None:
187188
return
188-
189189
children = list(node.parent.get_children())
190190
if node.ifs:
191191
children.extend(node.ifs)
@@ -194,8 +194,9 @@ def visit_comprehension(self, node: astroid.Comprehension) -> None:
194194
subscript = cast(astroid.Subscript, subscript)
195195
if not isinstance(subscript.value, (astroid.Name, astroid.Attribute)):
196196
continue
197-
198197
value = subscript.slice
198+
if isinstance(value, astroid.Index):
199+
value = value.value
199200
if (
200201
not isinstance(value, astroid.Name)
201202
or value.name != node.target.name

pylint/checkers/utils.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,20 +1504,18 @@ def get_iterating_dictionary_name(
15041504
or a dictionary itself, this returns None.
15051505
"""
15061506
# Is it a proper keys call?
1507-
if (
1507+
is_iterating_dict_keys = (
15081508
isinstance(node.iter, astroid.Call)
15091509
and isinstance(node.iter.func, astroid.Attribute)
15101510
and node.iter.func.attrname == "keys"
1511-
):
1512-
inferred = safe_infer(node.iter.func)
1513-
if not isinstance(inferred, (astroid.BoundMethod, astroid.Dict)):
1514-
return None
1515-
return node.iter.as_string().partition(".")[0]
1511+
and isinstance(safe_infer(node.iter.func), astroid.BoundMethod)
1512+
)
1513+
# Is it a proper dictionary?
1514+
is_iterating_dict = isinstance(
1515+
node.iter, (astroid.Name, astroid.Attribute)
1516+
) and isinstance(safe_infer(node.iter), astroid.Dict)
15161517

1517-
# Is it a dictionary?
1518-
if not isinstance(node.iter, (astroid.Name, astroid.Attribute)):
1519-
return None
1520-
inferred = safe_infer(node.iter)
1521-
if not isinstance(inferred, (astroid.Dict, astroid.DictComp)):
1522-
return None
1523-
return node.iter.as_string()
1518+
if is_iterating_dict or is_iterating_dict_keys:
1519+
return node.iter.as_string().partition(".keys")[0]
1520+
1521+
return None

0 commit comments

Comments
 (0)