[PATCH 5 of 5 V3] revset: replace predicate by revsetpredicate of registrar
Augie Fackler
raf at durin42.com
Tue Mar 8 13:56:10 EST 2016
On Tue, Mar 08, 2016 at 11:08:27PM +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1457445893 -32400
> # Tue Mar 08 23:04:53 2016 +0900
> # Node ID e66468a1adffedd602a098e48a527d387a05de3a
> # Parent 757d7e1c69a80d27f0f8ab0ad7609a864cfe3120
> revset: replace predicate by revsetpredicate of registrar
These are queued, thanks.
I believe this series will break any third-party extensions that
register revsets, is that right?
>
> To make all built-in predicates be known to hggettext, loading
> built-in predicates by loadpredicate() should be placed before fixing
> i18nfunctions but after all of predicate decorating.
>
> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -482,36 +482,7 @@ symbols = {}
> # functions that just return a lot of changesets (like all) don't count here
> safesymbols = set()
>
> -class predicate(registrar.funcregistrar):
> - """Decorator to register revset predicate
> -
> - Usage::
> -
> - @predicate('mypredicate(arg1, arg2[, arg3])')
> - def mypredicatefunc(repo, subset, x):
> - '''Explanation of this revset predicate ....
> - '''
> - pass
> -
> - The first string argument of the constructor is used also in
> - online help.
> -
> - Use 'extpredicate' instead of this to register revset predicate in
> - extensions.
> - """
> - table = symbols
> - formatdoc = "``%s``\n %s"
> - getname = registrar.funcregistrar.parsefuncdecl
> -
> - def __init__(self, decl, safe=False):
> - """'safe' indicates whether a predicate is safe for DoS attack
> - """
> - super(predicate, self).__init__(decl)
> - self.safe = safe
> -
> - def extraaction(self, name, func):
> - if self.safe:
> - safesymbols.add(name)
> +predicate = registrar.revsetpredicate()
>
> class extpredicate(registrar.delayregistrar):
> """Decorator to register revset predicate in extensions
> @@ -3636,5 +3607,8 @@ def loadpredicate(ui, extname, registrar
> if func._safe:
> safesymbols.add(name)
>
> +# load built-in predicates explicitly to setup safesymbols
> +loadpredicate(None, None, predicate)
> +
> # tell hggettext to extract docstrings from these functions:
> i18nfunctions = symbols.values()
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list