From 297bed6436a9b29609a10e2ff6bf607a2b3c98f5 Mon Sep 17 00:00:00 2001 From: crusaderky Date: Mon, 14 Mar 2022 13:30:00 +0000 Subject: [PATCH] Remove metaclass magic --- distributed/worker_state_machine.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/distributed/worker_state_machine.py b/distributed/worker_state_machine.py index 40f2fbe96a4..ce8d200ba7a 100644 --- a/distributed/worker_state_machine.py +++ b/distributed/worker_state_machine.py @@ -268,9 +268,6 @@ class SendMessageToScheduler(Instruction): #: Matches a key in Scheduler.stream_handlers op: ClassVar[str] - def __init_subclass__(cls, op: str): - cls.op = op - def to_dict(self) -> dict[str, Any]: """Convert object to dict so that it can be serialized with msgpack""" d = {k: getattr(self, k) for k in self.__annotations__} @@ -278,10 +275,10 @@ def to_dict(self) -> dict[str, Any]: return d -# Note: as of Python 3.10.2, @dataclass(slots=True) doesn't work with __init__subclass__ -# https://bugs.python.org/issue46970 @dataclass -class TaskFinishedMsg(SendMessageToScheduler, op="task-finished"): +class TaskFinishedMsg(SendMessageToScheduler): + op = "task-finished" + key: str nbytes: int | None type: bytes # serialized class @@ -298,7 +295,9 @@ def to_dict(self) -> dict[str, Any]: @dataclass -class TaskErredMsg(SendMessageToScheduler, op="task-erred"): +class TaskErredMsg(SendMessageToScheduler): + op = "task-erred" + key: str exception: Exception exception_text: str @@ -315,13 +314,17 @@ def to_dict(self) -> dict[str, Any]: @dataclass -class ReleaseWorkerDataMsg(SendMessageToScheduler, op="release-worker-data"): +class ReleaseWorkerDataMsg(SendMessageToScheduler): + op = "release-worker-data" + __slots__ = ("key",) key: str @dataclass -class RescheduleMsg(SendMessageToScheduler, op="reschedule"): +class RescheduleMsg(SendMessageToScheduler): + op = "reschedule" + # Not to be confused with the distributed.Reschedule Exception __slots__ = ("key", "worker") key: str @@ -329,14 +332,18 @@ class RescheduleMsg(SendMessageToScheduler, op="reschedule"): @dataclass -class LongRunningMsg(SendMessageToScheduler, op="long-running"): +class LongRunningMsg(SendMessageToScheduler): + op = "long-running" + __slots__ = ("key", "compute_duration") key: str compute_duration: float @dataclass -class AddKeysMsg(SendMessageToScheduler, op="add-keys"): +class AddKeysMsg(SendMessageToScheduler): + op = "add-keys" + __slots__ = ("keys", "stimulus_id") keys: list[str] stimulus_id: str