home · contact · privacy
Avoid mutables in class attribute defaults.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 25 Sep 2025 23:44:07 +0000 (01:44 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 25 Sep 2025 23:44:07 +0000 (01:44 +0200)
src/ircplom/client.py
src/test.txt

index b2eca3351fe46e3b7570c99c3dd4256512aad1e1..1473807b4019100c360d640638add7cefa80c63c 100644 (file)
@@ -636,14 +636,18 @@ class _UpdatingIsupportDict(_UpdatingDict[str]):
 
 
 class _ClientDb(_Clearable, _UpdatingAttrsMixin, SharedClientDbFields):
-    _updates_cache: dict[tuple[str, ...], Any] = {}
-    _keep_on_clear = set(IrcConnSetup.__annotations__.keys())
+    _updates_cache: dict[tuple[str, ...], Any]
+    _keep_on_clear = frozenset(IrcConnSetup.__annotations__.keys())
     caps: _UpdatingDict[_UpdatingServerCapability]
     channels: _UpdatingChannelsDict
     isupport: _UpdatingIsupportDict
     motd: _UpdatingCompletableStringsOrdered
     users: _UpdatingUsersDict
 
+    def __init__(self, **kwargs) -> None:
+        self._updates_cache = {}
+        super().__init__(**kwargs)
+
     def __getattribute__(self, key: str):
         attr = super().__getattribute__(key)
         if key == 'channels' and attr._create_if_none is None\
index 7c1c154999d4af583c44e20f0beee3eaa0b11928..c69157239e4cb9631530ee48accda05fa7d1633a 100644 (file)
 
 # test setting up second client, but 432 irrecoverably
 > /connect baz.bar.foo ?foo foo:foo
+, $ DISCONNECTED
 8 $ isupport cleared
 8 $ isupport:CHANTYPES set to: [#&]
 8 $ isupport:PREFIX set to: [(ov)@+]
 8 $ isupport:USERLEN set to: [10]
+8 $ caps cleared
+8 $ users cleared
+8 $ channels cleared
 8 $ hostname set to: [baz.bar.foo]
 8 $ port set to: [-1]
 8 $ nick_wanted set to: [?foo]
 
 # test failing third connection
 > /connect baz.baz.baz baz baz:baz
+, $ DISCONNECTED
 9 $ isupport cleared
 9 $ isupport:CHANTYPES set to: [#&]
 9 $ isupport:PREFIX set to: [(ov)@+]
 9 $ isupport:USERLEN set to: [10]
+9 $ caps cleared
+9 $ users cleared
+9 $ channels cleared
 9 $ hostname set to: [baz.baz.baz]
 9 $ port set to: [-1]
 9 $ nick_wanted set to: [baz]