From: Christian Heller Date: Thu, 11 Sep 2025 20:17:08 +0000 (+0200) Subject: Differentiate attribute-updaters off Dict and Completable updaters. X-Git-Url: https://plomlompom.com/repos/reset_cookie?a=commitdiff_plain;h=b17aba240e63b7015be4fbd7ad002a59103fc6d9;p=ircplom Differentiate attribute-updaters off Dict and Completable updaters. --- diff --git a/ircplom/client.py b/ircplom/client.py index dc5ee3b..b404218 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -227,6 +227,9 @@ class _UpdatingMixin(IntoEndnodeUpdatesMixin): super().__init__(**kwargs) self._on_update = on_update + +class _UpdatingAttrsMixin(_UpdatingMixin): + def _make_attr(self, cls: Callable, key: str): return cls(on_update=lambda *steps: self._on_update(key, *steps)) @@ -515,7 +518,7 @@ class _User(_SetNickuserhostMixin, NickUserHost): self._id_ = value -class _UpdatingServerCapability(_UpdatingMixin, ServerCapability): +class _UpdatingServerCapability(_UpdatingAttrsMixin, ServerCapability): pass @@ -523,12 +526,12 @@ class _UpdatingCompletableTopic(_UpdatingCompletable, _CompletableTopic): pass -class _UpdatingChannel(_UpdatingMixin, _Channel): +class _UpdatingChannel(_UpdatingAttrsMixin, _Channel): user_ids: _UpdatingCompletableStringsSet topic: _UpdatingCompletableTopic -class _UpdatingUser(_UpdatingMixin, _User): +class _UpdatingUser(_UpdatingAttrsMixin, _User): pass @@ -602,7 +605,7 @@ class _UpdatingChannelsDict(_UpdatingDict[_UpdatingChannel]): channel.remove_user(user) -class _ClientDb(_Clearable, _UpdatingMixin, SharedClientDbFields): +class _ClientDb(_Clearable, _UpdatingAttrsMixin, SharedClientDbFields): _keep_on_clear = set(IrcConnSetup.__annotations__.keys()) caps: _UpdatingDict[_UpdatingServerCapability] channels: _UpdatingChannelsDict