def minimal_digraph(ID, units, streams, **graph_attrs): ins, outs = get_section_inlets_and_outlets(units, streams) product = Stream(None) product._ID = '' feed = Stream(None) feed._ID = '' feed_box = bst.units.DiagramOnlyStreamUnit('\n'.join([i.ID for i in ins]), None, feed) product_box = bst.units.DiagramOnlyStreamUnit( '\n'.join([i.ID for i in outs]), product, None) system_box = bst.units.DiagramOnlySystemUnit(ID, feed, product) return digraph_from_units((feed_box, system_box, product_box), **graph_attrs)
def extend_surface_units(ID, streams, units, surface_units, old_unit_connections): outs = [] ins = [] feeds = [] products = [] StreamUnit = bst.units.DiagramOnlyStreamUnit SystemUnit = bst.units.DiagramOnlySystemUnit for s in streams: source = s._source sink = s._sink if source in units and sink not in units: if sink: outs.append(s) else: products.append(s) u_io = (source, tuple(source.ins), tuple(source.outs)) old_unit_connections.add(u_io) elif sink in units and source not in units: if source: ins.append(s) else: feeds.append(s) u_io = (sink, tuple(sink.ins), tuple(sink.outs)) old_unit_connections.add(u_io) if len(feeds) > 1: feed = Stream(None) feed._ID = '' feeds = sort_streams(feeds) feed_box = StreamUnit('\n'.join([i.ID for i in feeds]) or '-', None, feed) ins.append(feed) else: feed_box = None ins += feeds if len(products) > 1: product = Stream(None) product._ID = '' products = sort_streams(products) product_box = StreamUnit('\n'.join([i.ID for i in products]) or '-', product, None) outs.append(product) else: product_box = None outs += products subsystem_unit = SystemUnit(ID, ins, outs) for i in (feed_box, subsystem_unit, product_box): if i: surface_units.append(i)