From 0c5f5f4fc193536222025a40db81f8b045c41bec Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sun, 24 Mar 2024 16:34:12 -0300 Subject: [PATCH] Add dynamic function creation and execution helpers --- src/backend/langflow/helpers/flow.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/backend/langflow/helpers/flow.py b/src/backend/langflow/helpers/flow.py index eda5d3116..cfb0a9881 100644 --- a/src/backend/langflow/helpers/flow.py +++ b/src/backend/langflow/helpers/flow.py @@ -74,3 +74,31 @@ async def run_flow( types.append(input_dict.get("type", [])) return await graph.arun(inputs_list, inputs_components=inputs_components, types=types) + + +def extract_argument_signatures(arguments): + """ + Extracts and formats function argument signatures with type hints. + """ + type_mapping = {"str": "str"} # Extend this mapping as needed. + return [ + f"{arg['display_name'].replace(' ', '_').lower()}: {type_mapping.get(arg['type'], 'Any')}" for arg in arguments + ] + + +def create_function_definition(arg_signatures, body): + """ + Constructs the function definition string. + """ + func_signature = ", ".join(arg_signatures) + return f"def dynamic_function({func_signature}):\n{body}" + + +def define_dynamic_function(function_definition): + """ + Defines the dynamic function by executing the function definition string + within a local environment and returns the function object. + """ + local_env = {} + exec(function_definition, globals(), local_env) + return local_env["dynamic_function"]