code: def get_dataloader(
      config, phase: Literal["train", "valid", "test", "evaluation"]
  ):
      """Return a dataloader class according to :attr:`config` and :attr:`phase`.
  
      Args:
          config (Config): An instance object of Config, used to record parameter information.
          phase (str): The stage of dataloader. It can only take 4 values: 'train', 'valid', 'test' or 'evaluation'.
              Notes: 'evaluation' has been deprecated, please use 'valid' or 'test' instead.
      Returns:
          type: The dataloader class that meets the requirements in :attr:`config` and :attr:`phase`.
      """
      if phase not in ["train", "valid", "test", "evaluation"]:
          raise ValueError(
              "`phase` can only be 'train', 'valid', 'test' or 'evaluation'."
          )
      if phase == "evaluation":
          phase = "test"
          warnings.warn(
              "'evaluation' has been deprecated, please use 'valid' or 'test' instead.",
              DeprecationWarning,
          )
  
      register_table = {
          "MultiDAE": _get_AE_dataloader,
          "MultiVAE": _get_AE_dataloader,
          "MacridVAE": _get_AE_dataloader,
          "CDAE": _get_AE_dataloader,
          "ENMF": _get_AE_dataloader,
          "RaCT": _get_AE_dataloader,
          "RecVAE": _get_AE_dataloader,
          "DiffRec": _get_AE_dataloader,
          "LDiffRec": _get_AE_dataloader,
      }
  
      if config["model"] in register_table:
          return register_table[config["model"]](config, phase)
  
      model_type = config["MODEL_TYPE"]
      if phase == "train":
          if model_type != ModelType.KNOWLEDGE:
              return TrainDataLoader
          else:
              return KnowledgeBasedDataLoader
      else:
          eval_mode = config["eval_args"]["mode"][phase]
          if eval_mode == "full":
              return FullSortEvalDataLoader
          else:
              return NegSampleEvalDataLoader
  
file_path: RecBole/recbole/data/utils.py
imports: import copy
  import importlib
  import os
  import pickle
  import warnings
  from typing import Literal
  from recbole.data.dataloader import *
  from recbole.sampler import KGSampler, Sampler, RepeatableSampler
  from recbole.utils import ModelType, ensure_dir, get_local_time, set_color
  from recbole.utils.argument_list import dataset_arguments
label_desc: Use image node_id 5 for calling a global function with example usage: get_dataloader(config, phase) and returns: register_table, TrainDataLoader, KnowledgeBasedDataLoader, FullSortEvalDataLoader, NegSampleEvalDataLoader