summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/distutils/command/build_src.py6
-rw-r--r--numpy/distutils/exec_command.py61
-rw-r--r--numpy/distutils/interactive.py4
-rw-r--r--numpy/doc/DISTUTILS.txt1
-rw-r--r--numpy/testing/numpytest.py4
5 files changed, 13 insertions, 63 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):
diff --git a/numpy/doc/DISTUTILS.txt b/numpy/doc/DISTUTILS.txt
index e0e8e662a..c5b21da3d 100644
--- a/numpy/doc/DISTUTILS.txt
+++ b/numpy/doc/DISTUTILS.txt
@@ -399,7 +399,6 @@ Useful functions in ``numpy.distutils.misc_util``
---------------------------------------
+ ``get_pythonexe()``
-+ ``splitcmdline(line)``
+ ``find_executable(exe, path=None)``
+ ``exec_command( command, execute_in='', use_shell=None, use_tee=None, **env )``
diff --git a/numpy/testing/numpytest.py b/numpy/testing/numpytest.py
index 9c9080fad..6a0e486aa 100644
--- a/numpy/testing/numpytest.py
+++ b/numpy/testing/numpytest.py
@@ -4,6 +4,7 @@ import sys
import imp
import glob
import types
+import shlex
import unittest
import traceback
import warnings
@@ -16,7 +17,6 @@ __all__ = ['set_package_path', 'set_local_path', 'restore_path',
DEBUG=0
from numpy.testing.utils import jiffies
-from numpy.distutils.exec_command import splitcmdline
get_frame = sys._getframe
class IgnoreException(Exception):
@@ -649,7 +649,7 @@ class NumpyTest:
type='string')
(options, args) = parser.parse_args()
return self.test(options.level,options.verbosity,
- sys_argv=splitcmdline(options.sys_argv or ''),
+ sys_argv=shlex.split(options.sys_argv or ''),
testcase_pattern=options.testcase_pattern)
def warn(self, message):