|
@@ -8,35 +8,45 @@ Created on Fri Sep 27 14:20:58 2019
|
|
|
|
|
|
import os
|
|
|
import sys
|
|
|
-import logging
|
|
|
import pandas as pd
|
|
|
+from cdplib.log import Log
|
|
|
+
|
|
|
sys.path.append(os.getcwd())
|
|
|
|
|
|
|
|
|
class ExceptionsHandler:
|
|
|
'''
|
|
|
'''
|
|
|
- def __init__(self):
|
|
|
+ def __init__(self, logger: Log = None):
|
|
|
'''
|
|
|
'''
|
|
|
+ self._logger = logger or Log("ExceptionHandler")
|
|
|
|
|
|
- def check_is_file(self, path, logger=None):
|
|
|
+ def check_is_file(self, path: str):
|
|
|
'''
|
|
|
'''
|
|
|
- if logger is None:
|
|
|
- logger = logging.getLogger()
|
|
|
-
|
|
|
if not os.path.isfile(path):
|
|
|
err = "File {} not found".format(path)
|
|
|
- logger.error(err)
|
|
|
+ self._logger.error(err)
|
|
|
raise FileNotFoundError(err)
|
|
|
|
|
|
- def _check_column_abscence(self, columns: (str, list), data: pd.DataFrame,
|
|
|
- error_or_warning: str, logger = None):
|
|
|
+ def assert_is_directory(self, path: str):
|
|
|
+ ""
|
|
|
+ ""
|
|
|
+ assert(isinstance(path, str)),\
|
|
|
+ "Parameter 'path' must of str type"
|
|
|
+
|
|
|
+ dirname = os.path.dirname("path")
|
|
|
+
|
|
|
+ if len(dirname) > 0:
|
|
|
+ os.mkdir(dirname, exists_ok=True)
|
|
|
+
|
|
|
+ def _check_column_abscence(self,
|
|
|
+ columns: (str, list),
|
|
|
+ data: pd.DataFrame,
|
|
|
+ error_or_warning: str):
|
|
|
'''
|
|
|
'''
|
|
|
- if logger is None:
|
|
|
- logger = logging.getLogger()
|
|
|
if isinstance(columns, str):
|
|
|
columns = [columns]
|
|
|
|
|
@@ -44,23 +54,23 @@ class ExceptionsHandler:
|
|
|
|
|
|
if column not in data.columns:
|
|
|
err = ("{} is not an internal column name".format(column))
|
|
|
- getattr(logger, error_or_warning)(err)
|
|
|
+ getattr(self._logger, error_or_warning)(err)
|
|
|
|
|
|
if error_or_warning == "error":
|
|
|
raise Exception(err)
|
|
|
|
|
|
- def error_column_abscence(self, columns: (str, list), data: pd.DataFrame, logger = None):
|
|
|
+ def error_column_abscence(self,
|
|
|
+ columns: (str, list),
|
|
|
+ data: pd.DataFrame):
|
|
|
'''
|
|
|
'''
|
|
|
return self._check_column_abscence(columns=columns,
|
|
|
data=data,
|
|
|
- error_or_warning="error",
|
|
|
- logger=logger)
|
|
|
+ error_or_warning="error")
|
|
|
|
|
|
- def warn_column_abscence(self, columns: (str, list), data: pd.DataFrame, logger = None):
|
|
|
+ def warn_column_abscence(self, columns: (str, list), data: pd.DataFrame):
|
|
|
'''
|
|
|
'''
|
|
|
return self._check_column_abscence(columns=columns,
|
|
|
data=data,
|
|
|
- error_or_warning="warning",
|
|
|
- logger=logger)
|
|
|
+ error_or_warning="warning")
|