import pandas as pd import traceback import sys from loguru import logger # FIXME: костыль для выключения предупреждения "replace deprecated" pd.set_option('future.no_silent_downcasting', True) from utils.base.base import BaseDataConverter class DataConverter(BaseDataConverter): @staticmethod def _replace_bool(dataframe: pd.DataFrame) -> pd.DataFrame: try: bool_columns = dataframe.columns[dataframe.isin([True, False]).any()] dataframe[bool_columns] = dataframe[bool_columns].replace({True: 1, False: 0}) return dataframe except: return None def convert_data(self, files: list[str]) -> None: try: dataframes = [pd.read_csv(file) if file != '' else None for file in files] converted_dataframes = list(map(self._replace_bool, dataframes)) except: # Get the traceback object tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] pymsg = "Traceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1]) logger.error(pymsg) converted_dataframes = [None] finally: self._mediator.notify(self, converted_dataframes)