Message310963
Pickling exceptions fails when a custom exception class requires multiple arguments.
import pickle
class MultipleArgumentsError(Exception):
def __init__(self, a, b):
self.a = a
self.b = b
pickle.loads(pickle.dumps(MultipleArgumentsError('a', 'b')))
this code produces the following error:
Traceback (most recent call last):
File "/tmp/multiple_arguments_exception.py", line 8, in <module>
pickle.loads(pickle.dumps(MultipleArgumentsError('a', 'b')))
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1388, in loads
return Unpickler(file).load()
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1139, in load_reduce
value = func(*args)
TypeError: __init__() takes exactly 3 arguments (2 given)
The same error occurs when using a built-in module like subprocess:
>>> import subprocess, pickle
>>> try:
... subprocess.check_call(['python', '-c', 'raise SystemExit(1)'])
... except Exception as e:
... pickle.loads(pickle.dumps(e))
...
Related issue: https://bugs.python.org/issue1692335 |
|
Date |
User |
Action |
Args |
2018-01-28 16:15:55 | slallum | set | recipients:
+ slallum, georg.brandl, jaraco, zseil, alexandre.vassalotti, sbt |
2018-01-28 16:15:55 | slallum | set | messageid: <1517156155.35.0.467229070634.issue32696@psf.upfronthosting.co.za> |
2018-01-28 16:15:55 | slallum | link | issue32696 messages |
2018-01-28 16:15:55 | slallum | create | |
|