Mercurial > public > mercurial-scm > hg-stable
diff contrib/byteify-strings.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 11498aa91c03 |
children | bb509f39d387 |
line wrap: on
line diff
--- a/contrib/byteify-strings.py Sat Oct 05 10:29:34 2019 -0400 +++ b/contrib/byteify-strings.py Sun Oct 06 09:45:02 2019 -0400 @@ -18,10 +18,13 @@ import token import tokenize + def adjusttokenpos(t, ofs): """Adjust start/end column of the given token""" - return t._replace(start=(t.start[0], t.start[1] + ofs), - end=(t.end[0], t.end[1] + ofs)) + return t._replace( + start=(t.start[0], t.start[1] + ofs), end=(t.end[0], t.end[1] + ofs) + ) + def replacetokens(tokens, opts): """Transform a stream of tokens from raw to Python 3. @@ -82,9 +85,8 @@ currtoken = tokens[k] while currtoken.type in (token.STRING, token.NEWLINE, tokenize.NL): k += 1 - if ( - currtoken.type == token.STRING - and currtoken.string.startswith(("'", '"')) + if currtoken.type == token.STRING and currtoken.string.startswith( + ("'", '"') ): sysstrtokens.add(currtoken) try: @@ -126,7 +128,7 @@ coloffset = -1 # column offset for the current line (-1: TBD) parens = [(0, 0, 0, -1)] # stack of (line, end-column, column-offset, type) ignorenextline = False # don't transform the next line - insideignoreblock = False # don't transform until turned off + insideignoreblock = False # don't transform until turned off for i, t in enumerate(tokens): # Compute the column offset for the current line, such that # the current line will be aligned to the last opening paren @@ -135,9 +137,9 @@ lastparen = parens[-1] if t.start[1] == lastparen[1]: coloffset = lastparen[2] - elif ( - t.start[1] + 1 == lastparen[1] - and lastparen[3] not in (token.NEWLINE, tokenize.NL) + elif t.start[1] + 1 == lastparen[1] and lastparen[3] not in ( + token.NEWLINE, + tokenize.NL, ): # fix misaligned indent of s/util.Abort/error.Abort/ coloffset = lastparen[2] + (lastparen[1] - t.start[1]) @@ -202,8 +204,7 @@ continue # String literal. Prefix to make a b'' string. - yield adjusttokenpos(t._replace(string='b%s' % t.string), - coloffset) + yield adjusttokenpos(t._replace(string='b%s' % t.string), coloffset) coldelta += 1 continue @@ -213,8 +214,13 @@ # *attr() builtins don't accept byte strings to 2nd argument. if fn in ( - 'getattr', 'setattr', 'hasattr', 'safehasattr', 'wrapfunction', - 'wrapclass', 'addattr' + 'getattr', + 'setattr', + 'hasattr', + 'safehasattr', + 'wrapfunction', + 'wrapclass', + 'addattr', ) and (opts['allow-attr-methods'] or not _isop(i - 1, '.')): arg1idx = _findargnofcall(1) if arg1idx is not None: @@ -241,18 +247,23 @@ _ensuresysstr(i + 4) # Looks like "if __name__ == '__main__'". - if (t.type == token.NAME and t.string == '__name__' - and _isop(i + 1, '==')): + if ( + t.type == token.NAME + and t.string == '__name__' + and _isop(i + 1, '==') + ): _ensuresysstr(i + 2) # Emit unmodified token. yield adjusttokenpos(t, coloffset) + def process(fin, fout, opts): tokens = tokenize.tokenize(fin.readline) tokens = replacetokens(list(tokens), opts) fout.write(tokenize.untokenize(tokens)) + def tryunlink(fname): try: os.unlink(fname) @@ -260,12 +271,14 @@ if err.errno != errno.ENOENT: raise + @contextlib.contextmanager def editinplace(fname): n = os.path.basename(fname) d = os.path.dirname(fname) - fp = tempfile.NamedTemporaryFile(prefix='.%s-' % n, suffix='~', dir=d, - delete=False) + fp = tempfile.NamedTemporaryFile( + prefix='.%s-' % n, suffix='~', dir=d, delete=False + ) try: yield fp fp.close() @@ -276,19 +289,37 @@ fp.close() tryunlink(fp.name) + def main(): ap = argparse.ArgumentParser() - ap.add_argument('--version', action='version', - version='Byteify strings 1.0') - ap.add_argument('-i', '--inplace', action='store_true', default=False, - help='edit files in place') - ap.add_argument('--dictiter', action='store_true', default=False, - help='rewrite iteritems() and itervalues()'), - ap.add_argument('--allow-attr-methods', action='store_true', - default=False, - help='also handle attr*() when they are methods'), - ap.add_argument('--treat-as-kwargs', nargs="+", default=[], - help="ignore kwargs-like objects"), + ap.add_argument( + '--version', action='version', version='Byteify strings 1.0' + ) + ap.add_argument( + '-i', + '--inplace', + action='store_true', + default=False, + help='edit files in place', + ) + ap.add_argument( + '--dictiter', + action='store_true', + default=False, + help='rewrite iteritems() and itervalues()', + ), + ap.add_argument( + '--allow-attr-methods', + action='store_true', + default=False, + help='also handle attr*() when they are methods', + ), + ap.add_argument( + '--treat-as-kwargs', + nargs="+", + default=[], + help="ignore kwargs-like objects", + ), ap.add_argument('files', metavar='FILE', nargs='+', help='source file') args = ap.parse_args() opts = { @@ -306,6 +337,7 @@ fout = sys.stdout.buffer process(fin, fout, opts) + if __name__ == '__main__': if sys.version_info.major < 3: print('This script must be run under Python 3.')