Registers new plugins.

        The registration only creates a new entry for a plugin inside the _classes dictionary.
        It does not activate or even initialise the plugin.

        A plugin must be a class, which inherits directly or indirectly from GwBasePattern.

        :param classes: List of plugin classes
        :type classes: list

def register(self, classes=[]):
        """
        Registers new plugins.

        The registration only creates a new entry for a plugin inside the _classes dictionary.
        It does not activate or even initialise the plugin.

        A plugin must be a class, which inherits directly or indirectly from GwBasePattern.

        :param classes: List of plugin classes
        :type classes: list
        """
        if not isinstance(classes, list):
            raise AttributeError("plugins must be a list, not %s." % type(classes))

        plugin_registered = []

        for plugin_class in classes:
            plugin_name = plugin_class.__name__
            self.register_class(plugin_class, plugin_name)
            self._log.debug("Plugin %s registered" % plugin_name)
            plugin_registered.append(plugin_name)

        self._log.info("Plugins registered: %s" % ", ".join(plugin_registered))