Skip to content

Commit c12f8cf

Browse files
committed
refac: Using get/set state for pickling
1 parent e0b7dc9 commit c12f8cf

File tree

2 files changed

+4
-18
lines changed

2 files changed

+4
-18
lines changed

statemachine/engines/base.py

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,13 @@
1616

1717
class BaseEngine:
1818
def __init__(self, sm: "StateMachine", rtc: bool = True):
19+
self.sm: StateMachine = proxy(sm)
20+
self._external_queue: Queue = PriorityQueue()
1921
self._sentinel = object()
2022
self._rtc = rtc
2123
self._running = True
22-
self._init(sm)
23-
24-
def _init(self, sm: "StateMachine"):
25-
self.sm: StateMachine = proxy(sm)
26-
self._external_queue: Queue = PriorityQueue()
2724
self._processing = Lock()
2825

29-
def __getstate__(self) -> dict:
30-
state = self.__dict__.copy()
31-
del state["_external_queue"]
32-
del state["_processing"]
33-
del state["sm"]
34-
return state
35-
36-
def __setstate__(self, state: dict) -> None:
37-
for attr, value in state.items():
38-
setattr(self, attr, value)
39-
4026
def empty(self):
4127
return self._external_queue.qsize() == 0
4228

tests/test_copy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,15 @@ def assertions(sm, _reference):
124124
if not sm._listeners:
125125
pytest.fail("did not found any observer")
126126

127-
for listener in sm._listeners:
127+
for listener in sm._listeners.values():
128128
listener.let_me_be_visible = False
129129

130130
with pytest.raises(TransitionNotAllowed):
131131
sm.send("publish")
132132

133133
sm.model.let_me_be_visible = True
134134

135-
for listener in sm._listeners:
135+
for listener in sm._listeners.values():
136136
with pytest.raises(TransitionNotAllowed):
137137
sm.send("publish")
138138

0 commit comments

Comments
 (0)