Skip to content

Commit 77ccecc

Browse files
committed
Made workflow_upsert_memo operate on info.raw_memo. Linter fixes.
1 parent 2c18c52 commit 77ccecc

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

temporalio/worker/_workflow_instance.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,6 @@ def __init__(self, det: WorkflowInstanceDetails) -> None:
218218
self._current_history_length = 0
219219
self._current_history_size = 0
220220
self._continue_as_new_suggested = False
221-
self._raw_memo: Optional[
222-
MutableMapping[str, temporalio.api.common.v1.Payload]
223-
] = dict(self._info.raw_memo.items())
224221
# Lazily loaded
225222
self._untyped_converted_memo: Optional[Mapping[str, Any]] = None
226223
# Handles which are ready to run on the next event loop iteration
@@ -1072,19 +1069,22 @@ def workflow_memo(self) -> Mapping[str, Any]:
10721069
if self._untyped_converted_memo is None:
10731070
self._untyped_converted_memo = {
10741071
k: self._payload_converter.from_payload(v)
1075-
for k, v in self._raw_memo.items()
1072+
for k, v in self._info.raw_memo.items()
10761073
}
10771074
return self._untyped_converted_memo
10781075

10791076
def workflow_memo_value(
10801077
self, key: str, default: Any, *, type_hint: Optional[Type]
10811078
) -> Any:
1082-
payload = self._raw_memo.get(key)
1079+
payload = self._info.raw_memo.get(key)
10831080
if not payload:
10841081
if default is temporalio.common._arg_unset:
10851082
raise KeyError(f"Memo does not have a value for key {key}")
10861083
return default
1087-
return self._payload_converter.from_payload(payload, type_hint)
1084+
return self._payload_converter.from_payload(
1085+
payload,
1086+
type_hint, # type: ignore[arg-type]
1087+
)
10881088

10891089
def workflow_upsert_memo(self, updates: Mapping[str, Any]) -> None:
10901090
# Converting before creating a command so that we don't leave a partial command in case of conversion failure.
@@ -1103,13 +1103,19 @@ def workflow_upsert_memo(self, updates: Mapping[str, Any]) -> None:
11031103
command = self._add_command()
11041104
fields = command.modify_workflow_properties.upserted_memo.fields
11051105

1106+
# Updating memo inside info by downcasting to mutable mapping.
1107+
mut_raw_memo = cast(
1108+
MutableMapping[str, temporalio.api.common.v1.Payload],
1109+
self._info.raw_memo,
1110+
)
1111+
11061112
for k, v in update_payloads.items():
11071113
fields[k].CopyFrom(v)
1108-
self._raw_memo[k] = v
1114+
mut_raw_memo[k] = v
11091115

11101116
for k in removals:
11111117
fields.get_or_create(k)
1112-
self._raw_memo.pop(k, None)
1118+
mut_raw_memo.pop(k, None)
11131119

11141120
# Clearing cached value, will be regenerated on next workflow_memo() call.
11151121
self._untyped_converted_memo = None

0 commit comments

Comments
 (0)