Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/debugcommands.py @ 33438:8056481caa81
codemod: simplify nested withs
This is the result of running:
python codemod_nestedwith.py **/*.py
where codemod_nestedwith.py looks like this:
#!/usr/bin/env python
# codemod_nestedwith.py - codemod tool to rewrite nested with
#
# Copyright 2017 Facebook, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import, print_function
import sys
import redbaron
def readpath(path):
with open(path) as f:
return f.read()
def writepath(path, content):
with open(path, 'w') as f:
f.write(content)
def main(argv):
if not argv:
print('Usage: codemod_nestedwith.py FILES')
for i, path in enumerate(argv):
print('(%d/%d) scanning %s' % (i + 1, len(argv), path))
changed = False
red = redbaron.RedBaron(readpath(path))
processed = set()
for node in red.find_all('with'):
if node in processed or node.type != 'with':
continue
top = node
child = top[0]
while True:
if len(top) > 1 or child.type != 'with':
break
# estimate line length after merging two "with"s
new = '%swith %s:' % (top.indentation, top.contexts.dumps())
new += ', %s' % child.contexts.dumps()
# only do the rewrite if the end result is within 80 chars
if len(new) > 80:
break
processed.add(child)
top.contexts.extend(child.contexts)
top.value = child.value
top.value.decrease_indentation(4)
child = child[0]
changed = True
if changed:
print('updating %s' % path)
writepath(path, red.dumps())
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))
Differential Revision: https://phab.mercurial-scm.org/D77
author | Jun Wu <quark@fb.com> |
---|---|
date | Thu, 13 Jul 2017 18:31:35 -0700 |
parents | 4672db164c98 |
children | 9a9f95214f46 |
comparison
equal
deleted
inserted
replaced
33437:0720e6265c8a | 33438:8056481caa81 |
---|---|
2175 displayer.close() | 2175 displayer.close() |
2176 | 2176 |
2177 @command('debugupdatecaches', []) | 2177 @command('debugupdatecaches', []) |
2178 def debugupdatecaches(ui, repo, *pats, **opts): | 2178 def debugupdatecaches(ui, repo, *pats, **opts): |
2179 """warm all known caches in the repository""" | 2179 """warm all known caches in the repository""" |
2180 with repo.wlock(): | 2180 with repo.wlock(), repo.lock(): |
2181 with repo.lock(): | 2181 repo.updatecaches() |
2182 repo.updatecaches() | |
2183 | 2182 |
2184 @command('debugupgraderepo', [ | 2183 @command('debugupgraderepo', [ |
2185 ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), | 2184 ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), |
2186 ('', 'run', False, _('performs an upgrade')), | 2185 ('', 'run', False, _('performs an upgrade')), |
2187 ]) | 2186 ]) |