home · contact · privacy
Refactor off PayloadMixin.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 5 Aug 2025 04:05:04 +0000 (06:05 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 5 Aug 2025 04:05:04 +0000 (06:05 +0200)
ircplom.py
ircplom/client.py
ircplom/client_tui.py
ircplom/events.py

index b10fb659e908366b8cd564b5f8a8f00ad48e8b05..007dd0573d9f8cf7abb82a396c90535e5e6f1b48 100755 (executable)
@@ -19,7 +19,7 @@ def main_loop() -> None:
                 if isinstance(event, QuitEvent):
                     break
                 if isinstance(event, ExceptionEvent):
-                    raise event.payload
+                    raise event.exception
                 if isinstance(event, TuiEvent):
                     event.affect(tui)
                 elif isinstance(event, NewClientEvent):
index 97c0393b6af6e49f3ce80bc4d593c21a0dabb8b3..717abb2dfedcab111227e83d4bc9ed23cb0b538f 100644 (file)
@@ -7,8 +7,7 @@ from getpass import getuser
 from threading import Thread
 from typing import Callable, Optional
 # ourselves
-from ircplom.events import (AffectiveEvent, ExceptionEvent, Logger,
-                            PayloadMixin, QueueMixin)
+from ircplom.events import AffectiveEvent, ExceptionEvent, Logger, QueueMixin
 from ircplom.irc_conn import (BaseIrcConnection, IrcConnAbortException,
                               IrcMessage, PORT_SSL)
 
@@ -297,9 +296,9 @@ class Client(ABC, ClientQueueMixin):
 
 
 @dataclass
-class NewClientEvent(AffectiveEvent, PayloadMixin):
+class NewClientEvent(AffectiveEvent):
     'Put Client .payload into ClientsDb target.'
-    payload: 'Client'
+    payload: Client
 
     def affect(self, target: ClientsDb) -> None:
         target[self.payload.id_] = self.payload
index 59cd1e498c0864a01e2275336dc194edafac49c0..6d0b5c7e6f9ab03bc58e5b1ae45e0db96b7ee4b6 100644 (file)
@@ -3,7 +3,6 @@
 from dataclasses import dataclass
 from getpass import getuser
 # ourselves
-from ircplom.events import PayloadMixin
 from ircplom.tui_base import (BaseTui, PromptWidget, TuiEvent, Window,
                               CMD_SHORTCUTS)
 from ircplom.irc_conn import IrcMessage
@@ -171,26 +170,21 @@ class ClientTui(BaseTui):
 
 
 @dataclass
-class _ClientWindowEvent(TuiEvent, ClientIdMixin):
-    chat: str = ''
-
-
-@dataclass
-class _ClientLogEvent(_ClientWindowEvent, PayloadMixin):
-    payload: str
+class _ClientLogEvent(TuiEvent, ClientIdMixin):
+    chat: str
+    msg: str
 
     def affect(self, target: ClientTui) -> None:
         if self.chat == CHAT_GLOB:
             for win in target.client_wins(self.client_id):
-                win.log.append(self.payload)
+                win.log.append(self.msg)
         else:
-            target.client_win(self.client_id, self.chat
-                              ).log.append(self.payload)
+            target.client_win(self.client_id, self.chat).log.append(self.msg)
         target.redraw_affected()
 
 
 @dataclass
-class _ClientPromptEvent(_ClientWindowEvent, PayloadMixin):
+class _ClientPromptEvent(TuiEvent, ClientIdMixin):
     payload: tuple[str, str]
 
     def affect(self, target: ClientTui) -> None:
@@ -203,7 +197,7 @@ class _ClientPromptEvent(_ClientWindowEvent, PayloadMixin):
 class _ClientKnowingTui(Client):
 
     def _log(self, msg: str, chat: str = '') -> None:
-        self._cput(_ClientLogEvent, chat=chat, payload=msg)
+        self._cput(_ClientLogEvent, chat=chat, msg=msg)
 
     def update_login(self, nick_confirmed: bool, nickname: str = '') -> None:
         super().update_login(nick_confirmed, nickname)
index 4af5f021a4f5e87031117c99eb8dbdfe036d2783..85f617c0ecb18f084a13e89672df047c6ff4a699 100644 (file)
@@ -32,15 +32,9 @@ class AffectiveEvent(Event, ABC):
 
 
 @dataclass
-class PayloadMixin:
-    'Extends with .payload= passed as first argument.'
-    payload: Any
-
-
-@dataclass
-class ExceptionEvent(Event, PayloadMixin):
+class ExceptionEvent(Event):
     'To deliver Exception to main loop for handling.'
-    payload: Exception
+    exception: Exception
 
 
 @dataclass