Coverage for async_durable_execution/_operation/invoke.py: 100%
10 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-08-30 23:43 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-08-30 23:43 +0000
1"""User-facing durable chained-invoke operation."""
3from __future__ import annotations
5import asyncio
6from typing import TypeVar
8from .._core import OperationSubType, SerDes
9from ..extension import get_extension_context
11P = TypeVar("P")
12R = TypeVar("R")
15def invoke(
16 function_name: str,
17 payload: P,
18 *,
19 name: str | None = None,
20 serdes_payload: SerDes[P] | None = None,
21 serdes_result: SerDes[R] | None = None,
22 tenant_id: str | None = None,
23) -> asyncio.Task[R]:
24 """Invoke another durable Lambda function and wait for its durable result.
26 Args:
27 function_name: Qualified Lambda function name or ARN to invoke.
28 payload: Payload to send to the invoked function.
29 name: Optional durable operation name.
30 serdes_payload: Optional serializer for the invocation payload.
31 serdes_result: Optional deserializer for the invocation result.
32 tenant_id: Optional tenant identifier for the chained invocation.
33 """
34 return (
35 get_extension_context()
36 ._reserve_sdk_operation( # noqa: SLF001
37 name,
38 )
39 ._run_invoke( # noqa: SLF001
40 function_name,
41 payload,
42 sub_type=OperationSubType.CHAINED_INVOKE,
43 serdes_payload=serdes_payload,
44 serdes_result=serdes_result,
45 tenant_id=tenant_id,
46 )
47 )
50__all__ = ["invoke"]