code: def setup(self, stage=None):
      if self._setup_done:
          return
  
      setup_data = {
          k: pickle.loads(v) for k, v in self.setup_data.items()
      }
  
      self._normalization_data_map = setup_data[
          "normalization_data_map"
      ]
      self._train_dataset = setup_data["train_dataset"]
      self._eval_dataset = setup_data["eval_dataset"]
  
      self._setup_done = True
  
imports: import abc
  import logging
  import pickle
  from typing import Dict, List, NamedTuple, Optional, Tuple
  from reagent.core.parameters import NormalizationData
  from reagent.data.data_fetcher import DataFetcher
  from reagent.data.oss_data_fetcher import OssDataFetcher
  from reagent.preprocessing.batch_preprocessor import BatchPreprocessor
  from reagent.workflow.types import Dataset, ReaderOptions, ResourceOptions, RewardOptions, TableSpec
  from .reagent_data_module import ReAgentDataModule
label_desc: Use image node_id 4 for calling the ManualDataModule obj's underlying member method code with example usage: obj.setup(stage) without return types