Skip to content

Commit

Permalink
Use unfinished_policy=HandlerUnfinishedPolicy.XXX
Browse files Browse the repository at this point in the history
  • Loading branch information
dandavison committed Jun 21, 2024
1 parent 21a5ed5 commit 62d7c03
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 28 deletions.
10 changes: 5 additions & 5 deletions temporalio/worker/_workflow_instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -1622,8 +1622,8 @@ def warnable(handler_executions: Iterable[HandlerExecution]):
return [
ex
for ex in handler_executions
if ex.unfinished_handlers_policy
== temporalio.workflow.UnfinishedHandlersPolicy.WARN_AND_ABANDON
if ex.unfinished_policy
== temporalio.workflow.HandlerUnfinishedPolicy.WARN_AND_ABANDON
]

warnable_updates = warnable(self._in_progress_updates.values())
Expand Down Expand Up @@ -2742,7 +2742,7 @@ class HandlerExecution:
"""Information about an execution of a signal or update handler."""

name: str
unfinished_handlers_policy: temporalio.workflow.UnfinishedHandlersPolicy
unfinished_policy: temporalio.workflow.HandlerUnfinishedPolicy
id: Optional[str] = None


Expand All @@ -2764,7 +2764,7 @@ def __str__(self) -> str:
Alternatively, if both you and the clients sending updates and signals are okay with interrupting
running handlers when the workflow finishes, and causing clients to receive errors, then you can
disable this warning via the update handler decorator:
`@workflow.update(unfinished_handlers_policy=workflow.UnfinishedHandlersPolicy.ABANDON)`.
`@workflow.update(unfinished_policy=workflow.HandlerUnfinishedPolicy.ABANDON)`.
""".replace(
"\n", " "
).strip()
Expand Down Expand Up @@ -2793,7 +2793,7 @@ def __str__(self) -> str:
you and the clients sending updates and signals are okay with interrupting running handlers when the
workflow finishes, and causing clients to receive errors, then you can disable this warning via the
signal handler decorator:
`@workflow.signal(unfinished_handlers_policy=workflow.UnfinishedHandlersPolicy.ABANDON)`.
`@workflow.signal(unfinished_policy=workflow.HandlerUnfinishedPolicy.ABANDON)`.
""".replace(
"\n", " "
).strip()
Expand Down
30 changes: 15 additions & 15 deletions temporalio/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def run(fn: CallableAsyncType) -> CallableAsyncType:
return fn # type: ignore[return-value]


