Exemplo n.º 1
0
def sort_tuples(tuples, can_ignore=None):
    def get_node_key(t):
        return t[0]

    def get_dependency_keys(t):
        return t[1]

    def can_ignore_key(k):
        return k in can_ignore

    if can_ignore is None:
        can_ignore_func = None
    else:
        can_ignore_func = can_ignore_key

    return list(
        map(
            lambda t: t[0],
            toposort_from_dependency_info(tuples, get_node_key,
                                          get_dependency_keys,
                                          can_ignore_func)))
Exemplo n.º 2
0
def _sort_statuses(environ, local_state, statuses, missing_vars_getter):
    def get_node_key(status):
        # If we add a Requirement that isn't an EnvVarRequirement,
        # we can simply return the requirement object here as its
        # own key I believe. But for now that doesn't happen.
        assert hasattr(status.requirement, 'env_var')
        return status.requirement.env_var

    def get_dependency_keys(status):
        config_keys = set()
        for env_var in missing_vars_getter(status):
            config_keys.add(env_var)
        return config_keys

    def can_ignore_dependency_on_key(key):
        # if a key is already in the environment, we don't have to
        # worry about it existing as a node in the graph we are
        # toposorting
        return key in environ

    return toposort_from_dependency_info(statuses, get_node_key, get_dependency_keys, can_ignore_dependency_on_key)