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))
password: str
-class ClientDb:
+class ClientDbBase:
'Optimized for dealing with variable confirmation of values.'
def __init__(self) -> None:
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:
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.'
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:
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'
_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):