[IPython-dev] IPython bug?

Gary Bishop gb at cs.unc.edu
Sat May 24 08:46:18 EDT 2003


On Fri, 23 May 2003 20:33:21 -0600 "Fernando Perez" 
<fperez at colorado.edu> wrote:
>>> FWIW, if I type something similar in Linux, there's no problem.  So it 
>>> _might_ be a readline issue, perhaps.

It *has* to happen on Linux. Try:

In [1]: @cd foo\<RET>

I bet you'll get the never ending prompt. The problem starts in 
iplib.py line 1085 where you convert the input into a parameter:

            return shell+scommand+'(parameter_s="""%s""")' % (parameter_s,)

If parameter_s ends with a \ then it escapes one of the triple quotes! 
So the string doesn't end... Pretty twisted. Reverse slash is a sick, 
sick character.

Seems to me that at the point you go from a typed line to a string 
parameter you have to take care to escape \ and possibly other characters.

This patch appears to fix the immediate problem:

$ diff -Naur iplib.py~ iplib.py
--- iplib.py~   2003-05-21 06:09:54.000000000 -0400
+++ iplib.py    2003-05-24 08:43:49.000000000 -0400
@@ -1082,6 +1082,7 @@
                 parameter_s = ' ' + parameter_s
             if parameter_s.endswith('"'):
                 parameter_s += ' '
+            parameter_s = parameter_s.replace('\\', '\\\\')
             return shell+scommand+'(parameter_s="""%s""")' % (parameter_s,)
         else:
             return shell+line+'()'

gb



More information about the IPython-dev mailing list