mirror of https://github.com/python/cpython
gh-126417: Register multiprocessing proxy types to an appropriate collections.abc class (#126419)
This commit is contained in:
parent
1371295e67
commit
78842e4a98
|
@ -18,6 +18,7 @@ import sys
|
|||
import threading
|
||||
import signal
|
||||
import array
|
||||
import collections.abc
|
||||
import queue
|
||||
import time
|
||||
import types
|
||||
|
@ -1167,8 +1168,9 @@ class ListProxy(BaseListProxy):
|
|||
|
||||
__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 @@ class DictProxy(_BaseDictProxy):
|
|||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
collections.abc.MutableMapping.register(_BaseDictProxy)
|
||||
|
||||
ArrayProxy = MakeProxyType('ArrayProxy', (
|
||||
'__len__', '__getitem__', '__setitem__'
|
||||
))
|
||||
|
|
|
@ -16,6 +16,7 @@ import errno
|
|||
import functools
|
||||
import signal
|
||||
import array
|
||||
import collections.abc
|
||||
import socket
|
||||
import random
|
||||
import logging
|
||||
|
@ -2331,6 +2332,10 @@ class _TestContainers(BaseTestCase):
|
|||
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 @@ class _TestContainers(BaseTestCase):
|
|||
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))
|
||||
|
|
|
@ -1273,6 +1273,7 @@ Emily Morehouse
|
|||
Derek Morr
|
||||
James A Morrison
|
||||
Martin Morrison
|
||||
Stephen Morton
|
||||
Derek McTavish Mounce
|
||||
Alessandro Moura
|
||||
Pablo Mouzo
|
||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue