mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-133017: Improve error message for invalid typecodes in multiprocessing.{Array,Value} (GH-133252)
This commit is contained in:
parent
2cd24ebfe9
commit
f52de8a937
3 changed files with 22 additions and 1 deletions
|
@ -37,7 +37,12 @@ typecode_to_type = {
|
|||
#
|
||||
|
||||
def _new_value(type_):
|
||||
size = ctypes.sizeof(type_)
|
||||
try:
|
||||
size = ctypes.sizeof(type_)
|
||||
except TypeError as e:
|
||||
raise TypeError("bad typecode (must be a ctypes type or one of "
|
||||
"c, b, B, u, h, H, i, I, l, L, q, Q, f or d)") from e
|
||||
|
||||
wrapper = heap.BufferWrapper(size)
|
||||
return rebuild_ctype(type_, wrapper, None)
|
||||
|
||||
|
|
|
@ -2463,6 +2463,12 @@ class _TestValue(BaseTestCase):
|
|||
self.assertNotHasAttr(arr5, 'get_lock')
|
||||
self.assertNotHasAttr(arr5, 'get_obj')
|
||||
|
||||
@unittest.skipIf(c_int is None, "requires _ctypes")
|
||||
def test_invalid_typecode(self):
|
||||
with self.assertRaisesRegex(TypeError, 'bad typecode'):
|
||||
self.Value('x', None)
|
||||
with self.assertRaisesRegex(TypeError, 'bad typecode'):
|
||||
self.RawValue('x', None)
|
||||
|
||||
class _TestArray(BaseTestCase):
|
||||
|
||||
|
@ -2543,6 +2549,12 @@ class _TestArray(BaseTestCase):
|
|||
self.assertNotHasAttr(arr5, 'get_lock')
|
||||
self.assertNotHasAttr(arr5, 'get_obj')
|
||||
|
||||
@unittest.skipIf(c_int is None, "requires _ctypes")
|
||||
def test_invalid_typecode(self):
|
||||
with self.assertRaisesRegex(TypeError, 'bad typecode'):
|
||||
self.Array('x', [])
|
||||
with self.assertRaisesRegex(TypeError, 'bad typecode'):
|
||||
self.RawArray('x', [])
|
||||
#
|
||||
#
|
||||
#
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Improve the error message of :func:`multiprocessing.sharedctypes.Array`,
|
||||
:func:`multiprocessing.sharedctypes.RawArray`, :func:`multiprocessing.sharedctypes.Value` and
|
||||
:func:`multiprocessing.sharedctypes.RawValue` when an invalid typecode is passed. Patch
|
||||
by Tomas Roun
|
Loading…
Add table
Add a link
Reference in a new issue