[IPython-dev] IPython bug?
fperez at colorado.edu
Sat May 24 15:08:15 EDT 2003
Gary Bishop wrote:
> It *has* to happen on Linux. Try:
> In : @cd foo\<RET>
AH! Ok, I see it now. I was using <tab> instead of <ret>, and it all looked
> 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.
Indeed, having \ as part of day-to-day objects like paths makes many things
unnecessarily, stupidly hard and annoying.
> 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:
Could you try instead the following, and see what happens? I prefer it b/c it
breaks less situations where the user may be honestly trying to use escapes to
handle special characters in his filenames. I simply pad the input string
around the edges with whitespace to prevent the \'s from screwing the quotes
up. It seems to work ok for me in most cases, and it actually simplifies the
code with 2 less ifs/function calls per user input.
[IPython]> diff -Naur iplib.py~ iplib.py
--- iplib.py~ 2003-05-16 21:55:33.000000000 -0600
+++ iplib.py 2003-05-24 13:05:05.000000000 -0600
@@ -1078,11 +1078,8 @@
parameter_s = ''
scommand = line
if hasattr(self, scommand):
- if parameter_s.startswith('"'):
- parameter_s = ' ' + parameter_s
- if parameter_s.endswith('"'):
- parameter_s += ' '
- return shell+scommand+'(parameter_s="""%s""")' % (parameter_s,)
+ parameter_s = " %s " % parameter_s
+ return shell+scommand+'(parameter_s="""%s""")' % parameter_s
More information about the IPython-dev