From 93d0cb509f062fc4efc1eaf2b41a7189ca52bbb0 Mon Sep 17 00:00:00 2001 From: Jusong Yu Date: Wed, 22 Jan 2025 23:46:39 +0100 Subject: [PATCH] test_event_helper_savable --- src/plumpy/event_helper.py | 12 ++++++------ tests/test_event_helper.py | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 tests/test_event_helper.py diff --git a/src/plumpy/event_helper.py b/src/plumpy/event_helper.py index 188ae735..9d70e1c4 100644 --- a/src/plumpy/event_helper.py +++ b/src/plumpy/event_helper.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import logging -from typing import TYPE_CHECKING, Any, Callable, Optional, Self +from typing import TYPE_CHECKING, Any, Callable, Optional, Self, final from plumpy.loaders import ObjectLoader from plumpy.persistence import LoadSaveContext, auto_load, auto_save, ensure_object_loader @@ -9,20 +9,20 @@ from . import persistence if TYPE_CHECKING: - from typing import Set, Type - from .process_listener import ProcessListener _LOGGER = logging.getLogger(__name__) +# FIXME: test me +@final @persistence.auto_persist('_listeners', '_listener_type') class EventHelper: - def __init__(self, listener_type: 'Type[ProcessListener]'): + def __init__(self, listener_type: 'type[ProcessListener]'): assert listener_type is not None, 'Must provide valid listener type' self._listener_type = listener_type - self._listeners: 'Set[ProcessListener]' = set() + self._listeners: 'set[ProcessListener]' = set() def add_listener(self, listener: 'ProcessListener') -> None: assert isinstance(listener, self._listener_type), 'Listener is not of right type' @@ -55,7 +55,7 @@ def save(self, loader: ObjectLoader | None = None) -> SAVED_STATE_TYPE: return out_state @property - def listeners(self) -> 'Set[ProcessListener]': + def listeners(self) -> 'set[ProcessListener]': return self._listeners def fire_event(self, event_function: Callable[..., Any], *args: Any, **kwargs: Any) -> None: diff --git a/tests/test_event_helper.py b/tests/test_event_helper.py new file mode 100644 index 00000000..d686882c --- /dev/null +++ b/tests/test_event_helper.py @@ -0,0 +1,22 @@ +import pytest +from plumpy.event_helper import EventHelper +from plumpy.persistence import Savable, load +from tests.utils import DummyProcess, ProcessListenerTester + + +def test_event_helper_savable(): + eh = EventHelper(ProcessListenerTester) + + proc = DummyProcess() + pl1 = ProcessListenerTester(proc, ('killed')) + pl2 = ProcessListenerTester(proc, ('paused')) + eh.add_listener(pl1) + eh.add_listener(pl2) + + assert isinstance(eh, Savable) + + saved = eh.save() + loaded = load(saved_state=saved) + saved2 = loaded.save() + + assert saved == saved2