MCPcopy Index your code
hub / github.com/1Panel-dev/MaxKB / ReturnTransformer

Class ReturnTransformer

apps/common/utils/tool_code.py:249–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

247
248 # 修改 return 语句为 return Result(result=..., tool_id=...)
249 class ReturnTransformer(ast.NodeTransformer):
250 def __init__(self, func_name):
251 self.func_name = func_name
252
253 def visit_Return(self, node):
254 if node.value is None:
255 # return 语句没有返回值
256 new_return = ast.Return(
257 value=ast.Call(
258 func=ast.Name(id="Result", ctx=ast.Load()),
259 args=[],
260 keywords=[
261 ast.keyword(arg="result", value=ast.Constant(value=None)),
262 ast.keyword(arg="tool_id", value=ast.Constant(value=tool_id)),
263 ],
264 )
265 )
266 else:
267 # return 语句有返回值
268 new_return = ast.Return(
269 value=ast.Call(
270 func=ast.Name(id="Result", ctx=ast.Load()),
271 args=[],
272 keywords=[
273 ast.keyword(arg="result", value=node.value),
274 ast.keyword(arg="tool_id", value=ast.Constant(value=tool_id)),
275 ],
276 )
277 )
278 return ast.copy_location(new_return, node)
279
280 transformer = ReturnTransformer(node.name)
281 node = transformer.visit(node)

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected