Mercurial > public > mercurial-scm > hg-stable
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 |