def del_piper(self, piper, forced=False):
self.log.debug('<STR_LIT>' %(repr(self), repr(piper)))<EOL>try:<EOL><INDENT>piper = self.resolve(piper, forgive=False)<EOL><DEDENT>except DaggerError:<EOL><INDENT>self.log.error('<STR_LIT>' %(repr(self), repr(piper)))<EOL>raise DaggerError('<STR_LIT>' %(repr(self), repr(piper)))<EOL><DEDENT>if self.incoming_edges(piper) and not forced:<EOL><INDENT>self.log.error('<STR_LIT>' %(repr(self), piper))<EOL>raise DaggerError('<STR_LIT>' %(repr(self), piper))<EOL><DEDENT>self.del_node(piper)<EOL>self.log.debug('<STR_LIT>' % (repr(self), piper))<EOL>
Removes a ``Piper`` from the ``Dagger`` instance.

Arguments:

  - piper(``Piper``  or id(``Piper``)) ``Piper`` instance or ``Piper`` 
    instance id.
  - forced(bool) [default: ``False``] If "forced" is ``True``, will not 
    raise a ``DaggerError`` if the ``Piper`` hase outgoing pipes and 
    will also remove it.