From 45c07a956899d7757a8b65835244c82a0f3c002a Mon Sep 17 00:00:00 2001
From: Felix Kleinert <f.kleinert@fz-juelich.de>
Date: Tue, 23 Mar 2021 17:51:11 +0100
Subject: [PATCH] include error traceback

---
 mlair/run_modules/pre_processing.py | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/mlair/run_modules/pre_processing.py b/mlair/run_modules/pre_processing.py
index 813873b8..422ae8ee 100644
--- a/mlair/run_modules/pre_processing.py
+++ b/mlair/run_modules/pre_processing.py
@@ -9,6 +9,7 @@ from typing import Tuple
 import multiprocessing
 import requests
 import psutil
+import traceback
 
 import numpy as np
 import pandas as pd
@@ -79,7 +80,10 @@ class PreProcessing(RunEnvironment):
         logging.debug(f"Number of training stations: {n_train}")
         logging.debug(f"Number of val stations: {n_val}")
         logging.debug(f"Number of test stations: {n_test}")
-        self.create_latex_report()
+        try:
+            self.create_latex_report()
+        except Exception as e:
+            logging.warning(f"Can't create latex report: {e} ")
 
     def create_latex_report(self):
         """
@@ -336,6 +340,14 @@ def f_proc(data_handler, station, name_affix, store, **kwargs):
     try:
         res = data_handler.build(station, name_affix=name_affix, store_processed_data=store, **kwargs)
     except (AttributeError, EmptyQueryResult, KeyError, requests.ConnectionError, ValueError) as e:
-        logging.info(f"remove station {station} because it raised an error: {e}")
+        formatted_lines = traceback.format_exc().splitlines()
+        logging.info(f"remove station {station} because it raised an error: {e} -> {' | '.join(f_inspect_error(formatted_lines))}")
         res = None
     return res, station
+
+
+def f_inspect_error(formatted):
+    for i in range(len(formatted) - 1, -1, -1):
+        if "mlair/mlair" not in formatted[i]:
+            return formatted[i - 3:i]
+    return formatted[-3:0]
-- 
GitLab