class UnfinishedHandlersPolicy(Enum):
class HandlerUnfinishedPolicy(Enum):
"""Actions taken if a workflow terminates with running handlers.
Policy defining actions taken when a workflow exits while update or signal handlers are running.
Expand All @@ -195,7 +195,7 @@ def signal(fn: CallableSyncOrAsyncReturnNoneType) -> CallableSyncOrAsyncReturnNo
@overload
def signal(
*,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[[CallableSyncOrAsyncReturnNoneType], CallableSyncOrAsyncReturnNoneType]:
...

Expand All @@ -204,7 +204,7 @@ def signal(
def signal(
*,
name: str,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[[CallableSyncOrAsyncReturnNoneType], CallableSyncOrAsyncReturnNoneType]:
...

Expand All @@ -213,7 +213,7 @@ def signal(
def signal(
*,
dynamic: Literal[True],
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[[CallableSyncOrAsyncReturnNoneType], CallableSyncOrAsyncReturnNoneType]:
...

Expand All @@ -223,7 +223,7 @@ def signal(
*,
name: Optional[str] = None,
dynamic: Optional[bool] = False,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
):
"""Decorator for a workflow signal method.
Expand All @@ -250,7 +250,7 @@ def signal(

def decorator(
name: Optional[str],
unfinished_policy: UnfinishedHandlersPolicy,
unfinished_policy: HandlerUnfinishedPolicy,
fn: CallableSyncOrAsyncReturnNoneType,
) -> CallableSyncOrAsyncReturnNoneType:
if not name and not dynamic:
Expand Down Expand Up @@ -965,7 +965,7 @@ def update(
@overload
def update(
*,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[
[Callable[MultiParamSpec, ReturnType]],
UpdateMethodMultiParam[MultiParamSpec, ReturnType],
Expand All @@ -977,7 +977,7 @@ def update(
def update(
*,
name: str,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[
[Callable[MultiParamSpec, ReturnType]],
UpdateMethodMultiParam[MultiParamSpec, ReturnType],
Expand All @@ -989,7 +989,7 @@ def update(
def update(
*,
dynamic: Literal[True],
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
) -> Callable[
[Callable[MultiParamSpec, ReturnType]],
UpdateMethodMultiParam[MultiParamSpec, ReturnType],
Expand All @@ -1002,7 +1002,7 @@ def update(
*,
name: Optional[str] = None,
dynamic: Optional[bool] = False,
unfinished_policy: UnfinishedHandlersPolicy = UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy: HandlerUnfinishedPolicy = HandlerUnfinishedPolicy.WARN_AND_ABANDON,
):
"""Decorator for a workflow update handler method.
Expand Down Expand Up @@ -1036,7 +1036,7 @@ def update(

def decorator(
name: Optional[str],
unfinished_policy: UnfinishedHandlersPolicy,
unfinished_policy: HandlerUnfinishedPolicy,
fn: CallableSyncOrAsyncType,
) -> CallableSyncOrAsyncType:
if not name and not dynamic:
Expand Down Expand Up @@ -1517,8 +1517,8 @@ class _SignalDefinition:
name: Optional[str]
fn: Callable[..., Union[None, Awaitable[None]]]
is_method: bool
unfinished_policy: UnfinishedHandlersPolicy = (
UnfinishedHandlersPolicy.WARN_AND_ABANDON
unfinished_policy: HandlerUnfinishedPolicy = (
HandlerUnfinishedPolicy.WARN_AND_ABANDON
)
# Types loaded on post init if None
arg_types: Optional[List[Type]] = None
Expand Down Expand Up @@ -1601,8 +1601,8 @@ class _UpdateDefinition:
name: Optional[str]
fn: Callable[..., Union[Any, Awaitable[Any]]]
is_method: bool
unfinished_policy: UnfinishedHandlersPolicy = (
UnfinishedHandlersPolicy.WARN_AND_ABANDON
unfinished_policy: HandlerUnfinishedPolicy = (
HandlerUnfinishedPolicy.WARN_AND_ABANDON
)
# Types loaded on post init if None
arg_types: Optional[List[Type]] = None
Expand Down
16 changes: 8 additions & 8 deletions tests/worker/test_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -5117,12 +5117,12 @@ async def _do_update_or_signal(self) -> None:
async def my_update(self) -> None:
await self._do_update_or_signal()

@workflow.update(unfinished_policy=workflow.UnfinishedHandlersPolicy.ABANDON)
@workflow.update(unfinished_policy=workflow.HandlerUnfinishedPolicy.ABANDON)
async def my_update_ABANDON(self) -> None:
await self._do_update_or_signal()

@workflow.update(
unfinished_policy=workflow.UnfinishedHandlersPolicy.WARN_AND_ABANDON
unfinished_policy=workflow.HandlerUnfinishedPolicy.WARN_AND_ABANDON
)
async def my_update_WARN_AND_ABANDON(self) -> None:
await self._do_update_or_signal()
Expand All @@ -5131,12 +5131,12 @@ async def my_update_WARN_AND_ABANDON(self) -> None:
async def my_signal(self):
await self._do_update_or_signal()

@workflow.signal(unfinished_policy=workflow.UnfinishedHandlersPolicy.ABANDON)
@workflow.signal(unfinished_policy=workflow.HandlerUnfinishedPolicy.ABANDON)
async def my_signal_ABANDON(self):
await self._do_update_or_signal()

@workflow.signal(
unfinished_policy=workflow.UnfinishedHandlersPolicy.WARN_AND_ABANDON
unfinished_policy=workflow.HandlerUnfinishedPolicy.WARN_AND_ABANDON
)
async def my_signal_WARN_AND_ABANDON(self):
await self._do_update_or_signal()
Expand Down Expand Up @@ -5164,10 +5164,10 @@ async def run_test(self):
wait_for_handlers=False,
)
assert not handler_finished and warning
# and when the workflow sets the unfinished_handlers_policy to WARN_AND_ABANDON,
# and when the workflow sets the unfinished_policy to WARN_AND_ABANDON,
handler_finished, warning = await self.get_workflow_result_and_warning(
wait_for_handlers=False,
unfinished_policy=workflow.UnfinishedHandlersPolicy.WARN_AND_ABANDON,
unfinished_policy=workflow.HandlerUnfinishedPolicy.WARN_AND_ABANDON,
)
assert not handler_finished and warning
# but not when the workflow waits for handlers to complete,
Expand All @@ -5178,14 +5178,14 @@ async def run_test(self):
# nor when the silence-warnings policy is set on the handler.
handler_finished, warning = await self.get_workflow_result_and_warning(
wait_for_handlers=False,
unfinished_policy=workflow.UnfinishedHandlersPolicy.ABANDON,
unfinished_policy=workflow.HandlerUnfinishedPolicy.ABANDON,
)
assert not handler_finished and not warning

async def get_workflow_result_and_warning(
self,
wait_for_handlers: bool,
unfinished_policy: Optional[workflow.UnfinishedHandlersPolicy] = None,
unfinished_policy: Optional[workflow.HandlerUnfinishedPolicy] = None,
) -> Tuple[bool, bool]:
handle = await self.client.start_workflow(
UnfinishedHandlersWorkflow.run,
Expand Down

0 comments on commit 62d7c03

Please sign in to comment.