code: def del_pipe(self, pipe, forced=False):
          
          self.log.debug('%s removes pipe%s forced: %s' % \
                        (repr(self), repr(pipe), forced))
          pipe = list(reversed(pipe))
          for i in xrange(len(pipe) - 1):
              edge = (self.resolve(pipe[i]), self.resolve(pipe[i + 1]))
              self.del_edge(edge)
              self.log.debug('%s removed the %s>>>%s edge' % \
                            (repr(self), edge[0], edge[1]))
              try:
                  self.del_piper(edge[0], forced)
                  self.del_piper(edge[1], forced)
              except DaggerError:
                  pass
docs: Deletes a pipe (A, ..., N) which is an N-``tuple`` of ``Piper`` 
          instances. Deleting a pipe means to delete all the connections between 
          ``Pipers`` and to delete all the ``Pipers``. If "forced" is ``False`` 
          only ``Pipers`` which are not used anymore (i.e. have not downstream 
          ``Pipers``) are deleted.
  
          The direction of the edges in the ``DictGraph`` is reversed compared to 
          the left to right data-flow in a pipe.
  
          Arguments:
  
            - pipe(sequence) N-``tuple`` of ``Piper`` instances or objects which 
              can be resolved in the ``Dagger`` (see: ``Dagger.resolve``). The 
              ``Pipers`` are removed in the order from right to left.
              
            - forced(``bool``) [default: ``False``] The forced argument will be 
              given to the ``Dagger.del_piper`` method. If "forced" is ``False`` 
              only ``Pipers`` with no outgoing pipes will be deleted.