Method: pylint.checkers.modified_iterating_checker.ModifiedIterationChecker._modified_iterating_dict_cond
Calls: 1173, Exceptions: 0, Paths: 6Back
Path 1: 1164 calls (0.99)
Name (346) Const (138) Call (90) If (83) AssignName (79) Compare (69) Assign (64) Expr (58) Attribute (44) Break (31)
Name (1069) Attribute (95)
False (1164)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]
Path 2: 4 calls (0.0)
Assign (4)
Name (4)
False (4)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]
Path 3: 2 calls (0.0)
Assign (2)
Name (2)
True (2)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]
Path 4: 1 calls (0.0)
Assign (1)
Name (1)
False (1)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]
Path 5: 1 calls (0.0)
Assign (1)
Name (1)
False (1)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]
Path 6: 1 calls (0.0)
Assign (1)
Attribute (1)
False (1)
1def _modified_iterating_dict_cond(
2 self, node: nodes.NodeNG, iter_obj: nodes.Name | nodes.Attribute
3 ) -> bool:
4 if not self._is_node_assigns_subscript_name(node):
5 return False
6 # Do not emit when merely updating the same key being iterated
7 if (
8 isinstance(iter_obj, nodes.Name)
9 and iter_obj.name == node.targets[0].value.name
10 and isinstance(iter_obj.parent.target, nodes.AssignName)
11 and isinstance(node.targets[0].slice, nodes.Name)
12 and iter_obj.parent.target.name == node.targets[0].slice.name
13 ):
14 return False
15 infer_val = utils.safe_infer(node.targets[0].value)
16 if not isinstance(infer_val, nodes.Dict):
17 return False
18 if infer_val != utils.safe_infer(iter_obj):
19 return False
20 if isinstance(iter_obj, nodes.Attribute):
21 iter_obj_name = iter_obj.attrname
22 else:
23 iter_obj_name = iter_obj.name
24 return node.targets[0].value.name == iter_obj_name # type: ignore[no-any-return]