mercurial/bundle2.py
changeset 21617 0cfda08afd24
parent 21612 f221eb0531d9
child 21618 7568f5c1c801
equal deleted inserted replaced
21616:0a8e7f81e8ae 21617:0cfda08afd24
   170     The number parameters is variable so we need to build that format
   170     The number parameters is variable so we need to build that format
   171     dynamically.
   171     dynamically.
   172     """
   172     """
   173     return '>'+('BB'*nbparams)
   173     return '>'+('BB'*nbparams)
   174 
   174 
   175 class UnknownPartError(KeyError):
   175 class BundleValueError(ValueError):
   176     """error raised when no handler is found for a Mandatory part"""
   176     """error raised when bundle2 cannot be processed
       
   177 
       
   178     Current main usecase is unsupported part types."""
   177     pass
   179     pass
   178 
   180 
   179 class ReadOnlyPartError(RuntimeError):
   181 class ReadOnlyPartError(RuntimeError):
   180     """error raised when code tries to alter a part being generated"""
   182     """error raised when code tries to alter a part being generated"""
   181     pass
   183     pass
   305                 op.ui.debug('found a handler for part %r\n' % parttype)
   307                 op.ui.debug('found a handler for part %r\n' % parttype)
   306             except KeyError:
   308             except KeyError:
   307                 if key != parttype: # mandatory parts
   309                 if key != parttype: # mandatory parts
   308                     # todo:
   310                     # todo:
   309                     # - use a more precise exception
   311                     # - use a more precise exception
   310                     raise UnknownPartError(key)
   312                     raise BundleValueError(key)
   311                 op.ui.debug('ignoring unknown advisory part %r\n' % key)
   313                 op.ui.debug('ignoring unknown advisory part %r\n' % key)
   312                 # consuming the part
   314                 # consuming the part
   313                 part.read()
   315                 part.read()
   314                 continue
   316                 continue
   315 
   317 
   837     raise util.Abort(inpart.params['message'], hint=inpart.params.get('hint'))
   839     raise util.Abort(inpart.params['message'], hint=inpart.params.get('hint'))
   838 
   840 
   839 @parthandler('b2x:error:unknownpart')
   841 @parthandler('b2x:error:unknownpart')
   840 def handlereplycaps(op, inpart):
   842 def handlereplycaps(op, inpart):
   841     """Used to transmit unknown part error over the wire"""
   843     """Used to transmit unknown part error over the wire"""
   842     raise UnknownPartError(inpart.params['parttype'])
   844     raise BundleValueError(inpart.params['parttype'])
   843 
   845 
   844 @parthandler('b2x:error:pushraced')
   846 @parthandler('b2x:error:pushraced')
   845 def handlereplycaps(op, inpart):
   847 def handlereplycaps(op, inpart):
   846     """Used to transmit push race error over the wire"""
   848     """Used to transmit push race error over the wire"""
   847     raise error.ResponseError(_('push failed:'), inpart.params['message'])
   849     raise error.ResponseError(_('push failed:'), inpart.params['message'])