Skip to content

Commit 3706c78

Browse files
committed
Fix the bug where SetProxy's __ior__, __ixor__, __iand__, and __isub__ return a set instead of a SetProxy
1 parent cf8ef27 commit 3706c78

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

Lib/multiprocessing/managers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,27 @@ def __ior__(self, value):
12011201
del _set_proxy_methods
12021202

12031203
class SetProxy(_BaseSetProxy):
1204+
def __ior__(self, value):
1205+
self._callmethod('__ior__', (value,))
1206+
return self
1207+
def __iand__(self, value):
1208+
self._callmethod('__iand__', (value,))
1209+
return self
1210+
def __ixor__(self, value):
1211+
self._callmethod('__ixor__', (value,))
1212+
return self
1213+
def __isub__(self, value):
1214+
self._callmethod('__isub__', (value,))
1215+
return self
1216+
def __le__(self, value):
1217+
return self._callmethod('__le__', (value,))
1218+
def __lt__(self, value):
1219+
return self._callmethod('__lt__', (value,))
1220+
def __ge__(self, value):
1221+
return self._callmethod('__ge__', (value,))
1222+
def __gt__(self, value):
1223+
return self._callmethod('__gt__', (value,))
1224+
12041225
__class_getitem__ = classmethod(types.GenericAlias)
12051226

12061227
collections.abc.MutableMapping.register(_BaseSetProxy)

Lib/test/_test_multiprocessing.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6454,6 +6454,7 @@ def _test_set_operator_symbols(cls, obj):
64546454
case.assertSetEqual(result, {'a', 'b', 'c', 'd', 'e'})
64556455
obj |= {'d', 'e'}
64566456
case.assertSetEqual(obj, {'a', 'b', 'c', 'd', 'e'})
6457+
case.assertIsInstance(obj, multiprocessing.managers.SetProxy)
64576458
obj.clear()
64586459
obj.update(['a', 'b', 'c'])
64596460
result = {'a', 'b', 'd'} - obj
@@ -6462,6 +6463,7 @@ def _test_set_operator_symbols(cls, obj):
64626463
case.assertSetEqual(result, {'c'})
64636464
obj -= {'a', 'b'}
64646465
case.assertSetEqual(obj, {'c'})
6466+
case.assertIsInstance(obj, multiprocessing.managers.SetProxy)
64656467
obj.clear()
64666468
obj.update(['a', 'b', 'c'])
64676469
result = {'b', 'c', 'd'} ^ obj
@@ -6470,13 +6472,15 @@ def _test_set_operator_symbols(cls, obj):
64706472
case.assertSetEqual(result, {'a', 'd'})
64716473
obj ^= {'b', 'c', 'd'}
64726474
case.assertSetEqual(obj, {'a', 'd'})
6475+
case.assertIsInstance(obj, multiprocessing.managers.SetProxy)
64736476
obj.clear()
64746477
obj.update(['a', 'b', 'c'])
64756478
result = obj & {'b', 'c', 'd'}
64766479
case.assertSetEqual(result, {'b', 'c'})
64776480
result = {'b', 'c', 'd'} & obj
64786481
case.assertSetEqual(result, {'b', 'c'})
64796482
obj &= {'b', 'c', 'd'}
6483+
case.assertIsInstance(obj, multiprocessing.managers.SetProxy)
64806484
case.assertSetEqual(obj, {'b', 'c'})
64816485
obj.clear()
64826486
obj.update(['a', 'b', 'c'])

0 commit comments

Comments
 (0)