Mercurial > public > mercurial-scm > hg
comparison mercurial/bundle2.py @ 23010:73f394f4affc
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.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 15 Oct 2014 03:22:47 -0700 |
parents | 90f86ad3d4ff |
children | 006a81d07e57 |
comparison
equal
deleted
inserted
replaced
23009:90f86ad3d4ff | 23010:73f394f4affc |
---|---|
319 # part key are matched lower case | 319 # part key are matched lower case |
320 key = parttype.lower() | 320 key = parttype.lower() |
321 try: | 321 try: |
322 handler = parthandlermapping.get(key) | 322 handler = parthandlermapping.get(key) |
323 if handler is None: | 323 if handler is None: |
324 raise error.BundleValueError(parttype=key) | 324 raise error.UnsupportedPartError(parttype=key) |
325 op.ui.debug('found a handler for part %r\n' % parttype) | 325 op.ui.debug('found a handler for part %r\n' % parttype) |
326 unknownparams = part.mandatorykeys - handler.params | 326 unknownparams = part.mandatorykeys - handler.params |
327 if unknownparams: | 327 if unknownparams: |
328 unknownparams = list(unknownparams) | 328 unknownparams = list(unknownparams) |
329 unknownparams.sort() | 329 unknownparams.sort() |
330 raise error.BundleValueError(parttype=key, | 330 raise error.UnsupportedPartError(parttype=key, |
331 params=unknownparams) | 331 params=unknownparams) |
332 except error.BundleValueError, exc: | 332 except error.UnsupportedPartError, exc: |
333 if key != parttype: # mandatory parts | 333 if key != parttype: # mandatory parts |
334 raise | 334 raise |
335 op.ui.debug('ignoring unsupported advisory part %s\n' % exc) | 335 op.ui.debug('ignoring unsupported advisory part %s\n' % exc) |
336 return # skip to part processing | 336 return # skip to part processing |
337 | 337 |
536 # Some logic will be later added here to try to process the option for | 536 # Some logic will be later added here to try to process the option for |
537 # a dict of known parameter. | 537 # a dict of known parameter. |
538 if name[0].islower(): | 538 if name[0].islower(): |
539 self.ui.debug("ignoring unknown parameter %r\n" % name) | 539 self.ui.debug("ignoring unknown parameter %r\n" % name) |
540 else: | 540 else: |
541 raise error.BundleValueError(params=(name,)) | 541 raise error.UnsupportedPartError(params=(name,)) |
542 | 542 |
543 | 543 |
544 def iterparts(self): | 544 def iterparts(self): |
545 """yield all parts contained in the stream""" | 545 """yield all parts contained in the stream""" |
546 # make sure param have been loaded | 546 # make sure param have been loaded |
892 kwargs['parttype'] = parttype | 892 kwargs['parttype'] = parttype |
893 params = inpart.params.get('params') | 893 params = inpart.params.get('params') |
894 if params is not None: | 894 if params is not None: |
895 kwargs['params'] = params.split('\0') | 895 kwargs['params'] = params.split('\0') |
896 | 896 |
897 raise error.BundleValueError(**kwargs) | 897 raise error.UnsupportedPartError(**kwargs) |
898 | 898 |
899 @parthandler('b2x:error:pushraced', ('message',)) | 899 @parthandler('b2x:error:pushraced', ('message',)) |
900 def handlereplycaps(op, inpart): | 900 def handlereplycaps(op, inpart): |
901 """Used to transmit push race error over the wire""" | 901 """Used to transmit push race error over the wire""" |
902 raise error.ResponseError(_('push failed:'), inpart.params['message']) | 902 raise error.ResponseError(_('push failed:'), inpart.params['message']) |