import pandas as pd

#FIXME: костыль для выключения предупреждения "replace deprecated". Потом надо поправить.
pd.set_option('future.no_silent_downcasting', True)

from src.utils.base.base import BaseDataConverter


class DataConverter(BaseDataConverter):

    @staticmethod
    def _replace_bool(dataframe: pd.DataFrame) -> pd.DataFrame:
        bool_columns = dataframe.columns[dataframe.isin([True, False]).any()]
        dataframe[bool_columns] = dataframe[bool_columns].replace({True: 1, False: 0})
        return dataframe

    def convert_data(self, files: list[str]) -> None:
        dataframes = [pd.read_csv(file) for file in files]
        converted_dataframes = list(map(self._replace_bool, dataframes))
        self._mediator.notify(self, converted_dataframes)
