Bug in argument parsing for %run #592

Closed
jstenar opened this Issue Jul 18, 2011 · 4 comments

3 participants

@jstenar
IPython member

Excerpt from discussion on ipython-dev:

This problem is with master 9e2a3f4, calling %run with parameters that have quotation marks keep the marks in sys.argv.

runbug.py:

import sys
sys.argv

In [2]: %run runbug.py "hello world"
[u'runbug.py', u'"hello world"']

This is unique to Windows, somehow.

As far as I can tell it is due to shlex that is called from arg_split. When on posix shlex is called with posix=True which removes the quotation marks, but on windows we get posix=False which keeps them. If we call shlex with posix=True on windows we get messed up handling of \ in paths since posix means \ is used for escaping.

Perhaps one solution could be to strip " from elements returned by arg_split when they are present in both ends, any other ideas?

It is really annoying to not be able to use " from run, unfortunately there are often spaces in windows paths.

/Jörgen

@jstenar
IPython member

In my arg_parse branch I have a first stab at a fix. I will try to use this myself for a while to see if any unforseen issues come up. Then I'll write some tests.

/Jörgen

@fperez
IPython member

@jstenar, has this been fixed? I'd like to close it if so. If not, do you have your branch around with the fixes, so we can merge it? Thanks!

@jstenar
IPython member

I do not remember when, but a simple fix for this has gone in already. However quoting only works on the first argument to %run and not for arbitrary arguments.

Running a script that prints argv:

In [1]: %run "space test.py" "testing quoted arguments"
['space test.py', '"testing quoted arguments"']
@jstenar jstenar referenced this issue Nov 28, 2011
Merged

Win32 shlex #1064

@takluyver
IPython member

Closed by PR #1064.

@takluyver takluyver closed this Nov 30, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment