Michael Spencer wrote:
It seems that the culprit is pickle - used to send messages between the IDLE shell and the execution server.
Problem is associated with executing iteractive input in a subprocess.
>python idle.py -n
IDLE 1.1 ==== No Subprocess ==== >>> 1e10000 1.#INF >>>
Michael
>>> import pickle
>>> pickle.dumps(1e10000)
'F1.#INF\n.'
>>> pickle.loads(_)
Traceback (most recent call last):
File "<input>", line 1, in ?
File "c:\python24\lib\pickle.py", line 1394, in loads
return Unpickler(file).load()
File "c:\python24\lib\pickle.py", line 872, in load
dispatch[key](self)
File "c:\python24\lib\pickle.py", line 968, in load_float
self.append(float(self.readline()[:-1]))
ValueError: invalid literal for float(): 1.#INF
>>> import cPickle as pickle
>>> pickle.dumps(1e10000)
'F1.#INF\n.'
>>> pickle.loads(_)
Traceback (most recent call last):
File "<input>", line 1, in ?
ValueError: could not convert string to float
>>>It seems that somewhere IDLE traps this error and shows '1.0' instead. However, I can't follow the IDLE output code, so I won't try to track this down any further
IDLE 1.1 >>> 2e10000 1.0 >>> 3e10000 1.0 >>> 100e10000 1.0 >>> 999e1000 1.0 >>>
Michael
-- http://mail.python.org/mailman/listinfo/python-list
