summaryrefslogtreecommitdiff
path: root/numpy/distutils
diff options
context:
space:
mode:
authorcookedm <cookedm@localhost>2007-12-26 07:08:16 +0000
committercookedm <cookedm@localhost>2007-12-26 07:08:16 +0000
commit87f61abda82e21fc77facd3931e0182dd564c3a0 (patch)
tree2e21b844c860a76a98cf4badd0e2761051bb10f0 /numpy/distutils
parent2a726d25c8404aa21bb9ab5a6f9af82b3ccf4a47 (diff)
downloadnumpy-87f61abda82e21fc77facd3931e0182dd564c3a0.tar.gz
Replace numpy.distutils.exec_command.splitcmdline with shlex.split instead.
It has the same problems as our old numpy.distutils.ccompiler.split_quoted. splitcmdline still exists, but uses shlex.split, and issues a DeprecationWarning This has the positive side effect of not having numpy.distutils pulled in when numpy is imported -- there was a use of splitcmdline in numpy.testing.
Diffstat (limited to 'numpy/distutils')
-rw-r--r--numpy/distutils/command/build_src.py6
-rw-r--r--numpy/distutils/exec_command.py61
-rw-r--r--numpy/distutils/interactive.py4
3 files changed, 11 insertions, 60 deletions
diff --git a/numpy/distutils/command/build_src.py b/numpy/distutils/command/build_src.py
index 57b10ba54..f0d0a3b57 100644
--- a/numpy/distutils/command/build_src.py
+++ b/numpy/distutils/command/build_src.py
@@ -4,6 +4,7 @@
import os
import re
import sys
+import shlex
from distutils.command import build_ext
from distutils.dep_util import newer_group, newer
@@ -24,7 +25,6 @@ from numpy.distutils.misc_util import fortran_ext_match, \
appendpath, is_string, is_sequence
from numpy.distutils.from_template import process_file as process_f_file
from numpy.distutils.conv_template import process_file as process_c_file
-from numpy.distutils.exec_command import splitcmdline
class build_src(build_ext.build_ext):
@@ -94,7 +94,7 @@ class build_src(build_ext.build_ext):
if self.f2py_opts is None:
self.f2py_opts = []
else:
- self.f2py_opts = splitcmdline(self.f2py_opts)
+ self.f2py_opts = shlex.split(self.f2py_opts)
if self.swigflags:
if self.swig_opts:
@@ -106,7 +106,7 @@ class build_src(build_ext.build_ext):
if self.swig_opts is None:
self.swig_opts = []
else:
- self.swig_opts = splitcmdline(self.swig_opts)
+ self.swig_opts = shlex.split(self.swig_opts)
# use options from build_ext command
build_ext = self.get_finalized_command('build_ext')
diff --git a/numpy/distutils/exec_command.py b/numpy/distutils/exec_command.py
index 5863f5d6e..ba2f8842b 100644
--- a/numpy/distutils/exec_command.py
+++ b/numpy/distutils/exec_command.py
@@ -11,7 +11,6 @@ takes keyword arguments for (re-)defining environment variables.
Provides functions:
exec_command --- execute command in a specified directory and
in the modified environment.
- splitcmdline --- inverse of ' '.join(argv)
find_executable --- locate a command using info from environment
variable PATH. Equivalent to posix `which`
command.
@@ -50,6 +49,7 @@ __all__ = ['exec_command','find_executable']
import os
import sys
+import shlex
from numpy.distutils.misc_util import is_sequence, make_temp_file
from numpy.distutils import log
@@ -59,8 +59,6 @@ def temp_file_name():
fo.close()
return name
-############################################################
-
def get_pythonexe():
pythonexe = sys.executable
if os.name in ['nt','dos']:
@@ -70,57 +68,11 @@ def get_pythonexe():
assert os.path.isfile(pythonexe), '%r is not a file' % (pythonexe,)
return pythonexe
-############################################################
-
def splitcmdline(line):
- """ Inverse of ' '.join(sys.argv).
- """
- log.debug('splitcmdline(%r)' % (line))
- lst = []
- flag = 0
- s,pc,cc = '','',''
- for nc in line+' ':
- if flag==0:
- flag = (pc != '\\' and \
- ((cc=='"' and 1) or (cc=="'" and 2) or \
- (cc==' ' and pc!=' ' and -2))) or flag
- elif flag==1:
- flag = (cc=='"' and pc!='\\' and nc==' ' and -1) or flag
- elif flag==2:
- flag = (cc=="'" and pc!='\\' and nc==' ' and -1) or flag
- if flag!=-2:
- s += cc
- if flag<0:
- flag = 0
- s = s.strip()
- if s:
- lst.append(s)
- s = ''
- pc,cc = cc,nc
- else:
- s = s.strip()
- if s:
- lst.append(s)
- log.debug('splitcmdline -> %r' % (lst))
- return lst
-
-def test_splitcmdline():
- l = splitcmdline('a b cc')
- assert l==['a','b','cc'], repr(l)
- l = splitcmdline('a')
- assert l==['a'], repr(l)
- l = splitcmdline('a " b cc"')
- assert l==['a','" b cc"'], repr(l)
- l = splitcmdline('"a bcc" -h')
- assert l==['"a bcc"','-h'], repr(l)
- l = splitcmdline(r'"\"a \" bcc" -h')
- assert l==[r'"\"a \" bcc"','-h'], repr(l)
- l = splitcmdline(" 'a bcc' -h")
- assert l==["'a bcc'",'-h'], repr(l)
- l = splitcmdline(r"'\'a \' bcc' -h")
- assert l==[r"'\'a \' bcc'",'-h'], repr(l)
-
-############################################################
+ import warnings
+ warnings.warn('splitcmdline is deprecated; use shlex.split',
+ DeprecationWarning)
+ return shlex.split(line)
def find_executable(exe, path=None, _cache={}):
"""Return full path of a executable or None.
@@ -379,7 +331,7 @@ def _exec_command( command, use_shell=None, use_tee = None, **env ):
if is_sequence(command):
argv = command[:]
else:
- argv = splitcmdline(command)
+ argv = shlex.split(command)
if hasattr(os,'spawnvpe'):
spawn_command = os.spawnvpe
@@ -632,7 +584,6 @@ else:
if __name__ == "__main__":
- test_splitcmdline()
test(use_tee=0)
test(use_tee=1)
test_execute_in(use_tee=0)
diff --git a/numpy/distutils/interactive.py b/numpy/distutils/interactive.py
index bc741254d..2c10154e6 100644
--- a/numpy/distutils/interactive.py
+++ b/numpy/distutils/interactive.py
@@ -50,7 +50,7 @@ Proposed sys.argv = %s
""" % (ccompiler, fcompiler, argv)
-from exec_command import splitcmdline
+import shlex
def edit_argv(*args):
argv = args[0]
@@ -62,7 +62,7 @@ def edit_argv(*args):
except EOFError:
return
if s:
- argv[1:] = splitcmdline(s)
+ argv[1:] = shlex.split(s)
return
def interactive_sys_argv(argv):