mercurial/ui.py
changeset 41142 8cf92ca92bfe
parent 41076 8ecb17b7f432
child 41210 929999d963b8
equal deleted inserted replaced
41141:89d103fc9c19 41142:8cf92ca92bfe
  1689         Multiple nested topics may be active at a time.
  1689         Multiple nested topics may be active at a time.
  1690 
  1690 
  1691         All topics should be marked closed by setting pos to None at
  1691         All topics should be marked closed by setting pos to None at
  1692         termination.
  1692         termination.
  1693         '''
  1693         '''
  1694         if getattr(self._fmsgerr, 'structured', False):
  1694         progress = self.makeprogress(topic, unit, total)
  1695             # channel for machine-readable output with metadata, just send
  1695         if pos is not None:
  1696             # raw information
  1696             progress.update(pos, item=item)
  1697             # TODO: consider porting some useful information (e.g. estimated
       
  1698             # time) from progbar. we might want to support update delay to
       
  1699             # reduce the cost of transferring progress messages.
       
  1700             self._fmsgerr.write(None, type=b'progress', topic=topic, pos=pos,
       
  1701                                 item=item, unit=unit, total=total)
       
  1702         elif self._progbar is not None:
       
  1703             self._progbar.progress(topic, pos, item=item, unit=unit,
       
  1704                                    total=total)
       
  1705 
       
  1706             # Looking up progress.debug in tight loops is expensive. The value
       
  1707             # is cached on the progbar object and we can avoid the lookup in
       
  1708             # the common case where a progbar is active.
       
  1709             if pos is None or not self._progbar.debug:
       
  1710                 return
       
  1711 
       
  1712         # Keep this logic in sync with above.
       
  1713         if pos is None or not self.configbool('progress', 'debug'):
       
  1714             return
       
  1715 
       
  1716         if unit:
       
  1717             unit = ' ' + unit
       
  1718         if item:
       
  1719             item = ' ' + item
       
  1720 
       
  1721         if total:
       
  1722             pct = 100.0 * pos / total
       
  1723             self.debug('%s:%s %d/%d%s (%4.2f%%)\n'
       
  1724                      % (topic, item, pos, total, unit, pct))
       
  1725         else:
  1697         else:
  1726             self.debug('%s:%s %d%s\n' % (topic, item, pos, unit))
  1698             progress.complete()
  1727 
  1699 
  1728     def makeprogress(self, topic, unit="", total=None):
  1700     def makeprogress(self, topic, unit="", total=None):
  1729         '''exists only so low-level modules won't need to import scmutil'''
  1701         '''exists only so low-level modules won't need to import scmutil'''
  1730         return scmutil.progress(self, topic, unit, total)
  1702         return scmutil.progress(self, topic, unit, total)
  1731 
  1703