mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
py3: have a bytes version of shlex.split()
shlex.split() only accepts unicodes on Python 3. After this patch we will be using pycompat.shlexsplit(). This patch also replaces existing occurences of shlex.split with pycompat.shlexsplit.
This commit is contained in:
parent
d23c117db4
commit
d310fba3dd
@ -64,7 +64,6 @@ from __future__ import absolute_import
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shlex
|
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
from mercurial.i18n import _
|
from mercurial.i18n import _
|
||||||
@ -78,6 +77,7 @@ from mercurial import (
|
|||||||
commands,
|
commands,
|
||||||
error,
|
error,
|
||||||
filemerge,
|
filemerge,
|
||||||
|
pycompat,
|
||||||
scmutil,
|
scmutil,
|
||||||
util,
|
util,
|
||||||
)
|
)
|
||||||
@ -371,7 +371,7 @@ def uisetup(ui):
|
|||||||
if path:
|
if path:
|
||||||
# case "cmd = path opts"
|
# case "cmd = path opts"
|
||||||
cmdline = path
|
cmdline = path
|
||||||
diffopts = len(shlex.split(cmdline)) > 1
|
diffopts = len(pycompat.shlexsplit(cmdline)) > 1
|
||||||
else:
|
else:
|
||||||
# case "cmd ="
|
# case "cmd ="
|
||||||
path = util.findexe(cmd)
|
path = util.findexe(cmd)
|
||||||
|
@ -11,7 +11,6 @@ import difflib
|
|||||||
import errno
|
import errno
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shlex
|
|
||||||
import socket
|
import socket
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
@ -1981,7 +1980,7 @@ def debuginstall(ui, **opts):
|
|||||||
editor = ui.geteditor()
|
editor = ui.geteditor()
|
||||||
editor = util.expandpath(editor)
|
editor = util.expandpath(editor)
|
||||||
fm.write('editor', _("checking commit editor... (%s)\n"), editor)
|
fm.write('editor', _("checking commit editor... (%s)\n"), editor)
|
||||||
cmdpath = util.findexe(shlex.split(editor)[0])
|
cmdpath = util.findexe(pycompat.shlexsplit(editor)[0])
|
||||||
fm.condwrite(not cmdpath and editor == 'vi', 'vinotfound',
|
fm.condwrite(not cmdpath and editor == 'vi', 'vinotfound',
|
||||||
_(" No commit editor set and can't find %s in PATH\n"
|
_(" No commit editor set and can't find %s in PATH\n"
|
||||||
" (specify a commit editor in your configuration"
|
" (specify a commit editor in your configuration"
|
||||||
|
@ -14,7 +14,6 @@ import getopt
|
|||||||
import os
|
import os
|
||||||
import pdb
|
import pdb
|
||||||
import re
|
import re
|
||||||
import shlex
|
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
@ -279,7 +278,7 @@ def aliasargs(fn, givenargs):
|
|||||||
cmd = re.sub(r'\$(\d+|\$)', replacer, cmd)
|
cmd = re.sub(r'\$(\d+|\$)', replacer, cmd)
|
||||||
givenargs = [x for i, x in enumerate(givenargs)
|
givenargs = [x for i, x in enumerate(givenargs)
|
||||||
if i not in nums]
|
if i not in nums]
|
||||||
args = shlex.split(cmd)
|
args = pycompat.shlexsplit(cmd)
|
||||||
return args + givenargs
|
return args + givenargs
|
||||||
|
|
||||||
def aliasinterpolate(name, args, cmd):
|
def aliasinterpolate(name, args, cmd):
|
||||||
@ -351,7 +350,7 @@ class cmdalias(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
args = shlex.split(self.definition)
|
args = pycompat.shlexsplit(self.definition)
|
||||||
except ValueError as inst:
|
except ValueError as inst:
|
||||||
self.badalias = (_("error in definition for alias '%s': %s")
|
self.badalias = (_("error in definition for alias '%s': %s")
|
||||||
% (self.name, inst))
|
% (self.name, inst))
|
||||||
@ -461,7 +460,7 @@ def _parse(ui, args):
|
|||||||
args = aliasargs(entry[0], args)
|
args = aliasargs(entry[0], args)
|
||||||
defaults = ui.config("defaults", cmd)
|
defaults = ui.config("defaults", cmd)
|
||||||
if defaults:
|
if defaults:
|
||||||
args = map(util.expandpath, shlex.split(defaults)) + args
|
args = map(util.expandpath, pycompat.shlexsplit(defaults)) + args
|
||||||
c = list(entry[1])
|
c = list(entry[1])
|
||||||
else:
|
else:
|
||||||
cmd = None
|
cmd = None
|
||||||
|
@ -12,6 +12,7 @@ from __future__ import absolute_import
|
|||||||
|
|
||||||
import getopt
|
import getopt
|
||||||
import os
|
import os
|
||||||
|
import shlex
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
ispy3 = (sys.version_info[0] >= 3)
|
ispy3 = (sys.version_info[0] >= 3)
|
||||||
@ -122,6 +123,14 @@ if ispy3:
|
|||||||
dic = dict((k.encode('latin-1'), v) for k, v in dic.iteritems())
|
dic = dict((k.encode('latin-1'), v) for k, v in dic.iteritems())
|
||||||
return dic
|
return dic
|
||||||
|
|
||||||
|
# shlex.split() accepts unicodes on Python 3. This function takes bytes
|
||||||
|
# argument, convert it into unicodes, pass into shlex.split(), convert the
|
||||||
|
# returned value to bytes and return that.
|
||||||
|
# TODO: handle shlex.shlex().
|
||||||
|
def shlexsplit(s):
|
||||||
|
ret = shlex.split(s.decode('latin-1'))
|
||||||
|
return [a.encode('latin-1') for a in ret]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
def sysstr(s):
|
def sysstr(s):
|
||||||
return s
|
return s
|
||||||
@ -162,6 +171,7 @@ else:
|
|||||||
getcwd = os.getcwd
|
getcwd = os.getcwd
|
||||||
osgetenv = os.getenv
|
osgetenv = os.getenv
|
||||||
sysexecutable = sys.executable
|
sysexecutable = sys.executable
|
||||||
|
shlexsplit = shlex.split
|
||||||
|
|
||||||
stringio = io.StringIO
|
stringio = io.StringIO
|
||||||
empty = _queue.Empty
|
empty = _queue.Empty
|
||||||
|
Loading…
Reference in New Issue
Block a user