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(