def _get_dependent(dependent_type, name, specs, root_spec_type):
    """
    Returns everything of type <dependent_type> that <name>, of type <root_spec_type> depends on
    Names only are returned in a set
    """
    spec = specs[root_spec_type].get(name)
    if spec is None:
        raise RuntimeError("{} {} was referenced but not found".format(root_spec_type, name))
    dependents = spec['depends'][dependent_type]
    all_dependents = set(dependents)
    for dep in dependents:
        all_dependents |= _get_dependent(dependent_type, dep, specs, dependent_type)
    return all_dependents
def _get_dependent(dependent_type, name, specs, root_spec_type):
    """
    Returns everything of type <dependent_type> that <name>, of type <root_spec_type> depends on
    Names only are returned in a set
    """
    spec = specs[root_spec_type].get(name)
    if spec is None:
        raise RuntimeError("{} {} was referenced but not found".format(root_spec_type, name))
    dependents = spec['depends'][dependent_type]
    all_dependents = set(dependents)
    for dep in dependents:
        all_dependents |= _get_dependent(dependent_type, dep, specs, dependent_type)
    return all_dependents
def _get_dependent ( dependent_type , name , specs , root_spec_type ) : spec = specs [ root_spec_type ] . get ( name ) if spec is None : raise RuntimeError ( "{} {} was referenced but not found" . format ( root_spec_type , name ) ) dependents = spec [ 'depends' ] [ dependent_type ] all_dependents = set ( dependents ) for dep in dependents : all_dependents |= _get_dependent ( dependent_type , dep , specs , dependent_type ) return all_dependents
Returns everything of type <dependent_type> that <name>, of type <root_spec_type> depends on
    Names only are returned in a set
Returns everything of type <dependent_type > that <name > of type <root_spec_type > depends on Names only are returned in a set