if key[0] != '_':
self._on_update(key)
- def __getattribute__(self, key: str):
- if key[0] != '_':
- compl_key = self._completable_key(key)
- if hasattr(self, compl_key):
- return getattr(self, compl_key).visible
- return super().__getattribute__(key)
-
- @staticmethod
- def _completable_key(key):
- return f'_completable_{key}'
-
- def _on_completable(self, method: str, key: str, value: str, stay_complete
- ) -> None:
- completable = getattr(self, self._completable_key(key))
- getattr(completable, method)(value, stay_complete)
- if stay_complete:
- self._on_update(key)
-
- def append_completable(self, key: str, value: str, stay_complete=False
- ) -> None:
- 'To completable list of key append value.'
- self._on_completable('append', key, value, stay_complete)
-
- def remove_completable(self, key: str, value: str, stay_complete=False
- ) -> None:
- 'From completable list of key remove value.'
- self._on_completable('remove', key, value, stay_complete)
-
- def declare_complete(self, key: str) -> None:
- 'Declare completable at key complete.'
- getattr(self, self._completable_key(key)).is_complete = True
- self._on_update(key)
-
class SharedChannelDbFields:
'API for fields shared directly in name and type with TUI.'
class SharedClientDbFields(IrcConnSetup, Generic[_ChannelDbFields]):
'API for fields shared directly in name and type with TUI.'
connection_state: str
+ motd: tuple[str, ...]
sasl_account: str
sasl_auth_state: str
user_modes: str
caps: _UpdatingDict
isupports: _UpdatingDict
users: _UpdatingDict
- _completable_motd: _CompletableStringsList
+ _completable_motd: list[str]
_channels: dict[str, _ChannelDb]
+ def _get_completable(self, key) -> list[str]:
+ return getattr(self, f'_completable_{key}')
+
+ def append_completable(self, key: str, value: str) -> None:
+ 'To completable list of key append value.'
+ self._get_completable(key).append(value)
+
+ def declare_complete(self, key: str) -> None:
+ 'Declare completable at key complete.'
+ completable = self._get_completable(key)
+ setattr(self, key, tuple(completable))
+ completable.clear()
+
def user_id(self, query: str | _NickUserHost) -> str:
'Return user_id for nickname of entire NickUserHost, create if none.'
nick = query if isinstance(query, str) else query.nick