Connects input ``Pipers`` to "datas" input data  in the correct order 
        determined, by the ``Piper.ornament`` attribute and the ``Dagger._cmp`` 
        function.

        It is assumed that the input data is in the form of an iterator and
        that all inputs have the same number of input items. A pipeline will
        **deadlock** otherwise. 
        
        Arguments:
        
          - datas (sequence of sequences) An ordered sequence of inputs for 
            all input ``Pipers``.

def connect_inputs(self, datas):
        """
        Connects input ``Pipers`` to "datas" input data  in the correct order 
        determined, by the ``Piper.ornament`` attribute and the ``Dagger._cmp`` 
        function.

        It is assumed that the input data is in the form of an iterator and
        that all inputs have the same number of input items. A pipeline will
        **deadlock** otherwise. 
        
        Arguments:
        
          - datas (sequence of sequences) An ordered sequence of inputs for 
            all input ``Pipers``.
        
        """
        start_pipers = self.get_inputs()
        self.log.debug('%s trying to connect inputs in the order %s' % \
                      (repr(self), repr(start_pipers)))
        for piper, data in izip(start_pipers, datas):
            piper.connect([data])
        self.log.debug('%s succesfuly connected inputs' % repr(self))