docstr: Check whether the bin file after ``dump_bin.py`` is executed is consistent with the original csv file data
docstr_tok: ["Check","whether","the","bin","file","after","``","dump_bin.py","``","is","executed","is","consistent","with","the","original","csv","file","data"]
code: def check(self):
      """Check whether the bin file after ``dump_bin.py`` is executed is consistent with the original csv file data"""
      logger.info("start check......")
  
      error_list = []
      not_in_features = []
      compare_false = []
      with tqdm(total=len(self.csv_files)) as p_bar:
          with ProcessPoolExecutor(
              max_workers=self.max_workers
          ) as executor:
              for file_path, _check_res in zip(
                  self.csv_files,
                  executor.map(self._compare, self.csv_files),
              ):
                  symbol = file_path.name.strip(self.file_suffix)
                  if _check_res == self.NOT_IN_FEATURES:
                      not_in_features.append(symbol)
                  elif _check_res == self.COMPARE_ERROR:
                      error_list.append(symbol)
                  elif _check_res == self.COMPARE_FALSE:
                      compare_false.append(symbol)
                  p_bar.update()
  
      logger.info("end of check......")
      if error_list:
          logger.warning(f"compare error: {error_list}")
      if not_in_features:
          logger.warning(f"not in features: {not_in_features}")
      if compare_false:
          logger.warning(f"compare False: {compare_false}")
      logger.info(
          f"total {len(self.csv_files)}, {len(error_list)} errors, {len(not_in_features)} not in features, {len(compare_false)} compare false"
      )
  
file_path: qlib/scripts/check_dump_bin.py
imports: from pathlib import Path
  from concurrent.futures import ProcessPoolExecutor
  import qlib
  from qlib.data import D
  import fire
  import datacompy
  import pandas
  from tqdm import tqdm
  from loguru import logger
label_desc: Use image node_id 3 for calling the CheckBin obj's underlying member method code with example usage: obj.check() without return types