From fbb82608cdf18bbe942a14766b6f135da0ce6be8 Mon Sep 17 00:00:00 2001 From: Kwanghoon Choi Date: Thu, 12 Oct 2023 06:34:28 +0900 Subject: [PATCH] Fixed a bug in reporting Python code validation (#11522) - **Description:** fixed a bug in pal-chain when it reports Python code validation errors. When node.func does not have any ids, the original code tried to print node.func.id in raising ValueError. - **Issue:** n/a, - **Dependencies:** no dependencies, - **Tag maintainer:** @hazzel-cn, @eyurtsev - **Twitter handle:** @lazyswamp --------- Co-authored-by: Bagatur --- .../langchain_experimental/pal_chain/base.py | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/libs/experimental/langchain_experimental/pal_chain/base.py b/libs/experimental/langchain_experimental/pal_chain/base.py index 32ab235e09..2e21740478 100644 --- a/libs/experimental/langchain_experimental/pal_chain/base.py +++ b/libs/experimental/langchain_experimental/pal_chain/base.py @@ -226,24 +226,26 @@ class PALChain(Chain): or not code_validations.allow_imports ): for node in ast.walk(code_tree): - if ( - (not code_validations.allow_command_exec) - and isinstance(node, ast.Call) - and ( - ( - hasattr(node.func, "id") - and node.func.id in COMMAND_EXECUTION_FUNCTIONS + if (not code_validations.allow_command_exec) and isinstance( + node, ast.Call + ): + if ( + hasattr(node.func, "id") + and node.func.id in COMMAND_EXECUTION_FUNCTIONS + ): + raise ValueError( + f"Found illegal command execution function " + f"{node.func.id} in code {code}" ) - or ( - isinstance(node.func, ast.Attribute) - and node.func.attr in COMMAND_EXECUTION_FUNCTIONS + + if ( + isinstance(node.func, ast.Attribute) + and node.func.attr in COMMAND_EXECUTION_FUNCTIONS + ): + raise ValueError( + f"Found illegal command execution function " + f"{node.func.attr} in code {code}" ) - ) - ): - raise ValueError( - f"Found illegal command execution function " - f"{node.func.id} in code {code}" - ) if (not code_validations.allow_imports) and ( isinstance(node, ast.Import) or isinstance(node, ast.ImportFrom)