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']) |