summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing
diff options
context:
space:
mode:
authorAllen W. Smith, Ph.D <drallensmith@users.noreply.github.com>2017-08-12 15:37:09 (GMT)
committerAntoine Pitrou <pitrou@free.fr>2017-08-12 15:37:09 (GMT)
commit48d9823a0ebde4dfab8bc154bb6df462fb2ee403 (patch)
tree14fbb6daae62b2c83da9b7af1b309b8c64630ed0 /Lib/multiprocessing
parente664d7f89d2b9960d9049237136396e824795cac (diff)
downloadcpython-48d9823a0ebde4dfab8bc154bb6df462fb2ee403.zip
cpython-48d9823a0ebde4dfab8bc154bb6df462fb2ee403.tar.gz
cpython-48d9823a0ebde4dfab8bc154bb6df462fb2ee403.tar.bz2
bpo-5001, bpo-31169: Fix two uninformative asserts in multiprocessing/managers.py (#3078)
* Make error message more informative Replace assertions in error-reporting code with more-informative version that doesn't cause confusion over where and what the error is. * Additional clarification + get travis to check * Change from SystemError to TypeError As suggested in PR comment by @pitrou, changing from SystemError; TypeError appears appropriate. * NEWS file installation; ACKS addition (will do my best to justify it by additional work)
Diffstat (limited to 'Lib/multiprocessing')
-rw-r--r--Lib/multiprocessing/managers.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py
index cae1c10..c672277 100644
--- a/Lib/multiprocessing/managers.py
+++ b/Lib/multiprocessing/managers.py
@@ -84,14 +84,17 @@ def dispatch(c, id, methodname, args=(), kwds={}):
def convert_to_error(kind, result):
if kind == '#ERROR':
return result
- elif kind == '#TRACEBACK':
- assert type(result) is str
- return RemoteError(result)
- elif kind == '#UNSERIALIZABLE':
- assert type(result) is str
- return RemoteError('Unserializable message: %s\n' % result)
+ elif kind in ('#TRACEBACK', '#UNSERIALIZABLE'):
+ if not isinstance(result, str):
+ raise TypeError(
+ "Result {0!r} (kind '{1}') type is {2}, not str".format(
+ result, kind, type(result)))
+ if kind == '#UNSERIALIZABLE':
+ return RemoteError('Unserializable message: %s\n' % result)
+ else:
+ return RemoteError(result)
else:
- return ValueError('Unrecognized message type')
+ return ValueError('Unrecognized message type {!r}'.format(kind))
class RemoteError(Exception):
def __str__(self):