comparison mercurial/fancyopts.py @ 30583:c6ce11f2ee50

py3: make a bytes version of getopt.getopt() getopt.getopt() deals with unicodes on Python 3 internally and if bytes arguments are passed, then it will return TypeError. So we have now pycompat.getoptb() which takes bytes arguments, convert them to unicode, call getopt.getopt() and then convert the returned value back to bytes and then return those value. All the instances of getopt.getopt() are replaced with pycompat.getoptb().
author Pulkit Goyal <7895pulkit@gmail.com>
date Tue, 06 Dec 2016 06:36:36 +0530
parents e1f0ec0b7d2d
children bd872f64a8ba
comparison
equal deleted inserted replaced
30582:6146d5acee69 30583:c6ce11f2ee50
5 # This software may be used and distributed according to the terms of the 5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version. 6 # GNU General Public License version 2 or any later version.
7 7
8 from __future__ import absolute_import 8 from __future__ import absolute_import
9 9
10 import getopt
11
12 from .i18n import _ 10 from .i18n import _
13 from . import error 11 from . import (
12 error,
13 pycompat,
14 )
14 15
15 # Set of flags to not apply boolean negation logic on 16 # Set of flags to not apply boolean negation logic on
16 nevernegate = set([ 17 nevernegate = set([
17 # avoid --no-noninteractive 18 # avoid --no-noninteractive
18 'noninteractive', 19 'noninteractive',
32 extraargs = [] 33 extraargs = []
33 if '--' in args: 34 if '--' in args:
34 stopindex = args.index('--') 35 stopindex = args.index('--')
35 extraargs = args[stopindex + 1:] 36 extraargs = args[stopindex + 1:]
36 args = args[:stopindex] 37 args = args[:stopindex]
37 opts, parseargs = getopt.getopt(args, options, longoptions) 38 opts, parseargs = pycompat.getoptb(args, options, longoptions)
38 args = [] 39 args = []
39 while parseargs: 40 while parseargs:
40 arg = parseargs.pop(0) 41 arg = parseargs.pop(0)
41 if arg and arg[0] == '-' and len(arg) > 1: 42 if arg and arg[0] == '-' and len(arg) > 1:
42 parseargs.insert(0, arg) 43 parseargs.insert(0, arg)
43 topts, newparseargs = getopt.getopt(parseargs, options, longoptions) 44 topts, newparseargs = pycompat.getoptb(parseargs,\
45 options, longoptions)
44 opts = opts + topts 46 opts = opts + topts
45 parseargs = newparseargs 47 parseargs = newparseargs
46 else: 48 else:
47 args.append(arg) 49 args.append(arg)
48 args.extend(extraargs) 50 args.extend(extraargs)
123 125
124 # parse arguments 126 # parse arguments
125 if gnu: 127 if gnu:
126 parse = gnugetopt 128 parse = gnugetopt
127 else: 129 else:
128 parse = getopt.getopt 130 parse = pycompat.getoptb
129 opts, args = parse(args, shortlist, namelist) 131 opts, args = parse(args, shortlist, namelist)
130 132
131 # transfer result to state 133 # transfer result to state
132 for opt, val in opts: 134 for opt, val in opts:
133 boolval = True 135 boolval = True