diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py index 91bcf243e78e5b..73452c2140b018 100644 --- a/Lib/multiprocessing/managers.py +++ b/Lib/multiprocessing/managers.py @@ -1224,7 +1224,7 @@ def __isub__(self, value): __class_getitem__ = classmethod(types.GenericAlias) -collections.abc.MutableMapping.register(_BaseSetProxy) +collections.abc.MutableSet.register(_BaseSetProxy) ArrayProxy = MakeProxyType('ArrayProxy', ( diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index d03eb1dfb253ec..3ce0bc55ede1c4 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -2786,6 +2786,29 @@ def test_dict_proxy_nested(self): self.assertIsInstance(outer[0], list) # Not a ListProxy self.assertEqual(outer[-1][-1]['feed'], 3) + def test_set_isinstance(self): + s = self.set() + self.assertIsInstance(s, collections.abc.MutableSet) + self.assertNotIsInstance(s, collections.abc.MutableMapping) + + mutable_set_methods = ( + '__contains__', '__iter__', '__len__', + 'add', 'discard', 'remove', 'pop', 'clear', + 'update', 'difference_update', 'intersection_update', + 'symmetric_difference_update', + ) + for name in mutable_set_methods: + with self.subTest(name=name): + self.assertTrue(callable(getattr(s, name))) + + mapping_only_methods = ( + '__getitem__', '__setitem__', 'setdefault', + 'keys', 'items', 'values', 'get', + ) + for name in mapping_only_methods: + with self.subTest(name=name): + self.assertFalse(hasattr(s, name)) + def test_nested_queue(self): a = self.list() # Test queue inside list a.append(self.Queue()) @@ -7131,6 +7154,7 @@ class ManagerMixin(BaseMixin): Array = property(operator.attrgetter('manager.Array')) list = property(operator.attrgetter('manager.list')) dict = property(operator.attrgetter('manager.dict')) + set = property(operator.attrgetter('manager.set')) Namespace = property(operator.attrgetter('manager.Namespace')) @classmethod diff --git a/Misc/NEWS.d/next/Library/2025-12-18-10-37-01.gh-issue-142740.Di48Rf.rst b/Misc/NEWS.d/next/Library/2025-12-18-10-37-01.gh-issue-142740.Di48Rf.rst new file mode 100644 index 00000000000000..383407738c66d4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-12-18-10-37-01.gh-issue-142740.Di48Rf.rst @@ -0,0 +1 @@ +Register ``multiprocessing.managers.SetProxy`` as ``collections.abc.MutableSet`` rather than ``MutableMapping``.