Mercurial > public > mercurial-scm > hg
comparison mercurial/bundle2.py @ 21129:07bcbf326c8d
bundle2: use an official iterparts method to unbundle parts
Explicit is better than implicit.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 16 Apr 2014 18:41:48 -0400 |
parents | 5ecfe76d0d96 |
children | 1ff06386217f |
comparison
equal
deleted
inserted
replaced
21128:f4014f646f71 | 21129:07bcbf326c8d |
---|---|
284 op.reply = bundle20(op.ui) | 284 op.reply = bundle20(op.ui) |
285 # todo: | 285 # todo: |
286 # - replace this is a init function soon. | 286 # - replace this is a init function soon. |
287 # - exception catching | 287 # - exception catching |
288 unbundler.params | 288 unbundler.params |
289 iterparts = iter(unbundler) | 289 iterparts = unbundler.iterparts() |
290 part = None | 290 part = None |
291 try: | 291 try: |
292 for part in iterparts: | 292 for part in iterparts: |
293 parttype = part.type | 293 parttype = part.type |
294 # part key are matched lower case | 294 # part key are matched lower case |
395 | 395 |
396 | 396 |
397 class unbundle20(unpackermixin): | 397 class unbundle20(unpackermixin): |
398 """interpret a bundle2 stream | 398 """interpret a bundle2 stream |
399 | 399 |
400 (this will eventually yield parts)""" | 400 This class is fed with a binary stream and yields parts through its |
401 `iterparts` methods.""" | |
401 | 402 |
402 def __init__(self, ui, fp, header=None): | 403 def __init__(self, ui, fp, header=None): |
403 """If header is specified, we do not read it out of the stream.""" | 404 """If header is specified, we do not read it out of the stream.""" |
404 self.ui = ui | 405 self.ui = ui |
405 super(unbundle20, self).__init__(fp) | 406 super(unbundle20, self).__init__(fp) |
448 self.ui.debug("ignoring unknown parameter %r\n" % name) | 449 self.ui.debug("ignoring unknown parameter %r\n" % name) |
449 else: | 450 else: |
450 raise KeyError(name) | 451 raise KeyError(name) |
451 | 452 |
452 | 453 |
453 def __iter__(self): | 454 def iterparts(self): |
454 """yield all parts contained in the stream""" | 455 """yield all parts contained in the stream""" |
455 # make sure param have been loaded | 456 # make sure param have been loaded |
456 self.params | 457 self.params |
457 self.ui.debug('start extraction of bundle2 parts\n') | 458 self.ui.debug('start extraction of bundle2 parts\n') |
458 headerblock = self._readpartheader() | 459 headerblock = self._readpartheader() |