From: Raymond Hettinger Date: Mon, 11 Nov 2019 04:12:04 +0000 (-0800) Subject: bpo-38761: Register WeakSet as a MutableSet (GH-17104) X-Git-Tag: v3.9.0a1~62 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=84ac4376587e35d16b4d0977c4f330d9d04b690a;p=thirdparty%2FPython%2Fcpython.git bpo-38761: Register WeakSet as a MutableSet (GH-17104) --- diff --git a/Lib/test/test_weakset.py b/Lib/test/test_weakset.py index 569facdd30c1..49a9b5c3c658 100644 --- a/Lib/test/test_weakset.py +++ b/Lib/test/test_weakset.py @@ -2,6 +2,7 @@ import unittest from weakref import WeakSet import string from collections import UserString as ustr +from collections.abc import Set, MutableSet import gc import contextlib @@ -437,6 +438,10 @@ class TestWeakSet(unittest.TestCase): def test_repr(self): assert repr(self.s) == repr(self.s.data) + def test_abc(self): + self.assertIsInstance(self.s, Set) + self.assertIsInstance(self.s, MutableSet) + if __name__ == "__main__": unittest.main() diff --git a/Lib/weakref.py b/Lib/weakref.py index d17b3ed38eac..e3c2ce2d9b8b 100644 --- a/Lib/weakref.py +++ b/Lib/weakref.py @@ -33,6 +33,9 @@ __all__ = ["ref", "proxy", "getweakrefcount", "getweakrefs", "WeakSet", "WeakMethod", "finalize"] +_collections_abc.Set.register(WeakSet) +_collections_abc.MutableSet.register(WeakSet) + class WeakMethod(ref): """ A custom `weakref.ref` subclass which simulates a weak reference to diff --git a/Misc/NEWS.d/next/Library/2019-11-10-13-40-33.bpo-38761.P1UUIZ.rst b/Misc/NEWS.d/next/Library/2019-11-10-13-40-33.bpo-38761.P1UUIZ.rst new file mode 100644 index 000000000000..4dde5ebc3208 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-11-10-13-40-33.bpo-38761.P1UUIZ.rst @@ -0,0 +1 @@ +WeakSet is now registered as a collections.abc.MutableSet.