code: def register_scheduler_config(
      name: str, dependencies: Optional[List[Tuple[str]]] = None
  ):
      """Register a scheduler config class by name.
  
      Args:
          name: the name to scheduler the parameter class under, does not need to correspond to the value of `type`
          dependencies: the list of scheduler dependency package name/install name pairs, e.g.
                        `("sklearn", "scikit-learn")`
  
      Returns:
          Wrapper function to decorate a `BaseSchedulerConfig` subclass
      """
  
      def wrap(
          scheduler_config: Type["BaseSchedulerConfig"],
      ) -> Type["BaseSchedulerConfig"]:  # noqa: F821
          """Add a parameter config class to the registry.
  
          Args:
              cls: a subclass of `BaseParameterConfig`
  
          Returns:
              `cls` unaltered
          """
          scheduler_config_registry[name] = scheduler_config
          scheduler_dependencies_registry[name] = (
              dependencies if dependencies is not None else []
          )
          return scheduler_config
  
      return wrap
  
file_path: ludwig/ludwig/schema/hyperopt/utils.py
imports: from typing import Callable, List, Optional, Tuple, Type
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.utils.registry import Registry
label_desc: Use image node_id 8 for calling a global function with example usage: register_scheduler_config(name, dependencies) and returns: wrap, scheduler_config