Mercurial > public > mercurial-scm > hg
diff mercurial/utils/stringutil.py @ 43077:687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Done with
python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py')
black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**')
# skip-blame mass-reformatting only
Differential Revision: https://phab.mercurial-scm.org/D6972
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:48:39 -0400 |
parents | 2372284d9457 |
children | 9f70512ae2cf |
line wrap: on
line diff
--- a/mercurial/utils/stringutil.py Sun Oct 06 09:45:02 2019 -0400 +++ b/mercurial/utils/stringutil.py Sun Oct 06 09:48:39 2019 -0400 @@ -66,24 +66,24 @@ if isinstance(o, bytes): if bprefix: - yield "b'%s'" % escapestr(o) + yield b"b'%s'" % escapestr(o) else: - yield "'%s'" % escapestr(o) + yield b"'%s'" % escapestr(o) elif isinstance(o, bytearray): # codecs.escape_encode() can't handle bytearray, so escapestr fails # without coercion. - yield "bytearray['%s']" % escapestr(bytes(o)) + yield b"bytearray['%s']" % escapestr(bytes(o)) elif isinstance(o, list): if not o: - yield '[]' + yield b'[]' return - yield '[' + yield b'[' if indent: level += 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) for i, a in enumerate(o): for chunk in pprintgen( @@ -93,28 +93,28 @@ if i + 1 < len(o): if indent: - yield ',\n' - yield ' ' * (level * indent) + yield b',\n' + yield b' ' * (level * indent) else: - yield ', ' + yield b', ' if indent: level -= 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) - yield ']' + yield b']' elif isinstance(o, dict): if not o: - yield '{}' + yield b'{}' return - yield '{' + yield b'{' if indent: level += 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) for i, (k, v) in enumerate(sorted(o.items())): for chunk in pprintgen( @@ -122,7 +122,7 @@ ): yield chunk - yield ': ' + yield b': ' for chunk in pprintgen( v, bprefix=bprefix, indent=indent, level=level @@ -131,28 +131,28 @@ if i + 1 < len(o): if indent: - yield ',\n' - yield ' ' * (level * indent) + yield b',\n' + yield b' ' * (level * indent) else: - yield ', ' + yield b', ' if indent: level -= 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) - yield '}' + yield b'}' elif isinstance(o, set): if not o: - yield 'set([])' + yield b'set([])' return - yield 'set([' + yield b'set([' if indent: level += 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) for i, k in enumerate(sorted(o)): for chunk in pprintgen( @@ -162,28 +162,28 @@ if i + 1 < len(o): if indent: - yield ',\n' - yield ' ' * (level * indent) + yield b',\n' + yield b' ' * (level * indent) else: - yield ', ' + yield b', ' if indent: level -= 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) - yield '])' + yield b'])' elif isinstance(o, tuple): if not o: - yield '()' + yield b'()' return - yield '(' + yield b'(' if indent: level += 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) for i, a in enumerate(o): for chunk in pprintgen( @@ -193,31 +193,31 @@ if i + 1 < len(o): if indent: - yield ',\n' - yield ' ' * (level * indent) + yield b',\n' + yield b' ' * (level * indent) else: - yield ', ' + yield b', ' if indent: level -= 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) - yield ')' + yield b')' elif isinstance(o, types.GeneratorType): # Special case of empty generator. try: nextitem = next(o) except StopIteration: - yield 'gen[]' + yield b'gen[]' return - yield 'gen[' + yield b'gen[' if indent: level += 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) last = False @@ -236,17 +236,17 @@ if not last: if indent: - yield ',\n' - yield ' ' * (level * indent) + yield b',\n' + yield b' ' * (level * indent) else: - yield ', ' + yield b', ' if indent: level -= 1 - yield '\n' - yield ' ' * (level * indent) + yield b'\n' + yield b' ' * (level * indent) - yield ']' + yield b']' else: yield pycompat.byterepr(o) @@ -261,21 +261,21 @@ # ~~~~~~~~~~~~~~~~ # p0 p1 q0 q1 q0 = -1 - q1 = rs.find('<', p1 + 1) + q1 = rs.find(b'<', p1 + 1) if q1 < 0: q1 = len(rs) - elif q1 > p1 + 1 and rs.startswith('=', q1 - 1): + elif q1 > p1 + 1 and rs.startswith(b'=', q1 - 1): # backtrack for ' field=<' - q0 = rs.rfind(' ', p1 + 1, q1 - 1) + q0 = rs.rfind(b' ', p1 + 1, q1 - 1) if q0 < 0: q0 = q1 else: q0 += 1 # skip ' ' - l = rs.count('<', 0, p0) - rs.count('>', 0, p0) + l = rs.count(b'<', 0, p0) - rs.count(b'>', 0, p0) assert l >= 0 lines.append((l, rs[p0:q0].rstrip())) p0, p1 = q0, q1 - return '\n'.join(' ' * l + s for l, s in lines) + return b'\n'.join(b' ' * l + s for l, s in lines) def buildrepr(r): @@ -291,7 +291,7 @@ ======== ================================= """ if r is None: - return '' + return b'' elif isinstance(r, tuple): return r[0] % pycompat.rapply(pycompat.maybebytestr, r[1:]) elif isinstance(r, bytes): @@ -304,7 +304,7 @@ def binary(s): """return true if a string is binary data""" - return bool(s and '\0' in s) + return bool(s and b'\0' in s) def stringmatcher(pattern, casesensitive=True): @@ -345,7 +345,7 @@ >>> itest(b'ABCDEFG', b'abc', b'def', b'abcdefg') ('literal', 'ABCDEFG', [False, False, True]) """ - if pattern.startswith('re:'): + if pattern.startswith(b're:'): pattern = pattern[3:] try: flags = 0 @@ -353,9 +353,9 @@ flags = remod.I regex = remod.compile(pattern, flags) except remod.error as e: - raise error.ParseError(_('invalid regular expression: %s') % e) - return 're', pattern, regex.search - elif pattern.startswith('literal:'): + raise error.ParseError(_(b'invalid regular expression: %s') % e) + return b're', pattern, regex.search + elif pattern.startswith(b'literal:'): pattern = pattern[8:] match = pattern.__eq__ @@ -363,21 +363,21 @@ if not casesensitive: ipat = encoding.lower(pattern) match = lambda s: ipat == encoding.lower(s) - return 'literal', pattern, match + return b'literal', pattern, match def shortuser(user): """Return a short representation of a user name or email address.""" - f = user.find('@') + f = user.find(b'@') if f >= 0: user = user[:f] - f = user.find('<') + f = user.find(b'<') if f >= 0: user = user[f + 1 :] - f = user.find(' ') + f = user.find(b' ') if f >= 0: user = user[:f] - f = user.find('.') + f = user.find(b'.') if f >= 0: user = user[:f] return user @@ -385,10 +385,10 @@ def emailuser(user): """Return the user portion of an email address.""" - f = user.find('@') + f = user.find(b'@') if f >= 0: user = user[:f] - f = user.find('<') + f = user.find(b'<') if f >= 0: user = user[f + 1 :] return user @@ -396,10 +396,10 @@ def email(author): '''get email of author.''' - r = author.find('>') + r = author.find(b'>') if r == -1: r = None - return author[author.find('<') + 1 : r] + return author[author.find(b'<') + 1 : r] def person(author): @@ -421,13 +421,13 @@ >>> person(b'"Foo Bar <foo@bar>') 'Foo Bar' """ - if '@' not in author: + if b'@' not in author: return author - f = author.find('<') + f = author.find(b'<') if f != -1: - return author[:f].strip(' "').replace('\\"', '"') - f = author.find('@') - return author[:f].replace('.', ' ') + return author[:f].strip(b' "').replace(b'\\"', b'"') + f = author.find(b'@') + return author[:f].replace(b'.', b' ') @attr.s(hash=True) @@ -497,7 +497,7 @@ # Don't bother checking the line if it is a comment or # is an improperly formed author field - if line.lstrip().startswith('#'): + if line.lstrip().startswith(b'#'): continue # names, emails hold the parsed emails and names for each line @@ -506,17 +506,17 @@ namebuilder = [] for element in line.split(): - if element.startswith('#'): + if element.startswith(b'#'): # If we reach a comment in the mailmap file, move on break - elif element.startswith('<') and element.endswith('>'): + elif element.startswith(b'<') and element.endswith(b'>'): # We have found an email. # Parse it, and finalize any names from earlier emails.append(element[1:-1]) # Slice off the "<>" if namebuilder: - names.append(' '.join(namebuilder)) + names.append(b' '.join(namebuilder)) namebuilder = [] # Break if we have found a second email, any other @@ -587,7 +587,7 @@ proper = mailmap.get(commit2, mailmapping(None, None)) # Return the author field with proper values filled in - return '%s <%s>' % ( + return b'%s <%s>' % ( proper.name if proper.name else commit.name, proper.email if proper.email else commit.email, ) @@ -620,7 +620,7 @@ def ellipsis(text, maxlength=400): """Trim string to at most maxlength (default: 400) columns in display.""" - return encoding.trim(text, maxlength, ellipsis='...') + return encoding.trim(text, maxlength, ellipsis=b'...') def escapestr(s): @@ -675,7 +675,7 @@ l += colwidth(ucstr[i]) if space_left < l: return (ucstr[:i], ucstr[i:]) - return ucstr, '' + return ucstr, b'' # overriding of base class def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width): @@ -695,7 +695,7 @@ lines = [] if self.width <= 0: - raise ValueError("invalid width %r (must be > 0)" % self.width) + raise ValueError(b"invalid width %r (must be > 0)" % self.width) # Arrange in reverse order so items can be efficiently popped # from a stack of chucks. @@ -759,7 +759,7 @@ return tw(**kwargs) -def wrap(line, width, initindent='', hangindent=''): +def wrap(line, width, initindent=b'', hangindent=b''): maxindent = max(len(hangindent), len(initindent)) if width <= maxindent: # adjust for weird terminal size @@ -783,16 +783,16 @@ _booleans = { - '1': True, - 'yes': True, - 'true': True, - 'on': True, - 'always': True, - '0': False, - 'no': False, - 'false': False, - 'off': False, - 'never': False, + b'1': True, + b'yes': True, + b'true': True, + b'on': True, + b'always': True, + b'0': False, + b'no': False, + b'false': False, + b'off': False, + b'never': False, }