Path 1: 214 calls (0.62)

BoolOp (124) Call (75) Compare (15)

None (139) Compare (36) Call (20) Assign (6) Return (5) UnaryOp (4) Subscript (1) Yield (1) AugAssign (1) BinOp (1)

False (206) True (8)

1def is_test_condition(
2    node: nodes.NodeNG,
3    parent: nodes.NodeNG | None = None,
4) -> bool:
5    """Returns true if the given node is being tested for truthiness."""
6    parent = parent or node.parent
7    if isinstance(parent, (nodes.While, nodes.If, nodes.IfExp, nodes.Assert)):
8        return node is parent.test or parent.test.parent_of(node)
9    if isinstance(parent, nodes.Comprehension):
10        return node in parent.ifs
11    return is_call_of_name(parent, "bool") and parent.parent_of(node)
            

Path 2: 129 calls (0.37)

BoolOp (96) Call (27) Compare (6)

None (102) Assert (15) If (9) While (2) IfExp (1)

True (127) False (2)

1def is_test_condition(
2    node: nodes.NodeNG,
3    parent: nodes.NodeNG | None = None,
4) -> bool:
5    """Returns true if the given node is being tested for truthiness."""
6    parent = parent or node.parent
7    if isinstance(parent, (nodes.While, nodes.If, nodes.IfExp, nodes.Assert)):
8        return node is parent.test or parent.test.parent_of(node)
9    if isinstance(parent, nodes.Comprehension):
10        return node in parent.ifs
11    return is_call_of_name(parent, "bool") and parent.parent_of(node)
            

Path 3: 4 calls (0.01)

BoolOp (4)

None (4)

True (3) False (1)

1def is_test_condition(
2    node: nodes.NodeNG,
3    parent: nodes.NodeNG | None = None,
4) -> bool:
5    """Returns true if the given node is being tested for truthiness."""
6    parent = parent or node.parent
7    if isinstance(parent, (nodes.While, nodes.If, nodes.IfExp, nodes.Assert)):
8        return node is parent.test or parent.test.parent_of(node)
9    if isinstance(parent, nodes.Comprehension):
10        return node in parent.ifs
11    return is_call_of_name(parent, "bool") and parent.parent_of(node)