(
        self, plugin_type: Optional[Type[Plugin]] = None
    )
return ret
:param plugin_type: class of plugin to discover, None for all
        :return: a list of plugins implementing the plugin type (or all if plugin type is None)
:param plugin_type: class of plugin to discover, None for all
        :return: a list of plugins implementing the plugin type (or all if plugin type is None)
: param plugin_type : class of plugin to discover None for all : return : a list of plugins implementing the plugin type ( or all if plugin type is None )
def discover(
        self, plugin_type: Optional[Type[Plugin]] = None
    ) -> List[Type[Plugin]]:
        """
        :param plugin_type: class of plugin to discover, None for all
        :return: a list of plugins implementing the plugin type (or all if plugin type is None)
        """
        Plugins.check_usage(self)
        ret: List[Type[Plugin]] = []
        if plugin_type is None:
            plugin_type = Plugin
        assert issubclass(plugin_type, Plugin)
        if plugin_type not in self.plugin_type_to_subclass_list:
            return []
        for clazz in self.plugin_type_to_subclass_list[plugin_type]:
            ret.append(clazz)

        return ret
def discover ( self , plugin_type : Optional [ Type [ Plugin ] ] = None ) -> List [ Type [ Plugin ] ] : Plugins . check_usage ( self ) ret : List [ Type [ Plugin ] ] = [ ] if plugin_type is None : plugin_type = Plugin assert issubclass ( plugin_type , Plugin ) if plugin_type not in self . plugin_type_to_subclass_list : return [ ] for clazz in self . plugin_type_to_subclass_list [ plugin_type ] : ret . append ( clazz ) return ret