home · contact · privacy
Minor refactor of client/connection class relations, plus some docstrings.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 15 Sep 2025 15:42:55 +0000 (17:42 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 15 Sep 2025 15:42:55 +0000 (17:42 +0200)
ircplom/client.py
ircplom/client_tui.py
ircplom/testing.py

index 3eabe82e06f6a2d900fb2c45bdd94b2ce46d7248..ca851132aa4f200b575c1592a2cc91e013887f5a 100644 (file)
@@ -357,7 +357,8 @@ class ClientQueueMixin(QueueMixin, _ClientIdMixin):
 
 
 @dataclass
-class _IrcConnection(BaseIrcConnection, _ClientIdMixin):
+class IrcConnection(BaseIrcConnection, _ClientIdMixin):
+    'Parent extended to work with Client.'
     hostname: InitVar[str]  # needed by BaseIrcConnection, but not desired as
     port: InitVar[int]      # dataclass fields, only for __post_init__ call
 
@@ -717,14 +718,11 @@ class _CapsManager(_Clearable):
         return False
 
 
-_ClientConnClass = TypeVar('_ClientConnClass', bound=_IrcConnection)
-
-
-class Client(ABC, ClientQueueMixin, Generic[_ClientConnClass]):
+class Client(ABC, ClientQueueMixin):
     'Abstracts socket connection, loop over it, and handling messages from it.'
+    conn: Optional[IrcConnection] = None
     _caps: _CapsManager
-    conn: Optional[_IrcConnection] = None
-    _cls_conn: _ClientConnClass
+    _cls_conn: type[IrcConnection] = IrcConnection
 
     def __init__(self, conn_setup: IrcConnSetup, **kwargs) -> None:
         self.client_id = conn_setup.hostname
index 8f409697470090f86221b5daa3313be1c659d7d0..6c35ccda57ffbe5b0fe58efd48c73d76a655eded 100644 (file)
@@ -462,6 +462,7 @@ class ClientTui(BaseTui):
 
 
 class ClientKnowingTui(Client):
+    'Adapted to communicate with ClientTui.'
 
     def _client_tui_trigger(self, todo: str, **kwargs) -> None:
         self._put(TuiEvent.affector('for_client_do').kw(
index 8bfb17319c6d2c60369f5bf26d79e64f88c20578..dbcee353e400f88b174480c6e8bd473c95ad977d 100644 (file)
@@ -3,7 +3,7 @@ from contextlib import contextmanager
 from queue import SimpleQueue, Empty as QueueEmpty
 from typing import Generator, Iterator, Optional
 from ircplom.events import Event, Loop, QueueMixin
-from ircplom.client import _IrcConnection, IrcConnSetup
+from ircplom.client import IrcConnection, IrcConnSetup
 from ircplom.client_tui import ClientKnowingTui, ClientTui
 from ircplom.irc_conn import IrcMessage
 from ircplom.tui_base import TerminalInterface, TuiEvent
@@ -51,7 +51,7 @@ class TestTerminal(QueueMixin, TerminalInterface):
                                     ).kw(typed_in=to_yield)
 
 
-class _FakeIrcConnection(_IrcConnection):
+class _FakeIrcConnection(IrcConnection):
 
     def __init__(self, **kwargs) -> None:
         self._q_server_msgs: SimpleQueue = SimpleQueue()