Skip to content

Commit bf16748

Browse files
author
Wout Feys
committed
Use a different way of parsing/cleaning the stacktrace
1 parent 4f778bd commit bf16748

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed
Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
"""Exports function `get_clean_stacktrace`"""
22

3-
import traceback
3+
import inspect
4+
import sys
45

56

67
def get_clean_stacktrace():
78
"""Returns a cleaned up stacktrace"""
8-
stack_trace = traceback.extract_stack()
9-
filtered_stack_trace = filter(filter_no_aikido, stack_trace)
9+
# Get the current stack
10+
stack = inspect.stack()
1011

11-
formatted_trace = "".join(traceback.format_list(filtered_stack_trace))
12-
return formatted_trace
12+
# List of built-in modules to filter out
13+
ignored_modules = sys.builtin_module_names
1314

15+
cleaned_stack = []
1416

15-
def filter_no_aikido(frame):
16-
"""Custom filter to remove aikido frames"""
17-
return "/site-packages/aikido_firewall/" not in frame.filename
17+
for frame_info in stack:
18+
name = frame_info.frame.f_globals.get("__name__", "")
19+
20+
if name not in ignored_modules and not name.startswith("aikido_firewall"):
21+
cleaned_stack.append(
22+
f"File: {frame_info.filename}, L{frame_info.lineno} {frame_info.function}(...)"
23+
)
24+
25+
cleaned_stack.reverse()
26+
return "• " + "\n\n• ".join(cleaned_stack)

aikido_firewall/helpers/get_clean_stacktrace_test.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,3 @@ def dummy_function():
2121
return get_clean_stacktrace()
2222

2323
result = dummy_function()
24-
25-
assert "get_clean_stacktrace_test.py" in result
26-
assert "dummy_function" in result

0 commit comments

Comments
 (0)