parameters: (self, signature, handler, *args, **kwargs)
return_statement: return True
docstring: Wrapper to call into 3rd party signatures. This wrapper yields the
          event to the signature and handles matched signatures recursively.
docstring_summary: Wrapper to call into 3rd party signatures. This wrapper yields the
          event to the signature and handles matched signatures recursively.
docstring_tokens: Wrapper to call into 3rd party signatures . This wrapper yields the event to the signature and handles matched signatures recursively .
function: def call_signature(self, signature, handler, *args, **kwargs):
          """Wrapper to call into 3rd party signatures. This wrapper yields the
          event to the signature and handles matched signatures recursively."""
          try:
              if not signature.matched and handler(*args, **kwargs):
                  signature.matched = True
                  for sig in self.signatures:
                      self.call_signature(sig, sig.on_signature, signature)
          except:
              task_id = self.results.get("info", {}).get("id")
              log.exception(
                  "Failed to run '%s' of the %s signature",
                  handler.__name__, signature.name,
                  extra={"task_id": task_id}
              )
          return True
function_tokens: def call_signature ( self , signature , handler , * args , * * kwargs ) : try : if not signature . matched and handler ( * args , * * kwargs ) : signature . matched = True for sig in self . signatures : self . call_signature ( sig , sig . on_signature , signature ) except : task_id = self . results . get ( "info" , { } ) . get ( "id" ) log . exception ( "Failed to run '%s' of the %s signature" , handler . __name__ , signature . name , extra = { "task_id" : task_id } ) return True