human
Complete this python program:
def ancestors(variable_list, blockers=None):
assistant
#Here is the Python code you requested.

    """Return the variables that contribute to those in variable_list (inclusive).
    Parameters
    variable_list : list of `Variable` instances
    Output `Variable` instances from which to search backward through
    owners.
    Returns
    list of `Variable` instances
    All input nodes, in the order found by a left-recursive depth-first
    search started at the nodes in `variable_list`.
    """
    def expand(r):
        if (r.owner and ((not blockers) or (r not in blockers))):
            return reversed(r.owner.inputs)
    dfs_variables = stack_search(deque(variable_list), expand, 'dfs')
    return dfs_variables