##// END OF EJS Templates
pycompat: export queue module instead of symbols in module (API)...
pycompat: export queue module instead of symbols in module (API) Previously, pycompat and util re-exported individual symbols from the queue module. This had the side-effect of forcing the loading of the queue module whenever pycompat/util was imported. These symbols aren't used very often. So importing the module to get a handle on the symbols is wasteful. This commit changes pycompat so it no longer exports the individual symbols in the queue module. Instead, we make the imported module a "public" symbol. We drop the individual symbol aliases from the util module. All consumers are updated to use pycompat.queue.* instead. This change makes 300 invocations of `hg log -r. -T '{rev}\n'` a little faster: before: 18.44s after: 17.87s Differential Revision: https://phab.mercurial-scm.org/D3441

File last commit:

r36531:7b74afec default
r37863:8fb99853 @25 default
Show More
narrowtemplates.py
48 lines | 1.4 KiB | text/x-python | PythonLexer
# narrowtemplates.py - added template keywords for narrow clones
#
# Copyright 2017 Google, 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
from mercurial import (
registrar,
revlog,
)
keywords = {}
templatekeyword = registrar.templatekeyword(keywords)
revsetpredicate = registrar.revsetpredicate()
def _isellipsis(repo, rev):
if repo.changelog.flags(rev) & revlog.REVIDX_ELLIPSIS:
return True
return False
@templatekeyword('ellipsis', requires={'repo', 'ctx'})
def ellipsis(context, mapping):
"""String. 'ellipsis' if the change is an ellipsis node, else ''."""
repo = context.resource(mapping, 'repo')
ctx = context.resource(mapping, 'ctx')
if _isellipsis(repo, ctx.rev()):
return 'ellipsis'
return ''
@templatekeyword('outsidenarrow', requires={'repo', 'ctx'})
def outsidenarrow(context, mapping):
"""String. 'outsidenarrow' if the change affects no tracked files,
else ''."""
repo = context.resource(mapping, 'repo')
ctx = context.resource(mapping, 'ctx')
m = repo.narrowmatch()
if not m.always():
if not any(m(f) for f in ctx.files()):
return 'outsidenarrow'
return ''
@revsetpredicate('ellipsis')
def ellipsisrevset(repo, subset, x):
"""Changesets that are ellipsis nodes."""
return subset.filter(lambda r: _isellipsis(repo, r))