Refactor parse_return_statement method to handle nested returns (#1549)
Fixes [Component Output] Custom component does not display output connection points in Langflow UI #1357
This commit is contained in:
parent
f0b93a9bd7
commit
3fbcd02bd9
1 changed files with 22 additions and 2 deletions
|
|
@ -6,6 +6,8 @@ from typing import Any, Dict, List, Type, Union
|
|||
|
||||
from cachetools import TTLCache, cachedmethod, keys
|
||||
from fastapi import HTTPException
|
||||
|
||||
|
||||
from langflow.interface.custom.schema import CallableCodeDetails, ClassCodeDetails
|
||||
|
||||
|
||||
|
|
@ -234,10 +236,28 @@ class CodeParser:
|
|||
|
||||
def parse_return_statement(self, node: ast.FunctionDef) -> bool:
|
||||
"""
|
||||
Parses the return statement of a function or method node.
|
||||
Parses the return statement of a function or method node, including nested returns.
|
||||
"""
|
||||
|
||||
return any(isinstance(n, ast.Return) for n in node.body)
|
||||
def has_return(node):
|
||||
if isinstance(node, ast.Return):
|
||||
return True
|
||||
elif isinstance(node, ast.If):
|
||||
return any(has_return(child) for child in node.body) or any(has_return(child) for child in node.orelse)
|
||||
elif isinstance(node, ast.Try):
|
||||
return (
|
||||
any(has_return(child) for child in node.body)
|
||||
or any(has_return(child) for child in node.handlers)
|
||||
or any(has_return(child) for child in node.finalbody)
|
||||
)
|
||||
elif isinstance(node, (ast.For, ast.While)):
|
||||
return any(has_return(child) for child in node.body) or any(has_return(child) for child in node.orelse)
|
||||
elif isinstance(node, ast.With):
|
||||
return any(has_return(child) for child in node.body)
|
||||
else:
|
||||
return False
|
||||
|
||||
return any(has_return(child) for child in node.body)
|
||||
|
||||
def parse_assign(self, stmt):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue