Source code for agentscope_runtime.engine.deployers.utils.app_runner_utils
# -*- coding: utf-8 -*-
"""Helpers for working with AgentApp objects inside deployers."""
from __future__ import annotations
from typing import Any, Optional, TYPE_CHECKING
if TYPE_CHECKING: # pragma: no cover
from ...runner import Runner
[docs]
def ensure_runner_from_app(app: Any) -> Optional["Runner"]:
"""Return a Runner extracted from an AgentApp instance.
Builds the runner lazily if the app hasn't initialized it yet.
"""
if app is None:
return None
runner = getattr(app, "_runner", None)
if runner is not None:
return runner
build_runner = getattr(app, "_build_runner", None)
if callable(build_runner):
build_runner()
runner = getattr(app, "_runner", None)
return runner