Mercurial > hg
changeset 21623:5b26d82e4e2a
bundle2: make it possible to declare params handled by a part handler
If we are to enforce the mandatory aspect of parameter, we need a way to
discover what a handler supports. The best option we end up with is this a simple
declaration of known parameters at registration time.
We simply plug the list of parameters on the function object because Python lets
us do that and there is no benefit for a more complicated way.
One of the handlers is updated for example and testing.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 27 May 2014 11:49:48 -0700 |
parents | 457492741007 |
children | d61066d787c8 |
files | mercurial/bundle2.py |
diffstat | 1 files changed, 3 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bundle2.py Wed May 28 15:57:23 2014 -0700 +++ b/mercurial/bundle2.py Tue May 27 11:49:48 2014 -0700 @@ -174,7 +174,7 @@ parthandlermapping = {} -def parthandler(parttype): +def parthandler(parttype, params=()): """decorator that register a function as a bundle2 part handler eg:: @@ -188,6 +188,7 @@ lparttype = parttype.lower() # enforce lower case matching. assert lparttype not in parthandlermapping parthandlermapping[lparttype] = func + func.params = frozenset(params) return func return _decorator @@ -839,7 +840,7 @@ raise error.BundleValueError(**kwargs) -@parthandler('b2x:error:pushraced') +@parthandler('b2x:error:pushraced', ('message',)) def handlereplycaps(op, inpart): """Used to transmit push race error over the wire""" raise error.ResponseError(_('push failed:'), inpart.params['message'])