コード例 #1
0
ファイル: transitive.py プロジェクト: ryppl/ryppl-cmake
def inplace_transitive_reduction(g):
    closure = lazydict(set, ((s,ts.copy()) for s,ts in g.items()))
    inplace_transitive_closure(closure)

    for s,ts in g.items():
        for t1 in ts.copy():
            if any(t2 != t1 and t1 in closure[t2] for t2 in ts):
                ts.remove(t1)
コード例 #2
0
ファイル: depgraph.py プロジェクト: ryppl/ryppl-cmake
def to_mutable_graph(dumps, successor_function=None, vertex_filter=lambda x: True):
    successor_function = successor_function or Successors(dumps)

    return lazydict(
        set,
        (
            (v, set(x for x in successor_function(dumps, v) if vertex_filter(x) and x != v))  # filter out self-loops
            for v in dumps
            if vertex_filter(v)
        ),
    )
コード例 #3
0
ファイル: read_dumps.py プロジェクト: ryppl/ryppl-cmake
def read_dumps(dump_dir = None):
    if dump_dir is None:
        ryppl = Path('/Users/dave/src/ryppl')
        dump_dir = ryppl / 'feeds' / 'dumps'

    all_dumps = lazydict(lambda:Element('__NOT_WHAT_YOURE_LOOKING_FOR__'))
    for cmake_dump_file in glob.glob(dump_dir/'*.xml'):
        cmake_dump = ElementTree()
        cmake_dump.parse(cmake_dump_file)
        camel_name = Path(cmake_dump_file).namebase
        all_dumps[camel_name] = cmake_dump

    return all_dumps