From: Christian Heller Date: Thu, 14 Aug 2025 12:52:21 +0000 (+0200) Subject: Only expose of ClientDb to ClientTui what it actually makes use of. X-Git-Url: https://plomlompom.com/repos/booking/new_day?a=commitdiff_plain;h=abe6aa5e2ee25bdd37140e75f889c4a9ffe6ac65;p=ircplom Only expose of ClientDb to ClientTui what it actually makes use of. --- diff --git a/ircplom/client.py b/ircplom/client.py index f33e42e..f914971 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -116,7 +116,7 @@ class _ServerCapability: class _CapsManager: - def __init__(self, sender: Callable[[IrcMessage], None], db: 'ClientDb', + def __init__(self, sender: Callable[[IrcMessage], None], db: '_ClientDb', ) -> None: self._db = db self._send = lambda *params: sender(IrcMessage('CAP', params=params)) @@ -174,7 +174,7 @@ class IrcConnSetup(NamedTuple): password: str -class ClientDb: +class ClientDbBase: 'Optimized for dealing with variable confirmation of values.' def __init__(self) -> None: @@ -206,6 +206,13 @@ class ClientDb: self._confirmeds.remove(key) return (value_changed, confirm_changed) + def get_force(self, key: str) -> tuple[Optional[ClientDbType], bool]: + 'Get even if only stored unconfirmed, tell if confirmed..' + return (self._dict.get(key, None), key in self._confirmeds) + + +class _ClientDb(ClientDbBase): + def append(self, key: str, value: str, keep_confirmed=False) -> None: 'To list[str] keyed by key, append value; if non-existant, create it.' if not keep_confirmed and key in self._confirmeds: @@ -219,10 +226,6 @@ class ClientDb: else: raise CrashingException('called on non-list entry') - def get_force(self, key: str) -> tuple[Optional[ClientDbType], bool]: - 'Get even if only stored unconfirmed, tell if confirmed..' - return (self._dict.get(key, None), key in self._confirmeds) - @property def conn_setup(self) -> IrcConnSetup: 'Constructed out of stored entries *including* unconfirmed ones.' @@ -248,7 +251,7 @@ class Client(ABC, ClientQueueMixin): conn: Optional[_IrcConnection] = None def __init__(self, conn_setup: IrcConnSetup, **kwargs) -> None: - self._db = ClientDb() + self._db = _ClientDb() for k in conn_setup._fields: self._db.set(k, getattr(conn_setup, k), confirm=k != 'nickname') if self._db.port <= 0: diff --git a/ircplom/client_tui.py b/ircplom/client_tui.py index 1e1c4c8..0a639cd 100644 --- a/ircplom/client_tui.py +++ b/ircplom/client_tui.py @@ -7,7 +7,7 @@ from typing import Callable, Optional, Sequence from ircplom.tui_base import (BaseTui, PromptWidget, TuiEvent, Window, CMD_SHORTCUTS) from ircplom.irc_conn import IrcMessage -from ircplom.client import (IrcConnSetup, Client, ClientDb, ClientDbType, +from ircplom.client import (IrcConnSetup, Client, ClientDbBase, ClientDbType, ClientQueueMixin, LogScope, NewClientEvent) CMD_SHORTCUTS['disconnect'] = 'window.disconnect' @@ -126,7 +126,7 @@ class _ClientWindowsManager: _tui_new_window: Callable def __post_init__(self, *_, **__) -> None: - self._db = ClientDb() + self._db = ClientDbBase() self._db.set('nickname', '?', confirm=False) self.windows: list[_ClientWindow] = [] for scope in (LogScope.SERVER, LogScope.RAW):