def del_pipe(self, pipe, forced=False):
self.log.debug('<STR_LIT>' %(repr(self), repr(pipe), forced))<EOL>pipe = list(reversed(pipe))<EOL>for i in range(len(pipe) - <NUM_LIT:1>):<EOL><INDENT>edge = (self.resolve(pipe[i]), self.resolve(pipe[i + <NUM_LIT:1>]))<EOL>self.del_edge(edge)<EOL>self.log.debug('<STR_LIT>' %(repr(self), edge[<NUM_LIT:0>], edge[<NUM_LIT:1>]))<EOL>try:<EOL><INDENT>self.del_piper(edge[<NUM_LIT:0>], forced)<EOL>self.del_piper(edge[<NUM_LIT:1>], forced)<EOL><DEDENT>except DaggerError:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>
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.