Skip to content

Commit 0563060

Browse files
author
Red Giuliano
committed
had to yarn-install in order to run, minor mode to support nested functions.
1 parent 46cd19c commit 0563060

File tree

2 files changed

+3508
-1788
lines changed

2 files changed

+3508
-1788
lines changed

zt_backend/utils/pyfile_parser.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,33 @@
1515
get_loaded_modules,
1616
get_functions,
1717
)
18+
19+
def remove_top_level_returns(code):
20+
"""
21+
Removes return statements from top-level functions while leaving nested functions intact.
22+
"""
23+
class TopLevelReturnRemover(ast.NodeTransformer):
24+
def __init__(self):
25+
super().__init__()
26+
self.in_top_level = False
27+
28+
def visit_FunctionDef(self, node):
29+
# If entering a top-level function, mark it
30+
if not self.in_top_level:
31+
self.in_top_level = True
32+
node.body = [stmt for stmt in node.body if not isinstance(stmt, ast.Return)]
33+
self.in_top_level = False
34+
else:
35+
# Leave nested functions intact
36+
self.generic_visit(node)
37+
return node
38+
39+
# Parse, transform, and unparse the code
40+
tree = ast.parse(code)
41+
transformer = TopLevelReturnRemover()
42+
transformed_tree = transformer.visit(tree)
43+
return ast.unparse(transformed_tree)
44+
1845
def parse_cell(func):
1946
"""
2047
Inspect the function to detect:
@@ -45,9 +72,7 @@ def parse_cell(func):
4572
def filter_return_statements(node):
4673
"""Recursively remove trivial returns from function bodies."""
4774
if isinstance(node, ast.FunctionDef):
48-
node.body = [filter_return_statements(subnode) for subnode in node.body if not (isinstance(subnode, ast.Return) and not subnode.value)]
49-
elif isinstance(node, ast.Module):
50-
node.body = [filter_return_statements(subnode) for subnode in node.body]
75+
node.body = [filter_return_statements(subnode) for subnode in node.body if not (isinstance(subnode, ast.Return))]
5176
return node
5277

5378
# Remove trivial returns from the function body

0 commit comments

Comments
 (0)