dev: добавлена обработка исключений в converter
This commit is contained in:
parent
a408710b9e
commit
945ce45621
@ -1,12 +1,8 @@
|
|||||||
import traceback
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from base.base import BaseDataConverter
|
from base.base import BaseDataConverter
|
||||||
|
|
||||||
|
|
||||||
# FIXME: костыль для выключения предупреждения "replace deprecated"
|
# FIXME: костыль для выключения предупреждения "replace deprecated"
|
||||||
pd.set_option('future.no_silent_downcasting', True)
|
pd.set_option('future.no_silent_downcasting', True)
|
||||||
|
|
||||||
@ -17,15 +13,16 @@ class DataConverter(BaseDataConverter):
|
|||||||
def _replace_bool(dataframe: pd.DataFrame) -> pd.DataFrame:
|
def _replace_bool(dataframe: pd.DataFrame) -> pd.DataFrame:
|
||||||
try:
|
try:
|
||||||
bool_columns = dataframe.columns[dataframe.isin([True, False]).all()]
|
bool_columns = dataframe.columns[dataframe.isin([True, False]).all()]
|
||||||
dataframe[bool_columns] = dataframe[bool_columns].replace({True: 1, False: 0})
|
dataframe.loc[:, bool_columns] = dataframe.loc[:, bool_columns].replace({True: 1, False: 0})
|
||||||
return dataframe
|
return dataframe
|
||||||
except:
|
except AttributeError as e:
|
||||||
# TODO: Обработка исключений!
|
logger.error(f"_replace_bool - AttributeError: Проверьте, что переданный объект является DataFrame. {e}")
|
||||||
# TODO: Осмысленное сообщение в лог. Без traceback и прочего подобного.
|
return None
|
||||||
tb = sys.exc_info()[2]
|
except (TypeError, ValueError) as e:
|
||||||
tbinfo = traceback.format_tb(tb)[0]
|
logger.error(f"_replace_bool - Ошибка типа или значения: {e}")
|
||||||
pymsg = "Traceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
|
return None
|
||||||
logger.error(pymsg)
|
except Exception as e:
|
||||||
|
logger.error(f"_replace_bool - Непредвиденная ошибка: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -47,16 +44,12 @@ class DataConverter(BaseDataConverter):
|
|||||||
dataframe.columns = new_columns
|
dataframe.columns = new_columns
|
||||||
# Удаляем повторяющиеся столбцы, оставляя только первое вхождение
|
# Удаляем повторяющиеся столбцы, оставляя только первое вхождение
|
||||||
dataframe = dataframe.loc[:, ~dataframe.columns.duplicated()]
|
dataframe = dataframe.loc[:, ~dataframe.columns.duplicated()]
|
||||||
|
|
||||||
return dataframe
|
return dataframe
|
||||||
except:
|
except AttributeError as e:
|
||||||
# TODO: Обработка исключений!
|
logger.error(f"_fix_headers - AttributeError: Проверьте, что переданный объект является DataFrame. {e}")
|
||||||
# TODO: Осмысленное сообщение в лог. Без traceback и прочего подобного.
|
return None
|
||||||
tb = sys.exc_info()[2]
|
except Exception as e:
|
||||||
tbinfo = traceback.format_tb(tb)[0]
|
logger.error(f"_fix_headers - Непредвиденная ошибка: {e}")
|
||||||
pymsg = "Traceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
|
|
||||||
# TODO: Осмысленное сообщение в лог. Без traceback и прочего подобного.
|
|
||||||
logger.error(pymsg)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def convert_data(self, files: list[str]) -> None:
|
def convert_data(self, files: list[str]) -> None:
|
||||||
@ -64,14 +57,14 @@ class DataConverter(BaseDataConverter):
|
|||||||
dataframes = [pd.read_csv(file) if file != '' else None for file in files]
|
dataframes = [pd.read_csv(file) if file != '' else None for file in files]
|
||||||
renamed_dataframes = list(map(self._fix_headers, dataframes))
|
renamed_dataframes = list(map(self._fix_headers, dataframes))
|
||||||
converted_dataframes = list(map(self._replace_bool, renamed_dataframes))
|
converted_dataframes = list(map(self._replace_bool, renamed_dataframes))
|
||||||
except:
|
except FileNotFoundError as e:
|
||||||
# TODO: Обработка исключений!
|
logger.error(f"convert_data - FileNotFoundError: Файл не найден. {e}")
|
||||||
# Get the traceback object
|
converted_dataframes = [None]
|
||||||
tb = sys.exc_info()[2]
|
except pd.errors.EmptyDataError as e:
|
||||||
tbinfo = traceback.format_tb(tb)[0]
|
logger.error(f"convert_data - EmptyDataError: Файл пустой. {e}")
|
||||||
pymsg = "Traceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
|
converted_dataframes = [None]
|
||||||
# TODO: Осмысленное сообщение в лог. Без traceback и прочего подобного.
|
except Exception as e:
|
||||||
logger.error(pymsg)
|
logger.error(f"convert_data - Непредвиденная ошибка: {e}")
|
||||||
converted_dataframes = [None]
|
converted_dataframes = [None]
|
||||||
finally:
|
finally:
|
||||||
self._mediator.notify(self, converted_dataframes)
|
self._mediator.notify(self, converted_dataframes)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user