From 81d3140df2e2e4682e569ce46cae151604470792 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Mon, 13 Oct 2025 10:58:03 +0200 Subject: [PATCH 1/2] Copy RunOptions when mutating them --- python/restate/server_context.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python/restate/server_context.py b/python/restate/server_context.py index fffe62a..d6dabee 100644 --- a/python/restate/server_context.py +++ b/python/restate/server_context.py @@ -18,6 +18,7 @@ import asyncio import contextvars +import copy from random import Random from datetime import timedelta import inspect @@ -612,10 +613,12 @@ def run_typed( **kwargs: P.kwargs, ) -> RestateDurableFuture[T]: if isinstance(options.serde, DefaultSerde): + # Copy options, as we're going to mutate type_hint and serde + options = copy.copy(options) if options.type_hint is None: signature = inspect.signature(action, eval_str=True) options.type_hint = signature.return_annotation - options.serde = options.serde.with_maybe_type(options.type_hint) + options.serde = typing.cast(DefaultSerde, options.serde).with_maybe_type(options.type_hint) handle = self.vm.sys_run(name) update_restate_context_is_replaying(self.vm) From 1d065f65ff0d24b9647fb061e010184c75ca25d0 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Mon, 13 Oct 2025 12:06:58 +0200 Subject: [PATCH 2/2] Fix linting issue --- python/restate/serde.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/restate/serde.py b/python/restate/serde.py index 56a27e7..5165a17 100644 --- a/python/restate/serde.py +++ b/python/restate/serde.py @@ -60,6 +60,7 @@ def from_dict(a,b): # pylint: disable=too-few-public-methods,unused-argument return to_dict, from_dict PydanticBaseModel = try_import_pydantic_base_model() +# pylint: disable=C0103 DaciteToDict, DaciteFromDict = try_import_from_dacite() T = typing.TypeVar('T')