@@ -218,9 +218,6 @@ def __init__(self, det: WorkflowInstanceDetails) -> None:
218
218
self ._current_history_length = 0
219
219
self ._current_history_size = 0
220
220
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 ())
224
221
# Lazily loaded
225
222
self ._untyped_converted_memo : Optional [Mapping [str , Any ]] = None
226
223
# Handles which are ready to run on the next event loop iteration
@@ -1072,19 +1069,22 @@ def workflow_memo(self) -> Mapping[str, Any]:
1072
1069
if self ._untyped_converted_memo is None :
1073
1070
self ._untyped_converted_memo = {
1074
1071
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 ()
1076
1073
}
1077
1074
return self ._untyped_converted_memo
1078
1075
1079
1076
def workflow_memo_value (
1080
1077
self , key : str , default : Any , * , type_hint : Optional [Type ]
1081
1078
) -> Any :
1082
- payload = self ._raw_memo .get (key )
1079
+ payload = self ._info . raw_memo .get (key )
1083
1080
if not payload :
1084
1081
if default is temporalio .common ._arg_unset :
1085
1082
raise KeyError (f"Memo does not have a value for key { key } " )
1086
1083
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
+ )
1088
1088
1089
1089
def workflow_upsert_memo (self , updates : Mapping [str , Any ]) -> None :
1090
1090
# 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:
1103
1103
command = self ._add_command ()
1104
1104
fields = command .modify_workflow_properties .upserted_memo .fields
1105
1105
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
+
1106
1112
for k , v in update_payloads .items ():
1107
1113
fields [k ].CopyFrom (v )
1108
- self . _raw_memo [k ] = v
1114
+ mut_raw_memo [k ] = v
1109
1115
1110
1116
for k in removals :
1111
1117
fields .get_or_create (k )
1112
- self . _raw_memo .pop (k , None )
1118
+ mut_raw_memo .pop (k , None )
1113
1119
1114
1120
# Clearing cached value, will be regenerated on next workflow_memo() call.
1115
1121
self ._untyped_converted_memo = None
0 commit comments