[yum-commits] urlgrabber/progress.py

zpavlas at osuosl.org zpavlas at osuosl.org
Tue Aug 7 15:00:18 UTC 2012


 urlgrabber/progress.py |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

New commits:
commit b3353b21191dd7dd46658990da995c3dce18546b
Author: Zdeněk Pavlas <zpavlas at redhat.com>
Date:   Tue Aug 7 14:26:18 2012 +0200

    Improve multi-file progress meter
    
    Updates arrive evenly to all active files, but we check their timestamps
    against shared last_update_time.  When we get past that check, the 'meter'
    argument to MultiFileMeter._do_update_meter() is meaningless.
    
    This patch cycles 'meter' through all active child meter objects.
    This seems to give much better output (parallel downloading is visible).

diff --git a/urlgrabber/progress.py b/urlgrabber/progress.py
index 9888bef..3466e1a 100644
--- a/urlgrabber/progress.py
+++ b/urlgrabber/progress.py
@@ -493,6 +493,7 @@ class TextMultiFileMeter(MultiFileMeter):
     def __init__(self, fo=sys.stderr, threaded=True):
         self.fo = fo
         MultiFileMeter.__init__(self, threaded)
+        self.index = 0
 
     # files: ###/### ###%  data: ######/###### ###%  time: ##:##:##/##:##:##
 # New output, like TextMeter output...
@@ -527,9 +528,13 @@ class TextMultiFileMeter(MultiFileMeter):
 
             frac = self.re.fraction_read() or 0
             ave_dl = format_number(self.re.average_rate())
+
+            # cycle through active meters
+            self.index = (self.index + 1) % len(self.meters)
+            meter = self.meters[self.index]
             text = meter.text or meter.basename
             if tf > 1:
-                text = '(%u/%u): %s' % (df+1, tf, text)
+                text = '(%u/%u): %s' % (df+1+self.index, tf, text)
 
             # Include text + ui_rate in minimal
             tl = TerminalLine(8, 8+1+8)


More information about the Yum-commits mailing list