@@ -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