Source code for pynenc.models.invocation_dto
from dataclasses import dataclass
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from pynenc.identifiers.call_id import CallId
from pynenc.identifiers.invocation_id import InvocationId
from pynenc.workflow.workflow_identity import WorkflowIdentity
[docs]
@dataclass(frozen=True)
class InvocationDTO:
"""Data transfer object for a distributed invocation.
Carries only invocation-level identity fields. References the call
by ``call_id`` / ``task_id`` rather than embedding a ``CallDTO``.
Parent invocations are referenced by ID only (flat, no recursion).
The state backend pairs this with a ``CallDTO`` when persisting;
the two DTOs are independent so backends can store them in separate
tables or collections if desired.
:param str invocation_id: Unique invocation identifier
:param CallId call_id: Call identifier (links to CallDTO)
:param WorkflowIdentity workflow: Workflow identity
:param InvocationReference | None parent_reference: Optional reference to parent invocation
"""
invocation_id: "InvocationId"
call_id: "CallId"
workflow: "WorkflowIdentity"
parent_invocation_id: "InvocationId | None"