class_docstr: (D)ata(L)oader (W)ith (P)arser for features and names
  
  Extracting this class so that QlibDataLoader and other dataloaders(such as QdbDataLoader) can share the fields.
class_docstr_tok: ["(","D",")","ata","(","L",")","oader","(","W",")","ith","(","P",")","arser","for","features","and","names","Extracting","this","class","so","that","QlibDataLoader","and","other","dataloaders","(","such","as","QdbDataLoader",")","can","share","the","fields","."]
code: def _parse_fields_info(
      self, fields_info: Union[list, tuple]
  ) -> Tuple[list, list]:
      if len(fields_info) == 0:
          raise ValueError("The size of fields must be greater than 0")
  
      if not isinstance(fields_info, (list, tuple)):
          raise TypeError("Unsupported type")
  
      if isinstance(fields_info[0], str):
          exprs = names = fields_info
      elif isinstance(fields_info[0], (list, tuple)):
          exprs, names = fields_info
      else:
          raise NotImplementedError(
              f"This type of input is not supported"
          )
      return exprs, names
  
imports: import abc
  import pickle
  from pathlib import Path
  import warnings
  import pandas
  from typing import Tuple, Union, List
  from qlib.data import D
  from qlib.utils import load_dataset, init_instance_by_config, time_to_slc_point
  from qlib.log import get_module_logger
  from qlib.utils.serial import Serializable
label_desc: Use image node_id 2 for calling the DLWParser obj's underlying member method code with example usage: obj._parse_fields_info(fields_info) and returns: exprs,  names