See more details in my forum post:
http://www.python-forum.org/pythonforum/viewtopic.php?f=18&t=26724
I'm trying to pickle a bunch of functions (mostly built-in) and pickle keeps
giving me errors. I have no Ellipsis in my data at all, and for some reason,
pickle seems to think I do.
Here is an error I once received:
Traceback (most recent call last):
File "C:/Sunjay/My Website/projects/sunjay.ca/build/domath", line 132, in
<module>
main()
File "C:/Sunjay/My Website/projects/sunjay.ca/build/domath", line 127, in main
actions[action](form)
File "C:/Sunjay/My Website/projects/sunjay.ca/build/domath", line 107, in
do_math
print SESSION.output()
File "C:\Python27\lib\site-packages\session.py", line 207, in output
self.commit()
File "C:\Python27\lib\site-packages\session.py", line 152, in commit
dump(data, f, HIGHEST_PROTOCOL)
PicklingError: Can't pickle <type 'ellipsis'>: attribute lookup
__builtin__.ellipsis failed
As well as the data structure which I am pickling:
user_session = {'math_user': {'scope': {'int': <type 'int'>, 'DEGREE':
'DEGREE', 'atan': <built-in function atan>, 'pow': <built-in function pow>,
'fsum': <built-in function fsum>, 'cosh': <built-in function cosh>, 'ldexp':
<built-in function ldexp>, 'hypot': <built-in function hypot>, 'acosh':
<built-in function acosh>, 'tan': <built-in function tan>, 'asin': <built-in
function asin>, 'isnan': <built-in function isnan>, 'log': <built-in function
log>, 'fabs': <built-in function fabs>, 'floor': <built-in function floor>,
'atanh': <built-in function atanh>, 'sqrt': <built-in function sqrt>,
'__package__': None, 'frexp': <built-in function frexp>, 'factorial': <built-in
function factorial>, 'abs': <built-in function abs>, 'degrees': <built-in
function degrees>, '_': 123, 'fib': <session.FuncData instance at 0x02A6CD50>,
'pi': 3.141592653589793, 'log10': <built-in function log10>, '__doc__': 'This
module is always available. It provides access to
mathematical\nfunctions for complex numbers.', 'mode': <session.FuncData
instance at 0x02A6CD78>, 'polar': <built-in function polar>, 'asinh': <built-in
function asinh>, 'float': <type 'float'>, 'fmod': <built-in function fmod>,
'CALC_MODE': 'RADIAN', '__builtins__': {}, 'copysign': <built-in function
copysign>, 'cos': <built-in function cos>, 'ceil': <built-in function ceil>,
'atan2': <built-in function atan2>, 'isinf': <built-in function isinf>, 'sinh':
<built-in function sinh>, 'phase': <built-in function phase>, '__name__':
'cmath', 'rect': <built-in function rect>, 'trunc': <built-in function trunc>,
'expm1': <built-in function expm1>, 'e': 2.718281828459045, 'tanh': <built-in
function tanh>, 'radians': <built-in function radians>, 'sin': <built-in
function sin>, 'lgamma': <built-in function lgamma>, 'erf': <built-in function
erf>, 'Vector': <class 'vector.Vector'>, 'erfc': <built-in function erfc>,
'RADIAN': 'RADIAN', 'modf': <built-in function
modf>, 'Ans': 123, 'exp': <built-in function exp>, 'acos': <built-in function
acos>, 'log1p': <built-in function log1p>, 'round': <built-in function round>,
'gamma': <built-in function gamma>}, 'history': [('123', 123)]},
'__date_loaded__': '2011-06-11'}
The above data structure can be simply put as so:
user_session = {
"math_user": {
"scope": {dictionary of all python math functions plus other types and
functions},
"history": [list of previous commands],
"__date_loaded__": timestamp of today's date
}
}
Please help me find out why this code is failing:
>>> from cPickle import dump, HIGHEST_PROTOCOL
>>> dump(user_session, open("C:\\Session.dump", "wb"), HIGHEST_PROTOCOL)
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
dump(SESSION.data, open("C:\\Session.dump", "wb"), HIGHEST_PROTOCOL)
PicklingError: Can't pickle <type 'ellipsis'>: attribute lookup
__builtin__.ellipsis failed
Thanks for your help,
Sunjay V. - www.sunjay.ca
--
http://mail.python.org/mailman/listinfo/python-list