Skip to content

Commit 822f4da

Browse files
committed
Simplify
1 parent b729430 commit 822f4da

File tree

1 file changed

+22
-34
lines changed

1 file changed

+22
-34
lines changed

python/e2b_code_interpreter/models.py

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -425,28 +425,7 @@ def parse_output(
425425
on_result: Optional[OutputHandler[Result]] = None,
426426
on_error: Optional[OutputHandler[ExecutionError]] = None,
427427
):
428-
data = json.loads(output)
429-
data_type = data.pop("type")
430-
431-
if data_type == "result":
432-
result = Result(**data)
433-
execution.results.append(result)
434-
if on_result:
435-
on_result(result)
436-
elif data_type == "stdout":
437-
execution.logs.stdout.append(data["text"])
438-
if on_stdout:
439-
on_stdout(OutputMessage(data["text"], data["timestamp"], False))
440-
elif data_type == "stderr":
441-
execution.logs.stderr.append(data["text"])
442-
if on_stderr:
443-
on_stderr(OutputMessage(data["text"], data["timestamp"], True))
444-
elif data_type == "error":
445-
execution.error = ExecutionError(data["name"], data["value"], data["traceback"])
446-
if on_error:
447-
on_error(execution.error)
448-
elif data_type == "number_of_executions":
449-
execution.execution_count = data["execution_count"]
428+
_parse_output(execution, output, on_stdout, on_stderr, on_result, on_error)
450429

451430

452431
async def async_parse_output(
@@ -457,37 +436,46 @@ async def async_parse_output(
457436
on_result: Optional[OutputHandlerWithAsync[Result]] = None,
458437
on_error: Optional[OutputHandlerWithAsync[ExecutionError]] = None,
459438
):
439+
none_or_awaitable = _parse_output(
440+
execution, output, on_stdout, on_stderr, on_result, on_error
441+
)
442+
if inspect.isawaitable(none_or_awaitable):
443+
await none_or_awaitable
444+
445+
446+
def _parse_output(
447+
execution: Execution,
448+
output: str,
449+
on_stdout: Optional[OutputHandler[OutputMessage]] = None,
450+
on_stderr: Optional[OutputHandler[OutputMessage]] = None,
451+
on_result: Optional[OutputHandler[Result]] = None,
452+
on_error: Optional[OutputHandler[ExecutionError]] = None,
453+
) -> Union[None, Awaitable[Any]]:
460454
data = json.loads(output)
461455
data_type = data.pop("type")
462456

463457
if data_type == "result":
464458
result = Result(**data)
465459
execution.results.append(result)
466460
if on_result:
467-
cb = on_result(result)
468-
if inspect.isawaitable(cb):
469-
await cb
461+
return on_result(result)
470462
elif data_type == "stdout":
471463
execution.logs.stdout.append(data["text"])
472464
if on_stdout:
473-
cb = on_stdout(OutputMessage(data["text"], data["timestamp"], False))
474-
if inspect.isawaitable(cb):
475-
await cb
465+
return on_stdout(OutputMessage(data["text"], data["timestamp"], False))
476466
elif data_type == "stderr":
477467
execution.logs.stderr.append(data["text"])
478468
if on_stderr:
479-
cb = on_stderr(OutputMessage(data["text"], data["timestamp"], True))
480-
if inspect.isawaitable(cb):
481-
await cb
469+
return on_stderr(OutputMessage(data["text"], data["timestamp"], True))
482470
elif data_type == "error":
483471
execution.error = ExecutionError(data["name"], data["value"], data["traceback"])
484472
if on_error:
485-
cb = on_error(execution.error)
486-
if inspect.isawaitable(cb):
487-
await cb
473+
return on_error(execution.error)
488474
elif data_type == "number_of_executions":
489475
execution.execution_count = data["execution_count"]
490476

477+
return None
478+
491479

492480
@dataclass
493481
class Context:

0 commit comments

Comments
 (0)