llmll's picture
Upload folder using huggingface_hub
02c783d verified
import re
import json
import ast
def extract_function_signatures(code):
function_defs = []
pattern = r'def\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)'
matches = re.finditer(pattern, code)
for match in matches:
func_name = match.group(1)
params = match.group(2)
function_defs.append(f"def {func_name}({params})")
return function_defs
def clear_code(code):
if "```python" in code:
code = code.split("```python")[-1].replace("<|im_end|>", "").replace("<|EOT|>", "")
if "```" in code:
code = code.split("```")[0]
return code
def extract_function_calls(code):
calls = []
pattern = r'([a-zA-Z0-9_]+)\s*\(([^)]*)\)'
matches = re.finditer(pattern, code)
for match in matches:
func_name = match.group(1)
args = match.group(2)
calls.append(f"{func_name}({args})")
return calls
def clear_json(response):
if type(response) is dict:
return response
elif type(response) is not str:
response = str(response)
base_response = response
try:
response = base_response.replace("\n", " ")
response = re.search('({.+})', response).group(0)
response = re.sub(r"(\w)'(\w|\s)", r"\1\\'\2", response)
result = ast.literal_eval(response)
return result
except (SyntaxError, NameError, AttributeError):
pass
try:
response = base_response.split('assistantfinal')[-1]
result = ast.literal_eval(response)
return result
except:
pass
try:
response = base_response.split('assistantfinal JSON')[-1]
result = ast.literal_eval(response)
return result
except:
pass
try:
response = base_response.split('assistantfinal json')[-1]
result = ast.literal_eval(response)
return result
except:
pass
try:
response = list(re.finditer(r'\{[\s\S]*?\}', base_response))[-1].group(0)
result = ast.literal_eval(response)
return result
except:
pass
return 'ERR_SYNTAX'