https://github.com/python/cpython/commit/78842e4a98994a218a93992a2a1e3ca3eaa28e79
commit: 78842e4a98994a218a93992a2a1e3ca3eaa28e79
branch: main
author: Stephen Morton <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2024-11-05T15:35:45+05:30
summary:
gh-126417: Register multiprocessing proxy types to an appropriate
collections.abc class (#126419)
files:
A Misc/NEWS.d/next/Library/2024-11-04-16-40-02.gh-issue-126417.OWPqn0.rst
M Lib/multiprocessing/managers.py
M Lib/test/_test_multiprocessing.py
M Misc/ACKS
diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py
index 0f5f9f64c2de9e..a5d2f53613952e 100644
--- a/Lib/multiprocessing/managers.py
+++ b/Lib/multiprocessing/managers.py
@@ -18,6 +18,7 @@
import threading
import signal
import array
+import collections.abc
import queue
import time
import types
@@ -1167,8 +1168,9 @@ def __imul__(self, value):
__class_getitem__ = classmethod(types.GenericAlias)
+collections.abc.MutableSequence.register(BaseListProxy)
-_BaseDictProxy = MakeProxyType('DictProxy', (
+_BaseDictProxy = MakeProxyType('_BaseDictProxy', (
'__contains__', '__delitem__', '__getitem__', '__ior__', '__iter__',
'__len__', '__or__', '__reversed__', '__ror__',
'__setitem__', 'clear', 'copy', 'fromkeys', 'get', 'items',
@@ -1184,6 +1186,8 @@ def __ior__(self, value):
__class_getitem__ = classmethod(types.GenericAlias)
+collections.abc.MutableMapping.register(_BaseDictProxy)
+
ArrayProxy = MakeProxyType('ArrayProxy', (
'__len__', '__getitem__', '__setitem__'
))
diff --git a/Lib/test/_test_multiprocessing.py
b/Lib/test/_test_multiprocessing.py
index 065fc27b770438..77b618c684475a 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -16,6 +16,7 @@
import functools
import signal
import array
+import collections.abc
import socket
import random
import logging
@@ -2331,6 +2332,10 @@ def test_list(self):
a.append('hello')
self.assertEqual(f[0][:], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello'])
+ def test_list_isinstance(self):
+ a = self.list()
+ self.assertIsInstance(a, collections.abc.MutableSequence)
+
def test_list_iter(self):
a = self.list(list(range(10)))
it = iter(a)
@@ -2371,6 +2376,10 @@ def test_dict(self):
self.assertEqual(sorted(d.values()), [chr(i) for i in indices])
self.assertEqual(sorted(d.items()), [(i, chr(i)) for i in indices])
+ def test_dict_isinstance(self):
+ a = self.dict()
+ self.assertIsInstance(a, collections.abc.MutableMapping)
+
def test_dict_iter(self):
d = self.dict()
indices = list(range(65, 70))
diff --git a/Misc/ACKS b/Misc/ACKS
index 5e36eda554af0f..d03c70f6db87bf 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1273,6 +1273,7 @@ Emily Morehouse
Derek Morr
James A Morrison
Martin Morrison
+Stephen Morton
Derek McTavish Mounce
Alessandro Moura
Pablo Mouzo
diff --git
a/Misc/NEWS.d/next/Library/2024-11-04-16-40-02.gh-issue-126417.OWPqn0.rst
b/Misc/NEWS.d/next/Library/2024-11-04-16-40-02.gh-issue-126417.OWPqn0.rst
new file mode 100644
index 00000000000000..c4a366343382f3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-11-04-16-40-02.gh-issue-126417.OWPqn0.rst
@@ -0,0 +1,3 @@
+Register the :class:`!multiprocessing.managers.DictProxy` and
:class:`!multiprocessing.managers.ListProxy` types in
+:mod:`multiprocessing.managers` to :class:`collections.abc.MutableMapping` and
+:class:`collections.abc.MutableSequence`, respectively.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]