From 00a7d7991c0fca6f9f1ae4f0d6d6f9126ca8c4ad Mon Sep 17 00:00:00 2001 From: hishamhijjawi Date: Fri, 1 Mar 2024 16:27:23 -0800 Subject: [PATCH 1/4] Escape { to support dictionary in params --- visualiser/visualiser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visualiser/visualiser.py b/visualiser/visualiser.py index 417c0ac..5c76e9f 100644 --- a/visualiser/visualiser.py +++ b/visualiser/visualiser.py @@ -175,7 +175,7 @@ def wrapper(*args, **kwargs): # Current function signature looks as follows: # foo(1, 31, 0) or foo(a=1, b=31, c=0) function_signature = f"{function_name}({signature_args_string})" - function_label = f"{function_name}({label_args_string})" + function_label = f"{function_name}({label_args_string})".replace("{","\{").replace("}","\}") """""" """Details about caller function""" From a0769f4351acc7b1a2537d1d240a19faeb40b585 Mon Sep 17 00:00:00 2001 From: hishamhijjawi Date: Fri, 1 Mar 2024 16:48:51 -0800 Subject: [PATCH 2/4] Update visualiser.py --- visualiser/visualiser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visualiser/visualiser.py b/visualiser/visualiser.py index 5c76e9f..b6eeaf9 100644 --- a/visualiser/visualiser.py +++ b/visualiser/visualiser.py @@ -175,7 +175,8 @@ def wrapper(*args, **kwargs): # Current function signature looks as follows: # foo(1, 31, 0) or foo(a=1, b=31, c=0) function_signature = f"{function_name}({signature_args_string})" - function_label = f"{function_name}({label_args_string})".replace("{","\{").replace("}","\}") + function_label = re.escape(function_label) + function_label = function_label.replace("<","\<").replace(">","\>") """""" """Details about caller function""" From fc7ebf34aa1863ff944cce1dc4e8775b2d4f5409 Mon Sep 17 00:00:00 2001 From: hishamhijjawi Date: Fri, 1 Mar 2024 16:51:57 -0800 Subject: [PATCH 3/4] Update visualiser.py --- visualiser/visualiser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/visualiser/visualiser.py b/visualiser/visualiser.py index b6eeaf9..7d38ddd 100644 --- a/visualiser/visualiser.py +++ b/visualiser/visualiser.py @@ -175,6 +175,7 @@ def wrapper(*args, **kwargs): # Current function signature looks as follows: # foo(1, 31, 0) or foo(a=1, b=31, c=0) function_signature = f"{function_name}({signature_args_string})" + # Pydot needs us to escape certain special chars, namely { } and < > function_label = re.escape(function_label) function_label = function_label.replace("<","\<").replace(">","\>") """""" From a876b253b3e0663162dcda2fa93f6c3d970340d2 Mon Sep 17 00:00:00 2001 From: hishamhijjawi Date: Fri, 1 Mar 2024 19:39:00 -0800 Subject: [PATCH 4/4] Update visualiser.py --- visualiser/visualiser.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/visualiser/visualiser.py b/visualiser/visualiser.py index 7d38ddd..60dc43b 100644 --- a/visualiser/visualiser.py +++ b/visualiser/visualiser.py @@ -249,11 +249,12 @@ def wrapper(*args, **kwargs): if self.show_return_value: # If shape is set to record # Then separate function label and return value by a row + escaped_return_value = re.escape(str(result)).replace("<", "\<").replace(">", "\>") if "record" in self.node_properties_kwargs.values(): function_label = "{" + \ - function_label + f"|{result} }}" + function_label + f"|{escaped_return_value} }}" else: - function_label += f"\n => {result}" + function_label += f"\n => {escaped_return_value}" child_node = pydot.Node(name=function_signature, label=function_label,