Mercurial > hg
diff hgext/keyword.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 | 86e4daa2d54c |
line wrap: on
line diff
--- a/hgext/keyword.py Sun Oct 06 09:45:02 2019 -0400 +++ b/hgext/keyword.py Sun Oct 06 09:48:39 2019 -0400 @@ -122,33 +122,33 @@ # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should # be specifying the version(s) of Mercurial they are tested with, or # leave the attribute unspecified. -testedwith = 'ships-with-hg-core' +testedwith = b'ships-with-hg-core' # hg commands that do not act on keywords nokwcommands = ( - 'add addremove annotate bundle export grep incoming init log' - ' outgoing push tip verify convert email glog' + b'add addremove annotate bundle export grep incoming init log' + b' outgoing push tip verify convert email glog' ) # webcommands that do not act on keywords -nokwwebcommands = 'annotate changeset rev filediff diff comparison' +nokwwebcommands = b'annotate changeset rev filediff diff comparison' # hg commands that trigger expansion only when writing to working dir, # not when reading filelog, and unexpand when reading from working dir restricted = ( - 'merge kwexpand kwshrink record qrecord resolve transplant' - ' unshelve rebase graft backout histedit fetch' + b'merge kwexpand kwshrink record qrecord resolve transplant' + b' unshelve rebase graft backout histedit fetch' ) # names of extensions using dorecord -recordextensions = 'record' +recordextensions = b'record' colortable = { - 'kwfiles.enabled': 'green bold', - 'kwfiles.deleted': 'cyan bold underline', - 'kwfiles.enabledunknown': 'green', - 'kwfiles.ignored': 'bold', - 'kwfiles.ignoredunknown': 'none', + b'kwfiles.enabled': b'green bold', + b'kwfiles.deleted': b'cyan bold underline', + b'kwfiles.enabledunknown': b'green', + b'kwfiles.ignored': b'bold', + b'kwfiles.ignoredunknown': b'none', } templatefilter = registrar.templatefilter() @@ -157,65 +157,65 @@ configitem = registrar.configitem(configtable) configitem( - 'keywordset', 'svn', default=False, + b'keywordset', b'svn', default=False, ) # date like in cvs' $Date -@templatefilter('utcdate', intype=templateutil.date) +@templatefilter(b'utcdate', intype=templateutil.date) def utcdate(date): '''Date. Returns a UTC-date in this format: "2009/08/18 11:00:13". ''' - dateformat = '%Y/%m/%d %H:%M:%S' + dateformat = b'%Y/%m/%d %H:%M:%S' return dateutil.datestr((date[0], 0), dateformat) # date like in svn's $Date -@templatefilter('svnisodate', intype=templateutil.date) +@templatefilter(b'svnisodate', intype=templateutil.date) def svnisodate(date): '''Date. Returns a date in this format: "2009-08-18 13:00:13 +0200 (Tue, 18 Aug 2009)". ''' - return dateutil.datestr(date, '%Y-%m-%d %H:%M:%S %1%2 (%a, %d %b %Y)') + return dateutil.datestr(date, b'%Y-%m-%d %H:%M:%S %1%2 (%a, %d %b %Y)') # date like in svn's $Id -@templatefilter('svnutcdate', intype=templateutil.date) +@templatefilter(b'svnutcdate', intype=templateutil.date) def svnutcdate(date): '''Date. Returns a UTC-date in this format: "2009-08-18 11:00:13Z". ''' - dateformat = '%Y-%m-%d %H:%M:%SZ' + dateformat = b'%Y-%m-%d %H:%M:%SZ' return dateutil.datestr((date[0], 0), dateformat) # make keyword tools accessible -kwtools = {'hgcmd': ''} +kwtools = {b'hgcmd': b''} def _defaultkwmaps(ui): '''Returns default keywordmaps according to keywordset configuration.''' templates = { - 'Revision': '{node|short}', - 'Author': '{author|user}', + b'Revision': b'{node|short}', + b'Author': b'{author|user}', } kwsets = ( { - 'Date': '{date|utcdate}', - 'RCSfile': '{file|basename},v', - 'RCSFile': '{file|basename},v', # kept for backwards compatibility + b'Date': b'{date|utcdate}', + b'RCSfile': b'{file|basename},v', + b'RCSFile': b'{file|basename},v', # kept for backwards compatibility # with hg-keyword - 'Source': '{root}/{file},v', - 'Id': '{file|basename},v {node|short} {date|utcdate} {author|user}', - 'Header': '{root}/{file},v {node|short} {date|utcdate} {author|user}', + b'Source': b'{root}/{file},v', + b'Id': b'{file|basename},v {node|short} {date|utcdate} {author|user}', + b'Header': b'{root}/{file},v {node|short} {date|utcdate} {author|user}', }, { - 'Date': '{date|svnisodate}', - 'Id': '{file|basename},v {node|short} {date|svnutcdate} {author|user}', - 'LastChangedRevision': '{node|short}', - 'LastChangedBy': '{author|user}', - 'LastChangedDate': '{date|svnisodate}', + b'Date': b'{date|svnisodate}', + b'Id': b'{file|basename},v {node|short} {date|svnutcdate} {author|user}', + b'LastChangedRevision': b'{node|short}', + b'LastChangedBy': b'{author|user}', + b'LastChangedDate': b'{date|svnisodate}', }, ) - templates.update(kwsets[ui.configbool('keywordset', 'svn')]) + templates.update(kwsets[ui.configbool(b'keywordset', b'svn')]) return templates @@ -243,11 +243,11 @@ def __init__(self, ui, repo, inc, exc): self.ui = ui self._repo = weakref.ref(repo) - self.match = match.match(repo.root, '', [], inc, exc) - self.restrict = kwtools['hgcmd'] in restricted.split() + self.match = match.match(repo.root, b'', [], inc, exc) + self.restrict = kwtools[b'hgcmd'] in restricted.split() self.postcommit = False - kwmaps = self.ui.configitems('keywordmaps') + kwmaps = self.ui.configitems(b'keywordmaps') if kwmaps: # override default templates self.templates = dict(kwmaps) else: @@ -260,7 +260,7 @@ @util.propertycache def escape(self): '''Returns bar-separated and escaped keywords.''' - return '|'.join(map(stringutil.reescape, self.templates.keys())) + return b'|'.join(map(stringutil.reescape, self.templates.keys())) @util.propertycache def rekw(self): @@ -283,7 +283,7 @@ self.ui.pushbuffer() ct.show(ctx, root=self.repo.root, file=path) ekw = templatefilters.firstline(self.ui.popbuffer()) - return '$%s: %s $' % (kw, ekw) + return b'$%s: %s $' % (kw, ekw) return subfunc(kwsub, data) @@ -305,7 +305,7 @@ def iskwfile(self, cand, ctx): '''Returns subset of candidates which are configured for keyword expansion but are not symbolic links.''' - return [f for f in cand if self.match(f) and 'l' not in ctx.flags(f)] + return [f for f in cand if self.match(f) and b'l' not in ctx.flags(f)] def overwrite(self, ctx, candidates, lookup, expand, rekw=False): '''Overwrites selected files expanding/shrinking keywords.''' @@ -321,9 +321,9 @@ else: re_kw = self.rekwexp if expand: - msg = _('overwriting %s expanding keywords\n') + msg = _(b'overwriting %s expanding keywords\n') else: - msg = _('overwriting %s shrinking keywords\n') + msg = _(b'overwriting %s shrinking keywords\n') for f in candidates: if self.restrict: data = self.repo.file(f).read(mf[f]) @@ -350,7 +350,7 @@ data, found = _shrinktext(data, re_kw.subn) if found: self.ui.note(msg % f) - fp = self.repo.wvfs(f, "wb", atomictemp=True) + fp = self.repo.wvfs(f, b"wb", atomictemp=True) fp.write(data) fp.close() if kwcmd: @@ -367,7 +367,7 @@ def shrinklines(self, fname, lines): '''Returns lines with keyword substitutions removed.''' if self.match(fname): - text = ''.join(lines) + text = b''.join(lines) if not stringutil.binary(text): return _shrinktext(text, self.rekwexp.sub).splitlines(True) return lines @@ -417,33 +417,33 @@ return repo.status( match=scmutil.match(wctx, pats, opts), clean=True, - unknown=opts.get('unknown') or opts.get('all'), + unknown=opts.get(b'unknown') or opts.get(b'all'), ) - if ui.configitems('keyword'): - raise error.Abort(_('[keyword] patterns cannot match')) - raise error.Abort(_('no [keyword] patterns configured')) + if ui.configitems(b'keyword'): + raise error.Abort(_(b'[keyword] patterns cannot match')) + raise error.Abort(_(b'no [keyword] patterns configured')) def _kwfwrite(ui, repo, expand, *pats, **opts): '''Selects files and passes them to kwtemplater.overwrite.''' wctx = repo[None] if len(wctx.parents()) > 1: - raise error.Abort(_('outstanding uncommitted merge')) + raise error.Abort(_(b'outstanding uncommitted merge')) kwt = getattr(repo, '_keywordkwt', None) with repo.wlock(): status = _status(ui, repo, wctx, kwt, *pats, **opts) if status.modified or status.added or status.removed or status.deleted: - raise error.Abort(_('outstanding uncommitted changes')) + raise error.Abort(_(b'outstanding uncommitted changes')) kwt.overwrite(wctx, status.clean, True, expand) @command( - 'kwdemo', + b'kwdemo', [ - ('d', 'default', None, _('show default keyword template maps')), - ('f', 'rcfile', '', _('read maps from rcfile'), _('FILE')), + (b'd', b'default', None, _(b'show default keyword template maps')), + (b'f', b'rcfile', b'', _(b'read maps from rcfile'), _(b'FILE')), ], - _('hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...'), + _(b'hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...'), optionalrepo=True, ) def demo(ui, repo, *args, **opts): @@ -461,55 +461,55 @@ ''' def demoitems(section, items): - ui.write('[%s]\n' % section) + ui.write(b'[%s]\n' % section) for k, v in sorted(items): if isinstance(v, bool): v = stringutil.pprint(v) - ui.write('%s = %s\n' % (k, v)) + ui.write(b'%s = %s\n' % (k, v)) - fn = 'demo.txt' - tmpdir = pycompat.mkdtemp('', 'kwdemo.') - ui.note(_('creating temporary repository at %s\n') % tmpdir) + fn = b'demo.txt' + tmpdir = pycompat.mkdtemp(b'', b'kwdemo.') + ui.note(_(b'creating temporary repository at %s\n') % tmpdir) if repo is None: baseui = ui else: baseui = repo.baseui repo = localrepo.instance(baseui, tmpdir, create=True) - ui.setconfig('keyword', fn, '', 'keyword') - svn = ui.configbool('keywordset', 'svn') + ui.setconfig(b'keyword', fn, b'', b'keyword') + svn = ui.configbool(b'keywordset', b'svn') # explicitly set keywordset for demo output - ui.setconfig('keywordset', 'svn', svn, 'keyword') + ui.setconfig(b'keywordset', b'svn', svn, b'keyword') - uikwmaps = ui.configitems('keywordmaps') + uikwmaps = ui.configitems(b'keywordmaps') if args or opts.get(r'rcfile'): - ui.status(_('\n\tconfiguration using custom keyword template maps\n')) + ui.status(_(b'\n\tconfiguration using custom keyword template maps\n')) if uikwmaps: - ui.status(_('\textending current template maps\n')) + ui.status(_(b'\textending current template maps\n')) if opts.get(r'default') or not uikwmaps: if svn: - ui.status(_('\toverriding default svn keywordset\n')) + ui.status(_(b'\toverriding default svn keywordset\n')) else: - ui.status(_('\toverriding default cvs keywordset\n')) + ui.status(_(b'\toverriding default cvs keywordset\n')) if opts.get(r'rcfile'): - ui.readconfig(opts.get('rcfile')) + ui.readconfig(opts.get(b'rcfile')) if args: # simulate hgrc parsing - rcmaps = '[keywordmaps]\n%s\n' % '\n'.join(args) - repo.vfs.write('hgrc', rcmaps) - ui.readconfig(repo.vfs.join('hgrc')) - kwmaps = dict(ui.configitems('keywordmaps')) + rcmaps = b'[keywordmaps]\n%s\n' % b'\n'.join(args) + repo.vfs.write(b'hgrc', rcmaps) + ui.readconfig(repo.vfs.join(b'hgrc')) + kwmaps = dict(ui.configitems(b'keywordmaps')) elif opts.get(r'default'): if svn: - ui.status(_('\n\tconfiguration using default svn keywordset\n')) + ui.status(_(b'\n\tconfiguration using default svn keywordset\n')) else: - ui.status(_('\n\tconfiguration using default cvs keywordset\n')) + ui.status(_(b'\n\tconfiguration using default cvs keywordset\n')) kwmaps = _defaultkwmaps(ui) if uikwmaps: - ui.status(_('\tdisabling current template maps\n')) + ui.status(_(b'\tdisabling current template maps\n')) for k, v in kwmaps.iteritems(): - ui.setconfig('keywordmaps', k, v, 'keyword') + ui.setconfig(b'keywordmaps', k, v, b'keyword') else: - ui.status(_('\n\tconfiguration using current keyword template maps\n')) + ui.status(_(b'\n\tconfiguration using current keyword template maps\n')) if uikwmaps: kwmaps = dict(uikwmaps) else: @@ -517,32 +517,32 @@ uisetup(ui) reposetup(ui, repo) - ui.write('[extensions]\nkeyword =\n') - demoitems('keyword', ui.configitems('keyword')) - demoitems('keywordset', ui.configitems('keywordset')) - demoitems('keywordmaps', kwmaps.iteritems()) - keywords = '$' + '$\n$'.join(sorted(kwmaps.keys())) + '$\n' + ui.write(b'[extensions]\nkeyword =\n') + demoitems(b'keyword', ui.configitems(b'keyword')) + demoitems(b'keywordset', ui.configitems(b'keywordset')) + demoitems(b'keywordmaps', kwmaps.iteritems()) + keywords = b'$' + b'$\n$'.join(sorted(kwmaps.keys())) + b'$\n' repo.wvfs.write(fn, keywords) repo[None].add([fn]) - ui.note(_('\nkeywords written to %s:\n') % fn) + ui.note(_(b'\nkeywords written to %s:\n') % fn) ui.note(keywords) with repo.wlock(): - repo.dirstate.setbranch('demobranch') - for name, cmd in ui.configitems('hooks'): - if name.split('.', 1)[0].find('commit') > -1: - repo.ui.setconfig('hooks', name, '', 'keyword') - msg = _('hg keyword configuration and expansion example') - ui.note(("hg ci -m '%s'\n" % msg)) + repo.dirstate.setbranch(b'demobranch') + for name, cmd in ui.configitems(b'hooks'): + if name.split(b'.', 1)[0].find(b'commit') > -1: + repo.ui.setconfig(b'hooks', name, b'', b'keyword') + msg = _(b'hg keyword configuration and expansion example') + ui.note((b"hg ci -m '%s'\n" % msg)) repo.commit(text=msg) - ui.status(_('\n\tkeywords expanded\n')) + ui.status(_(b'\n\tkeywords expanded\n')) ui.write(repo.wread(fn)) repo.wvfs.rmtree(repo.root) @command( - 'kwexpand', + b'kwexpand', cmdutil.walkopts, - _('hg kwexpand [OPTION]... [FILE]...'), + _(b'hg kwexpand [OPTION]... [FILE]...'), inferrepo=True, ) def expand(ui, repo, *pats, **opts): @@ -557,14 +557,14 @@ @command( - 'kwfiles', + b'kwfiles', [ - ('A', 'all', None, _('show keyword status flags of all files')), - ('i', 'ignore', None, _('show files excluded from expansion')), - ('u', 'unknown', None, _('only show unknown (not tracked) files')), + (b'A', b'all', None, _(b'show keyword status flags of all files')), + (b'i', b'ignore', None, _(b'show files excluded from expansion')), + (b'u', b'unknown', None, _(b'only show unknown (not tracked) files')), ] + cmdutil.walkopts, - _('hg kwfiles [OPTION]... [FILE]...'), + _(b'hg kwfiles [OPTION]... [FILE]...'), inferrepo=True, ) def files(ui, repo, *pats, **opts): @@ -594,31 +594,31 @@ if pats: cwd = repo.getcwd() else: - cwd = '' + cwd = b'' files = [] opts = pycompat.byteskwargs(opts) - if not opts.get('unknown') or opts.get('all'): + if not opts.get(b'unknown') or opts.get(b'all'): files = sorted(status.modified + status.added + status.clean) kwfiles = kwt.iskwfile(files, wctx) kwdeleted = kwt.iskwfile(status.deleted, wctx) kwunknown = kwt.iskwfile(status.unknown, wctx) - if not opts.get('ignore') or opts.get('all'): + if not opts.get(b'ignore') or opts.get(b'all'): showfiles = kwfiles, kwdeleted, kwunknown else: showfiles = [], [], [] - if opts.get('all') or opts.get('ignore'): + if opts.get(b'all') or opts.get(b'ignore'): showfiles += ( [f for f in files if f not in kwfiles], [f for f in status.unknown if f not in kwunknown], ) - kwlabels = 'enabled deleted enabledunknown ignored ignoredunknown'.split() - kwstates = zip(kwlabels, pycompat.bytestr('K!kIi'), showfiles) - fm = ui.formatter('kwfiles', opts) - fmt = '%.0s%s\n' - if opts.get('all') or ui.verbose: - fmt = '%s %s\n' + kwlabels = b'enabled deleted enabledunknown ignored ignoredunknown'.split() + kwstates = zip(kwlabels, pycompat.bytestr(b'K!kIi'), showfiles) + fm = ui.formatter(b'kwfiles', opts) + fmt = b'%.0s%s\n' + if opts.get(b'all') or ui.verbose: + fmt = b'%s %s\n' for kwstate, char, filenames in kwstates: - label = 'kwfiles.' + kwstate + label = b'kwfiles.' + kwstate for f in filenames: fm.startitem() fm.data(kwstatus=char, path=f) @@ -627,9 +627,9 @@ @command( - 'kwshrink', + b'kwshrink', cmdutil.walkopts, - _('hg kwshrink [OPTION]... [FILE]...'), + _(b'hg kwshrink [OPTION]... [FILE]...'), inferrepo=True, ) def shrink(ui, repo, *pats, **opts): @@ -715,7 +715,7 @@ return orig(ui, repo, pats, opts, rename) with repo.wlock(): orig(ui, repo, pats, opts, rename) - if opts.get('dry_run'): + if opts.get(b'dry_run'): return wctx = repo[None] cwd = repo.getcwd() @@ -725,7 +725,7 @@ expansion or a symlink which points to a file configured for expansion. ''' source = repo.dirstate.copied(dest) - if 'l' in wctx.flags(source): + if b'l' in wctx.flags(source): source = pathutil.canonpath( repo.root, cwd, os.path.realpath(source) ) @@ -734,7 +734,7 @@ candidates = [ f for f in repo.dirstate.copies() - if 'l' not in wctx.flags(f) and haskwsource(f) + if b'l' not in wctx.flags(f) and haskwsource(f) ] kwt.overwrite(wctx, candidates, False, False) @@ -748,10 +748,10 @@ # record returns 0 even when nothing has changed # therefore compare nodes before and after kwt.postcommit = True - ctx = repo['.'] + ctx = repo[b'.'] wstatus = ctx.status() ret = orig(ui, repo, commitfunc, *pats, **opts) - recctx = repo['.'] + recctx = repo[b'.'] if ctx != recctx: modified, added = _preselect(wstatus, recctx.files()) kwt.restrict = False @@ -774,7 +774,7 @@ and ( self._repo._encodefilterpats or kwt.match(fctx.path()) - and 'l' not in fctx.flags() + and b'l' not in fctx.flags() or self.size() - 4 == fctx.size() ) or self.size() == fctx.size() @@ -794,17 +794,17 @@ def kwdispatch_parse(orig, ui, args): '''Monkeypatch dispatch._parse to obtain running hg command.''' cmd, func, args, options, cmdoptions = orig(ui, args) - kwtools['hgcmd'] = cmd + kwtools[b'hgcmd'] = cmd return cmd, func, args, options, cmdoptions - extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) + extensions.wrapfunction(dispatch, b'_parse', kwdispatch_parse) - extensions.wrapfunction(context.filectx, 'cmp', kwfilectx_cmp) - extensions.wrapfunction(patch.patchfile, '__init__', kwpatchfile_init) - extensions.wrapfunction(patch, 'diff', kwdiff) - extensions.wrapfunction(cmdutil, 'amend', kw_amend) - extensions.wrapfunction(cmdutil, 'copy', kw_copy) - extensions.wrapfunction(cmdutil, 'dorecord', kw_dorecord) + extensions.wrapfunction(context.filectx, b'cmp', kwfilectx_cmp) + extensions.wrapfunction(patch.patchfile, b'__init__', kwpatchfile_init) + extensions.wrapfunction(patch, b'diff', kwdiff) + extensions.wrapfunction(cmdutil, b'amend', kw_amend) + extensions.wrapfunction(cmdutil, b'copy', kw_copy) + extensions.wrapfunction(cmdutil, b'dorecord', kw_dorecord) for c in nokwwebcommands.split(): extensions.wrapfunction(webcommands, c, kwweb_skip) @@ -815,17 +815,17 @@ try: if ( not repo.local() - or kwtools['hgcmd'] in nokwcommands.split() - or '.hg' in util.splitpath(repo.root) - or repo._url.startswith('bundle:') + or kwtools[b'hgcmd'] in nokwcommands.split() + or b'.hg' in util.splitpath(repo.root) + or repo._url.startswith(b'bundle:') ): return except AttributeError: pass - inc, exc = [], ['.hg*'] - for pat, opt in ui.configitems('keyword'): - if opt != 'ignore': + inc, exc = [], [b'.hg*'] + for pat, opt in ui.configitems(b'keyword'): + if opt != b'ignore': inc.append(pat) else: exc.append(pat) @@ -836,7 +836,7 @@ class kwrepo(repo.__class__): def file(self, f): - if f[0] == '/': + if f[0] == b'/': f = f[1:] return kwfilelog(self.svfs, kwt, f) @@ -870,10 +870,10 @@ origrestrict = kwt.restrict try: if not dryrun: - changed = self['.'].files() + changed = self[b'.'].files() ret = super(kwrepo, self).rollback(dryrun, force) if not dryrun: - ctx = self['.'] + ctx = self[b'.'] modified, added = _preselect(ctx.status(), changed) kwt.restrict = False kwt.overwrite(ctx, modified, True, True)