code: def load_backends(config, callback, internal_attributes):
      
      backend_modules = _load_plugins(config.get("CUSTOM_PLUGIN_MODULE_PATHS"), config["BACKEND_MODULES"], backend_filter,
                                      config["BASE"], internal_attributes, callback)
      logger.info("Setup backends: %s" % [backend.name for backend in backend_modules])
      return backend_modules
docs: Load all backend modules specified in the config
  
      :type config: satosa.satosa_config.SATOSAConfig
      :type callback:
      (satosa.context.Context, satosa.internal.InternalData) -> satosa.response.Response
      :type internal_attributes: dict[string, dict[str, str | list[str]]]
      :rtype: Sequence[satosa.backends.base.BackendModule]
  
      :param config: The configuration of the satosa proxy
      :param callback: Function that will be called by the backend after the authentication is done.
      :return: A list of backend modules