docstr: Parameters
  ----------
  source_dir: str
      The directory where the raw data collected from the Internet is saved, default "Path(__file__).parent/source"
  normalize_dir: str
      Directory for normalize data, default "Path(__file__).parent/normalize"
  max_workers: int
      Concurrent number, default is 1; Concurrent number, default is 1; when collecting data, it is recommended that max_workers be set to 1
  interval: str
      freq, value from [1min, 1d], default 1d
code: def __init__(
      self,
      source_dir=None,
      normalize_dir=None,
      max_workers=1,
      interval="1d",
  ):
      """
  
      Parameters
      ----------
      source_dir: str
          The directory where the raw data collected from the Internet is saved, default "Path(__file__).parent/source"
      normalize_dir: str
          Directory for normalize data, default "Path(__file__).parent/normalize"
      max_workers: int
          Concurrent number, default is 1; Concurrent number, default is 1; when collecting data, it is recommended that max_workers be set to 1
      interval: str
          freq, value from [1min, 1d], default 1d
      """
      if source_dir is None:
          source_dir = Path(self.default_base_dir).joinpath("source")
      self.source_dir = Path(source_dir).expanduser().resolve()
      self.source_dir.mkdir(parents=True, exist_ok=True)
  
      if normalize_dir is None:
          normalize_dir = Path(self.default_base_dir).joinpath(
              "normalize"
          )
      self.normalize_dir = Path(normalize_dir).expanduser().resolve()
      self.normalize_dir.mkdir(parents=True, exist_ok=True)
  
      self._cur_module = importlib.import_module("collector")
      self.max_workers = max_workers
      self.interval = interval
  
imports: import abc
  import time
  import datetime
  import importlib
  from pathlib import Path
  from typing import Type, Iterable
  from concurrent.futures import ProcessPoolExecutor
  import pandas
  from tqdm import tqdm
  from loguru import logger
  from joblib import Parallel, delayed
  from qlib.utils import code_to_fname
label_desc: Use image node_id 1 to create a new BaseRun object from inherited base classes: abc with example: obj = BaseRun(source_dir, normalize_dir, max_workers, interval)