def connect(self, datas=None):
<EOL>if datas:<EOL><INDENT>self.connect_inputs(datas)<EOL><DEDENT>postorder = self.postorder()<EOL>self.log.debug('<STR_LIT>' %(repr(self), repr(postorder)))<EOL>for piper in postorder:<EOL><INDENT>if not piper.connected and self[piper].nodes():<EOL><INDENT>inputs = [p for p in postorder if p in self[piper].nodes()]<EOL>inputs.sort(cmp=self.children_after_parents)<EOL>piper.connect(inputs)<EOL><DEDENT><DEDENT>self.log.debug('<STR_LIT>' % repr(self))<EOL>
Connects ``Pipers`` in the order input -> output. See ``Piper.connect``.
According to the pipes (topology). If "datas" is given will connect the
input ``Pipers`` to the input data see: ``Dagger.connect_inputs``.

Argumensts:

  - datas(sequence) [default: ``None``] valid sequence of input data.
    see: ``Dagger.connect_inputs``.