# HG changeset patch # User Pierre-Yves David # Date 2014-10-15 10:22:47 # Node ID 73f394f4affcc141b2cce3cfcea7a11c0965e05b # Parent 90f86ad3d4ff08e0d7e381c1d8869363c5ac7685 bundle2: add an UnsupportedPartError We need the BundleValueError for format errors not related to part support. So we add a specific class for part-support errors. diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py --- a/mercurial/bundle2.py +++ b/mercurial/bundle2.py @@ -321,15 +321,15 @@ def _processpart(op, part): try: handler = parthandlermapping.get(key) if handler is None: - raise error.BundleValueError(parttype=key) + raise error.UnsupportedPartError(parttype=key) op.ui.debug('found a handler for part %r\n' % parttype) unknownparams = part.mandatorykeys - handler.params if unknownparams: unknownparams = list(unknownparams) unknownparams.sort() - raise error.BundleValueError(parttype=key, + raise error.UnsupportedPartError(parttype=key, params=unknownparams) - except error.BundleValueError, exc: + except error.UnsupportedPartError, exc: if key != parttype: # mandatory parts raise op.ui.debug('ignoring unsupported advisory part %s\n' % exc) @@ -538,7 +538,7 @@ class unbundle20(unpackermixin): if name[0].islower(): self.ui.debug("ignoring unknown parameter %r\n" % name) else: - raise error.BundleValueError(params=(name,)) + raise error.UnsupportedPartError(params=(name,)) def iterparts(self): @@ -894,7 +894,7 @@ def handlereplycaps(op, inpart): if params is not None: kwargs['params'] = params.split('\0') - raise error.BundleValueError(**kwargs) + raise error.UnsupportedPartError(**kwargs) @parthandler('b2x:error:pushraced', ('message',)) def handlereplycaps(op, inpart): diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -102,6 +102,7 @@ class PushRaced(RuntimeError): class BundleValueError(ValueError): """error raised when bundle2 cannot be processed""" +class UnsupportedPartError(BundleValueError): def __init__(self, parttype=None, params=()): self.parttype = parttype self.params = params