Method: pylint.checkers.classes.special_methods_checker._safe_infer_call_result
Calls: 1716, Exceptions: 1675, Paths: 3Back
Path 1: 1543 calls (0.9)
FunctionDef (1526) AsyncFunctionDef (17)
FunctionDef (1526) AsyncFunctionDef (17)
None (1543)
Const (874) Uninferable (501) Instance (58) Tuple (40) ClassDef (14) Generator (14) Lambda (13) Dict (8) FunctionDef (7) List (7)
StopIteration (1543)
1def _safe_infer_call_result(
2 node: nodes.FunctionDef,
3 caller: nodes.FunctionDef,
4 context: InferenceContext | None = None,
5) -> InferenceResult | None:
6 """Safely infer the return value of a function.
7
8 Returns None if inference failed or if there is some ambiguity (more than
9 one node has been inferred). Otherwise, returns inferred value.
10 """
11 try:
12 inferit = node.infer_call_result(caller, context=context)
13 value = next(inferit)
14 except astroid.InferenceError:
15 return None # inference failed
16 except StopIteration:
17 return None # no values inferred
18 try:
19 next(inferit)
20 return None # there is ambiguity on the inferred node
21 except astroid.InferenceError:
22 return None # there is some kind of ambiguity
23 except StopIteration:
24 return value
Path 2: 132 calls (0.08)
FunctionDef (132)
FunctionDef (132)
None (132)
None (132)
InferenceError (132)
1def _safe_infer_call_result(
2 node: nodes.FunctionDef,
3 caller: nodes.FunctionDef,
4 context: InferenceContext | None = None,
5) -> InferenceResult | None:
6 """Safely infer the return value of a function.
7
8 Returns None if inference failed or if there is some ambiguity (more than
9 one node has been inferred). Otherwise, returns inferred value.
10 """
11 try:
12 inferit = node.infer_call_result(caller, context=context)
13 value = next(inferit)
14 except astroid.InferenceError:
15 return None # inference failed
16 except StopIteration:
17 return None # no values inferred
18 try:
19 next(inferit)
20 return None # there is ambiguity on the inferred node
21 except astroid.InferenceError:
22 return None # there is some kind of ambiguity
23 except StopIteration:
24 return value
Path 3: 41 calls (0.02)
FunctionDef (41)
FunctionDef (41)
None (41)
None (41)
1def _safe_infer_call_result(
2 node: nodes.FunctionDef,
3 caller: nodes.FunctionDef,
4 context: InferenceContext | None = None,
5) -> InferenceResult | None:
6 """Safely infer the return value of a function.
7
8 Returns None if inference failed or if there is some ambiguity (more than
9 one node has been inferred). Otherwise, returns inferred value.
10 """
11 try:
12 inferit = node.infer_call_result(caller, context=context)
13 value = next(inferit)
14 except astroid.InferenceError:
15 return None # inference failed
16 except StopIteration:
17 return None # no values inferred
18 try:
19 next(inferit)
20 return None # there is ambiguity on the inferred node
21 except astroid.InferenceError:
22 return None # there is some kind of ambiguity
23 except StopIteration:
24 return value