code: def deepcopy_basic_type(obj: object) -> object:
      """
      deepcopy an object without copy the complicated objects.
          This is useful when you want to generate Qlib tasks and share the handler
  
      NOTE:
      - This function can't handle recursive objects!!!!!
  
      Parameters
      ----------
      obj : object
          the object to be copied
  
      Returns
      -------
      object:
          The copied object
      """
      if isinstance(obj, tuple):
          return tuple(deepcopy_basic_type(i) for i in obj)
      elif isinstance(obj, list):
          return list(deepcopy_basic_type(i) for i in obj)
      elif isinstance(obj, dict):
          return {k: deepcopy_basic_type(v) for k, v in obj.items()}
      else:
          return obj
  
file_path: qlib/qlib/utils/data.py
imports: from copy import deepcopy
  from typing import List, Union
  import pandas
  import numpy
label_desc: Use image node_id 3 for calling a global function with example usage: deepcopy_basic_type(obj) and returns: tuple, list, unknown, obj