def generate(self, signature_data):
result = Result()<EOL>for rule in self.pipeline:<EOL><INDENT>rule_name = rule.__class__.__name__<EOL>try:<EOL><INDENT>if rule.predicate(signature_data, result):<EOL><INDENT>rule.action(signature_data, result)<EOL><DEDENT><DEDENT>except Exception as exc:<EOL><INDENT>if self.error_handler:<EOL><INDENT>self.error_handler(<EOL>signature_data,<EOL>exc_info=sys.exc_info(),<EOL>extra={'<STR_LIT>': rule_name}<EOL>)<EOL><DEDENT>result.info(rule_name, '<STR_LIT>', exc)<EOL><DEDENT><DEDENT>return result<EOL>
Takes data and returns a signature

        :arg dict signature_data: data to use to generate a signature

        :returns: ``Result`` instance