chore: import upstream snapshot with attribution
tools_continuous_delivery / Private PyPI non-main branch release (push) Has been skipped
tools_continuous_delivery / Private PyPI main branch release (push) Failing after 2m42s
Publish Promptflow Doc / Build (push) Has been cancelled
Publish Promptflow Doc / Deploy (push) Has been cancelled
Flake8 Lint / flake8 (push) Has been cancelled
Spell check CI / Spell_Check (push) Has been cancelled
tools_continuous_delivery / Private PyPI non-main branch release (push) Has been skipped
tools_continuous_delivery / Private PyPI main branch release (push) Failing after 2m42s
Publish Promptflow Doc / Build (push) Has been cancelled
Publish Promptflow Doc / Deploy (push) Has been cancelled
Flake8 Lint / flake8 (push) Has been cancelled
Spell check CI / Spell_Check (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from promptflow.core import tool
|
||||
import ast
|
||||
import json
|
||||
|
||||
|
||||
def infinite_loop_check(code_snippet):
|
||||
tree = ast.parse(code_snippet)
|
||||
for node in ast.walk(tree):
|
||||
if isinstance(node, ast.While):
|
||||
if not node.orelse:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def syntax_error_check(code_snippet):
|
||||
try:
|
||||
ast.parse(code_snippet)
|
||||
except SyntaxError:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def error_fix(code_snippet):
|
||||
tree = ast.parse(code_snippet)
|
||||
for node in ast.walk(tree):
|
||||
if isinstance(node, ast.While):
|
||||
if not node.orelse:
|
||||
node.orelse = [ast.Pass()]
|
||||
return ast.unparse(tree)
|
||||
|
||||
|
||||
@tool
|
||||
def code_refine(original_code: str) -> str:
|
||||
|
||||
try:
|
||||
original_code = json.loads(original_code)["code"]
|
||||
fixed_code = None
|
||||
|
||||
if infinite_loop_check(original_code):
|
||||
fixed_code = error_fix(original_code)
|
||||
else:
|
||||
fixed_code = original_code
|
||||
|
||||
if syntax_error_check(fixed_code):
|
||||
fixed_code = error_fix(fixed_code)
|
||||
|
||||
return fixed_code
|
||||
except json.JSONDecodeError:
|
||||
return "JSONDecodeError"
|
||||
except Exception as e:
|
||||
return "Unknown Error:" + str(e)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
code = "{\n \"code\": \"distance_A = 10 * 0.5\\ndistance_B = 15 * t\\n\\n\
|
||||
equation: distance_A = distance_B\\n\\n\10 * 0.5 = 15 * t\\n\\nt = (10 * 0.5) / 15\\n\\nprint(t)\"\n}"
|
||||
code_refine = code_refine(code)
|
||||
print(code_refine)
|
||||
Reference in New Issue
Block a user