From a04014be798f52232c1dd1d83853ab595f04dc15 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 12 Jun 2025 17:59:31 +0200 Subject: [PATCH] added only on change decorator --- src/atomiq/helper.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/atomiq/helper.py b/src/atomiq/helper.py index 6581dd5..9551893 100644 --- a/src/atomiq/helper.py +++ b/src/atomiq/helper.py @@ -220,7 +220,7 @@ def master_ipc_call(experiment, action: str): Returns: Method that calles the requested RPC endpoint in the master """ - + # we copy an existing IPC calling function and modify its closure to perform the action we want caller = copy.deepcopy(experiment.scheduler._submit) caller.__closure__[0].cell_contents = action @@ -230,3 +230,20 @@ def master_ipc_call(experiment, action: str): def dummy_decorator(func): return func + + +def only_on_change(func): + + def _decorator(self, *args, **kwargs): + try: + if self.prev_call_args[func.__name__] == (args, kwargs): + return + else: + self.prev_call_args[func.__name__] = (args, kwargs) + except AttributeError: + self.prev_call_args = {func.__name__: (args, kwargs)} + except KeyError: + self.prev_call_args[func.__name__] = (args, kwargs) + return func(self, *args, **kwargs) + + return _decorator -- GitLab