def _remove_sig(signature, idempotent=False):
    """
    Remove the signature node from its parent, keeping any tail element.
    This is needed for eneveloped signatures.

    :param signature: Signature to remove from payload
    :type signature: XML ElementTree Element
    :param idempotent:
        If True, don't raise an error if signature is already detached from parent.
    :type idempotent: boolean
    """
    try:
        signaturep = next(signature.iterancestors())
    except StopIteration:
        if idempotent:
            return
        raise ValueError("Can't remove the root signature node")
    if signature.tail is not None:
        try:
            signatures = next(signature.itersiblings(preceding=True))
        except StopIteration:
            if signaturep.text is not None:
                signaturep.text = signaturep.text + signature.tail
            else:
                signaturep.text = signature.tail
        else:
            if signatures.tail is not None:
                signatures.tail = signatures.tail + signature.tail
            else:
                signatures.tail = signature.tail
    signaturep.remove(signature)
def _remove_sig ( signature , idempotent = False ) : try : signaturep = next ( signature . iterancestors ( ) ) except StopIteration : if idempotent : return raise ValueError ( "Can't remove the root signature node" ) if signature . tail is not None : try : signatures = next ( signature . itersiblings ( preceding = True ) ) except StopIteration : if signaturep . text is not None : signaturep . text = signaturep . text + signature . tail else : signaturep . text = signature . tail else : if signatures . tail is not None : signatures . tail = signatures . tail + signature . tail else : signatures . tail = signature . tail signaturep . remove ( signature )
Remove the signature node from its parent, keeping any tail element.
    This is needed for eneveloped signatures.

    :param signature: Signature to remove from payload
    :type signature: XML ElementTree Element
    :param idempotent:
        If True, don't raise an error if signature is already detached from parent.
    :type idempotent: boolean