code: def initialise_by_names(self, plugins=None):
          
  
          if plugins is None:
              plugins = []
  
          self._log.debug("Plugins Initialisation started")
          if not isinstance(plugins, list):
              raise AttributeError("plugins must be a list, not %s" % type(plugins))
  
          self._log.debug("Plugins to initialise: %s" % ", ".join(plugins))
          plugin_initialised = []
          for plugin_name in plugins:
              if not isinstance(plugin_name, str):
                  raise AttributeError("plugin name must be a str, not %s" % type(plugin_name))
  
              plugin_class = self.classes.get(plugin_name)
              self.initialise(plugin_class.clazz, plugin_name)
              plugin_initialised.append(plugin_name)
  
          self._log.info("Plugins initialised: %s" % ", ".join(plugin_initialised))
docs: Initialises given plugins, but does not activate them.
  
          This is needed to import and configure libraries, which are imported by used patterns, like GwFlask.
  
          After this action, all needed python modules are imported and configured.
          Also the groundwork application object is ready and contains functions and objects, which were added
          by patterns, like app.commands from GwCommandsPattern.
  
          The class of a given plugin must already be registered in the :class:`.PluginClassManager`.
  
          :param plugins: List of plugin names
          :type plugins: list of strings