def _find_input_nodes()

in mobile_cv/arch/utils/fuse_utils.py [0:0]


def _find_input_nodes(cur_node, nodes_to_remove):
    """Find all nodes that produces outputs as the input for cur_node"""
    all_arg_users_in_to_remove = True
    for arg in cur_node.all_input_nodes:
        # Check uses, if all uses are to be removed, then
        # this node can also be removed.
        for arg_user_node in arg.users.keys():
            if arg_user_node not in nodes_to_remove:
                all_arg_users_in_to_remove = False
    if all_arg_users_in_to_remove:
        for arg in cur_node.all_input_nodes:
            nodes_to_remove.add(arg)
        for arg in cur_node.all_input_nodes:
            _find_input_nodes(arg, nodes_to_remove)
    else:
        return