From 22dac5d167ec702890e3d6d0675a400e3cf9657e Mon Sep 17 00:00:00 2001
From: Daniel <d.hornung@indiscale.com>
Date: Thu, 14 Nov 2024 12:47:14 +0100
Subject: [PATCH] WIP: XLSX converter errors.

---
 .../table_json_conversion/convert.py          |  10 +++++-----
 .../data/simple_data_broken.xlsx              | Bin 8982 -> 9175 bytes
 .../table_json_conversion/test_read_xlsx.py   |   5 ++++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/caosadvancedtools/table_json_conversion/convert.py b/src/caosadvancedtools/table_json_conversion/convert.py
index a8df7ec2..37c39aae 100644
--- a/src/caosadvancedtools/table_json_conversion/convert.py
+++ b/src/caosadvancedtools/table_json_conversion/convert.py
@@ -54,9 +54,9 @@ def _column_id_to_chars(num):
     return _column_id_to_chars(int(num / 26) - 1) + chr(int(num % 26) + 65)
 
 
-def _format_exception_table(exceptions: list(tuple), worksheet_title: str,
-                            column_names: Optional[dict, list] = None,
-                            max_line_length: Optional[int] = 120) -> str:
+def _format_exception_table(exceptions: list[tuple], worksheet_title: str,
+                            column_names: Optional[Union[dict, list]] = None,
+                            max_line_length: int = 120) -> str:
     """
     Given a list of tuples containing a row and column number as well as an
     exception in that order, and the title of the current worksheet, returns
@@ -77,7 +77,7 @@ def _format_exception_table(exceptions: list(tuple), worksheet_title: str,
                         column_names[column_num] should return the name of
                         column column_names.
                         If given, exceptions will be clustered by column.
-    max_line_length:    int
+    max_line_length:    int, default=120
                         Soft cap for the line length of the resulting table
 
     Return
@@ -382,7 +382,7 @@ class XLSXConverter:
                     raise
                 self._errors[(sheet.title, row_idx)] = kerr.definitions
 
-        if exceptions != []:
+        if exceptions:
             exception_table = _format_exception_table(exceptions, sheet.title,
                                                       col_names)
             raise jsonschema.ValidationError(exception_table)
diff --git a/unittests/table_json_conversion/data/simple_data_broken.xlsx b/unittests/table_json_conversion/data/simple_data_broken.xlsx
index 361953f660f12cb37d979ff3b4c49895265131e3..0221570c942fc28f2b59a282f751781ff4a504fa 100644
GIT binary patch
delta 6743
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

delta 6534
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

diff --git a/unittests/table_json_conversion/test_read_xlsx.py b/unittests/table_json_conversion/test_read_xlsx.py
index 897cd10b..8fbf8a2a 100644
--- a/unittests/table_json_conversion/test_read_xlsx.py
+++ b/unittests/table_json_conversion/test_read_xlsx.py
@@ -126,11 +126,14 @@ def test_wrong_datatype():
             assert "J7" in line
         if "1.5 is not of type 'integer'" in line:
             assert "K7" in line
+        if "1.2345 is not of type 'integer'" in line:
+            assert "K8" in line
     # No additional type errors
     if "is not of type 'boolean'" in str(caught.value):   # ToDo: Remove when boolean is fixed
         assert str(caught.value).count("is not of type") == 3
     else:
-        assert str(caught.value).count("is not of type") == 2
+        assert str(caught.value).count("is not of type") == 2  # FIXME when everything works as
+        #                                                      # expected, set correct number.
 
 
 def test_additional_column():
-- 
GitLab