Stops a paused pipeline. This will a trigger a ``StopIteration`` in the
        inputs of the pipeline. And retrieve the buffered results. This will
        stop all ``Pipers`` and ``NuMaps``. Python will not terminate cleanly 
        if a pipeline is running or paused.

def stop(self):
        """
        Stops a paused pipeline. This will a trigger a ``StopIteration`` in the
        inputs of the pipeline. And retrieve the buffered results. This will
        stop all ``Pipers`` and ``NuMaps``. Python will not terminate cleanly 
        if a pipeline is running or paused.
        
        """
        if self._started.isSet() and \
           not self._running.isSet() and \
           not self._pausing.isSet():
            # stops the dagger
            super(Plumber, self).stop()
            # disconnects all pipers
            self.disconnect()
            self.stats['run_time'] = time() - self.stats['start_time']
            self._started.clear()
        else:
            raise PlumberError