home · contact · privacy
Refactor placement of .conn_idx attributes. master
authorChristian Heller <c.heller@plomlompom.de>
Thu, 10 Jul 2025 13:39:25 +0000 (15:39 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 10 Jul 2025 13:39:25 +0000 (15:39 +0200)
ircplom/irc_conn.py

index 30dcaa84b0a8f38943d86f28bbbba0cc984c24ac..87e608c6e26f42115ab9b0268998fe6f2e01922e 100644 (file)
@@ -23,6 +23,14 @@ _IRCSPEC_TAG_ESCAPES = ((r'\:', ';'),
                         (r'\\', '\\'))
 
 
                         (r'\\', '\\'))
 
 
+class ConnIdxMixin:
+    'Collects a Connection ID at .conn_idx.'
+
+    def __init__(self, conn_idx: int, **kwargs) -> None:
+        super().__init__(**kwargs)
+        self.conn_idx = conn_idx
+
+
 @dataclass
 class LoginNames:
     'Collects the names needed on server connect for USER, NICK commands.'
 @dataclass
 class LoginNames:
     'Collects the names needed on server connect for USER, NICK commands.'
@@ -37,12 +45,8 @@ class InitConnectEvent(Event, PayloadMixin):
     payload: tuple[str, LoginNames]
 
 
     payload: tuple[str, LoginNames]
 
 
-class ConnEvent(Event):
-    'Event with connection ID at .conn_idx'
-
-    def __init__(self, conn_idx: int, **kwargs) -> None:
-        super().__init__(**kwargs)
-        self.conn_idx = conn_idx
+class ConnEvent(Event, ConnIdxMixin):
+    'Event with .conn_idx.'
 
 
 class InitConnWindowEvent(ConnEvent, PayloadMixin):
 
 
 class InitConnWindowEvent(ConnEvent, PayloadMixin):
@@ -76,13 +80,9 @@ class SendEvent(ConnEvent, PayloadMixin):
     payload: 'IrcMessage'
 
 
     payload: 'IrcMessage'
 
 
-class BroadcastConnMixin(BroadcastMixin):
+class BroadcastConnMixin(BroadcastMixin, ConnIdxMixin):
     'Provides .broadcast_conn on classes that have .conn_idx defined.'
 
     'Provides .broadcast_conn on classes that have .conn_idx defined.'
 
-    def __init__(self, conn_idx: int, **kwargs) -> None:
-        super().__init__(**kwargs)
-        self.conn_idx = conn_idx
-
     def broadcast_conn[E: ConnEvent](self,
                                      event_class: type[E],
                                      *args, **kwargs
     def broadcast_conn[E: ConnEvent](self,
                                      event_class: type[E],
                                      *args, **kwargs