diff options
-rw-r--r-- | numpy/distutils/command/build_src.py | 6 | ||||
-rw-r--r-- | numpy/distutils/exec_command.py | 61 | ||||
-rw-r--r-- | numpy/distutils/interactive.py | 4 | ||||
-rw-r--r-- | numpy/doc/DISTUTILS.txt | 1 | ||||
-rw-r--r-- | numpy/testing/numpytest.py | 4 |
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): |