diff --git a/packages/syft/src/syft/assets/jinja/syft_exception.jinja2 b/packages/syft/src/syft/assets/jinja/syft_exception.jinja2 index bd4bc01635a..eab1977edb4 100644 --- a/packages/syft/src/syft/assets/jinja/syft_exception.jinja2 +++ b/packages/syft/src/syft/assets/jinja/syft_exception.jinja2 @@ -6,35 +6,47 @@
- {% if server_trace%} -
Server Trace:
-
{{server_trace | escape}}
-
-
+ {% if server_trace %} +
Server Trace:
+
+      {% if dev_mode %}
+        {{ server_trace | make_links | safe }}
+      {% else %}
+        {{ server_trace | escape }}
       {% endif %}
-      
Client Trace:
-
{{traceback_str | escape}}
+
+
+
+ {% endif %} +
Client Trace:
+
+      {% if dev_mode %}
+        {{ traceback_str | make_links | safe }}
+      {% else %}
+        {{ traceback_str | escape }}
+      {% endif %}
+    
+ .syft-exception-trace { + display: inline; + } + \ No newline at end of file diff --git a/packages/syft/src/syft/types/errors.py b/packages/syft/src/syft/types/errors.py index 72e7181f92c..d1255921a01 100644 --- a/packages/syft/src/syft/types/errors.py +++ b/packages/syft/src/syft/types/errors.py @@ -182,6 +182,7 @@ def _repr_html_(self) -> str: message=self._private_message or self.public, traceback_str=traceback_str, display=display, + dev_mode=is_dev_mode, ) return table_html diff --git a/packages/syft/src/syft/util/notebook_ui/components/tabulator_template.py b/packages/syft/src/syft/util/notebook_ui/components/tabulator_template.py index 21b4c48761e..4e93e82c45a 100644 --- a/packages/syft/src/syft/util/notebook_ui/components/tabulator_template.py +++ b/packages/syft/src/syft/util/notebook_ui/components/tabulator_template.py @@ -1,6 +1,7 @@ # stdlib import json import logging +import re import secrets from typing import Any @@ -20,8 +21,15 @@ logger = logging.getLogger(__name__) + +def make_links(text: str) -> str: + file_pattern = re.compile(r"([\w/.-]+\.py)\", line (\d+)") + return file_pattern.sub(r'\1, line \2', text) + + DEFAULT_ID_WIDTH = 110 jinja_env = jinja2.Environment(loader=jinja2.PackageLoader("syft", "assets/jinja")) # nosec +jinja_env.filters["make_links"] = make_links def create_tabulator_columns(