From 51c099dacff8fdbd8dce13b385f3c592fa853a10 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Mon, 15 Sep 2025 17:42:55 +0200 Subject: [PATCH] Minor refactor of client/connection class relations, plus some docstrings. --- ircplom/client.py | 12 +++++------- ircplom/client_tui.py | 1 + ircplom/testing.py | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/ircplom/client.py b/ircplom/client.py index 3eabe82..ca85113 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -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 diff --git a/ircplom/client_tui.py b/ircplom/client_tui.py index 8f40969..6c35ccd 100644 --- a/ircplom/client_tui.py +++ b/ircplom/client_tui.py @@ -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( diff --git a/ircplom/testing.py b/ircplom/testing.py index 8bfb173..dbcee35 100644 --- a/ircplom/testing.py +++ b/ircplom/testing.py @@ -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() -- 2.30.2