home · contact · privacy
Only expose of ClientDb to ClientTui what it actually makes use of.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 14 Aug 2025 12:52:21 +0000 (14:52 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 14 Aug 2025 12:52:21 +0000 (14:52 +0200)
ircplom/client.py
ircplom/client_tui.py

index f33e42e76a8c35574de0517d5090da31212054f2..f914971ebcbe33cf011bc02d22576c10b2b5468d 100644 (file)
@@ -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:
index 1e1c4c84e1dfd8c94d76bad51081a4c4b0073f89..0a639cd17898c06e6f2fa89f4841609ce3a8a6f2 100644 (file)
@@ -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):