From b767a8c141de04906c4db5b695ae2e901b303545 Mon Sep 17 00:00:00 2001
From: "i.nueske" <i.nueske@indiscale.com>
Date: Mon, 16 Dec 2024 17:27:08 +0100
Subject: [PATCH] MNT: Add 'from e' to all orphaned 'raise's

---
 src/caosadvancedtools/cfood.py               | 4 ++--
 src/caosadvancedtools/pandoc_header_tools.py | 2 +-
 src/caosadvancedtools/table_export.py        | 8 ++++----
 src/caosadvancedtools/table_importer.py      | 8 ++++----
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py
index 9424134e..d2e30de5 100644
--- a/src/caosadvancedtools/cfood.py
+++ b/src/caosadvancedtools/cfood.py
@@ -693,7 +693,7 @@ def assure_has_property(entity, name, value, to_be_updated=None,
 
             try:
                 compare_time = datetime.fromisoformat(el.value)
-            except ValueError:
+            except ValueError as e:
                 # special case of wrong iso format
                 # time zone
                 tmp = el.value.split("+")
@@ -711,7 +711,7 @@ def assure_has_property(entity, name, value, to_be_updated=None,
                         ms = '.' + tmp[1] + '0'*(6-len(tmp[1]))
                     else:
                         raise ValueError(
-                            "invalid millisecond format in {}".format(el.value))
+                            "invalid millisecond format in {}".format(el.value)) from e
                 else:
                     ms = ""
                 tmp = tmp[0] + ms + tz_str
diff --git a/src/caosadvancedtools/pandoc_header_tools.py b/src/caosadvancedtools/pandoc_header_tools.py
index a6879565..fec27cdb 100644
--- a/src/caosadvancedtools/pandoc_header_tools.py
+++ b/src/caosadvancedtools/pandoc_header_tools.py
@@ -141,7 +141,7 @@ it is not at the beginning, it must be preceded by a blank line.
         try:
             yaml_part = yaml.load("\n".join(headerlines), Loader=yaml.BaseLoader)
         except yaml.scanner.ScannerError as e:
-            raise ParseErrorsInHeader(filename, e)
+            raise ParseErrorsInHeader(filename, e) from e
         # except yaml.error.MarkedYAMLError as e:
         #     raise NoValidHeader(filename)
         if not isinstance(yaml_part, dict):
diff --git a/src/caosadvancedtools/table_export.py b/src/caosadvancedtools/table_export.py
index 78830b19..1805419b 100644
--- a/src/caosadvancedtools/table_export.py
+++ b/src/caosadvancedtools/table_export.py
@@ -125,10 +125,10 @@ class BaseTableExporter(object):
             try:
                 with open(export_dict, encoding="utf-8") as tmp:
                     self.export_dict = json.load(tmp)
-            except Exception:
+            except Exception as e:
                 raise ValueError(
                     "export_dict must be either a dictionary"
-                    " or the path to a json file.")
+                    " or the path to a json file.") from e
         self.record = record
         self._check_sanity_of_export_dict()
         self.raise_error_if_missing = raise_error_if_missing
@@ -159,7 +159,7 @@ class BaseTableExporter(object):
                     logger.debug(exc)
                     errmssg = "Empty or invalid query '{}' for entry {}".format(
                         q, e)
-                    raise TableExportError(errmssg)
+                    raise TableExportError(errmssg) from exc
 
                 if val is not None:
                     self.info[e] = val
@@ -189,7 +189,7 @@ class BaseTableExporter(object):
                         errmssg += ", nor does record {} have a property of that name".format(
                             self.record.id)
                     errmssg += "."
-                    raise TableExportError(errmssg)
+                    raise TableExportError(errmssg) from exc
 
         if self.missing:
             errmssg = "The following mandatory entries are missing:\n"
diff --git a/src/caosadvancedtools/table_importer.py b/src/caosadvancedtools/table_importer.py
index b3977b39..b061092e 100755
--- a/src/caosadvancedtools/table_importer.py
+++ b/src/caosadvancedtools/table_importer.py
@@ -497,7 +497,7 @@ class XLSImporter(TableImporter):
                                                      str(e)),
                 extra={'identifier': str(filename),
                        'category': "inconsistency"})
-            raise DataInconsistencyError(*e.args)
+            raise DataInconsistencyError(*e.args) from e
 
         if len(xls_file.sheet_names) > 1:
             # Multiple sheets is the default now. Only show in debug
@@ -515,7 +515,7 @@ class XLSImporter(TableImporter):
                 "Cannot parse {}.\n{}".format(filename, e),
                 extra={'identifier': str(filename),
                        'category': "inconsistency"})
-            raise DataInconsistencyError(*e.args)
+            raise DataInconsistencyError(*e.args) from e
 
         df = self.check_dataframe(df, filename)
 
@@ -537,7 +537,7 @@ class CSVImporter(TableImporter):
                 "Cannot parse {}.\n{}".format(filename, ve),
                 extra={'identifier': str(filename),
                        'category': "inconsistency"})
-            raise DataInconsistencyError(*ve.args)
+            raise DataInconsistencyError(*ve.args) from ve
         except TypeError as te:
             # Iterate through the columns and rows to identify
             # problematic cells with wrong types.
@@ -577,7 +577,7 @@ class CSVImporter(TableImporter):
                 for err in error_list:
                     msg += f"  * column \"{err[0]}\": Expected \"{err[1]}\" but found \"{err[2]}\".\n"
                 msg += '\n'
-            raise DataInconsistencyError(msg)
+            raise DataInconsistencyError(msg) from te
 
         df = self.check_dataframe(df, filename)
 
-- 
GitLab