def find_field(self, messages):
        """
        Wrapper method selecting the backend to assign the protocol field.
        Various strategies are possible e.g.:
        1) Heuristics e.g. for Preamble
        2) Scoring based e.g. for Length
        3) Fulltext search for addresses based on participant subgroups

        :param messages: messages a field shall be searched for
        :type messages: list of Message
        """
        try:
            if self.backend == self.Backend.python:
                self._py_find_field(messages)
            elif self.backend == self.Backend.cython:
                self._cy_find_field(messages)
            elif self.backend == self.Backend.plainc:
                self._c_find_field(messages)
            else:
                raise ValueError("Unsupported backend {}".format(self.backend))
        except NotImplementedError:
            logger.info("Skipped {} because not implemented yet".format(self.__class__.__name__))
def find_field ( self , messages ) : try : if self . backend == self . Backend . python : self . _py_find_field ( messages ) elif self . backend == self . Backend . cython : self . _cy_find_field ( messages ) elif self . backend == self . Backend . plainc : self . _c_find_field ( messages ) else : raise ValueError ( "Unsupported backend {}" . format ( self . backend ) ) except NotImplementedError : logger . info ( "Skipped {} because not implemented yet" . format ( self . __class__ . __name__ ) )
Wrapper method selecting the backend to assign the protocol field.
        Various strategies are possible e.g.:
        1) Heuristics e.g. for Preamble
        2) Scoring based e.g. for Length
        3) Fulltext search for addresses based on participant subgroups

        :param messages: messages a field shall be searched for
        :type messages: list of Message