[yum-commits] output.py yum/__init__.py yum/repos.py yum/yumRepo.py
zpavlas at osuosl.org
zpavlas at osuosl.org
Wed Aug 22 09:30:29 UTC 2012
output.py | 12 ++++++++++--
yum/__init__.py | 3 ++-
yum/repos.py | 4 ++--
yum/yumRepo.py | 7 +++++--
4 files changed, 19 insertions(+), 7 deletions(-)
New commits:
commit b8844bd2bf640e792f4e5887ccd1f9325d3da368
Author: ZdenÄk Pavlas <zpavlas at redhat.com>
Date: Mon Aug 20 16:25:49 2012 +0200
Use TextMultiFileMeter as multi_obj
Extend the progress callback API, so we can set multi_objs in urlgrabber.
Subclass the TextMultiFileMeter and use it as multi-file progress object.
diff --git a/output.py b/output.py
index d29eba8..caac21a 100755
--- a/output.py
+++ b/output.py
@@ -29,7 +29,7 @@ import re # For YumTerm
from weakref import proxy as weakref
-from urlgrabber.progress import TextMeter
+from urlgrabber.progress import TextMeter, TextMultiFileMeter
import urlgrabber.progress
from urlgrabber.grabber import URLGrabError
from yum.misc import prco_tuple_to_string
@@ -88,6 +88,11 @@ class YumTextMeter(TextMeter):
checkSignals()
TextMeter.update(self, amount_read, now)
+class YumTextMultiFileMeter(TextMultiFileMeter):
+ def update_meter(self, meter, now):
+ checkSignals()
+ TextMultiFileMeter.update_meter(self, meter, now)
+
class YumTerm:
"""A class to provide some terminal "UI" helpers based on curses."""
@@ -1697,9 +1702,11 @@ Transaction Summary
# One of these is a download
if self.conf.debuglevel < 2 or not sys.stdout.isatty():
progressbar = None
+ multi_progressbar = None
callback = None
else:
progressbar = YumTextMeter(fo=sys.stdout)
+ multi_progressbar = YumTextMultiFileMeter(fo=sys.stdout)
callback = CacheProgressCallback()
# setup our failure report for failover
@@ -1710,13 +1717,14 @@ Transaction Summary
interrupt_callback = self.interrupt_callback
if hasattr(self, 'prerepoconf'):
self.prerepoconf.progressbar = progressbar
+ self.prerepoconf.multi_progressbar = multi_progressbar
self.prerepoconf.callback = callback
self.prerepoconf.failure_callback = failure_callback
self.prerepoconf.interrupt_callback = interrupt_callback
else:
# Just in case some API user decides to do self.repos before
# calling us.
- self.repos.setProgressBar(progressbar)
+ self.repos.setProgressBar(progressbar, multi_progressbar)
self.repos.callback = callback
self.repos.setFailureCallback(failure_callback)
self.repos.setInterruptCallback(interrupt_callback)
diff --git a/yum/__init__.py b/yum/__init__.py
index 1108443..76473ec 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -684,7 +684,8 @@ class YumBase(depsolve.Depsolve):
prerepoconf = self.prerepoconf
del self.prerepoconf
- self.repos.setProgressBar(prerepoconf.progressbar)
+ self.repos.setProgressBar(prerepoconf.progressbar,
+ prerepoconf.multi_progressbar)
self.repos.callback = prerepoconf.callback
self.repos.setFailureCallback(prerepoconf.failure_callback)
self.repos.setInterruptCallback(prerepoconf.interrupt_callback)
diff --git a/yum/repos.py b/yum/repos.py
index 97fa71e..6d4c20e 100644
--- a/yum/repos.py
+++ b/yum/repos.py
@@ -271,11 +271,11 @@ class RepoStorage:
repo.basecachedir = cachedir
- def setProgressBar(self, obj):
+ def setProgressBar(self, obj, multi_obj=None):
"""sets the progress bar for downloading files from repos"""
for repo in self.repos.values():
- repo.setCallback(obj)
+ repo.setCallback(obj, multi_obj)
def setFailureCallback(self, obj):
"""sets the failure callback for all repos"""
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index 9ca7ae5..b7b4357 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -317,6 +317,7 @@ class YumRepository(Repository, config.RepoConf):
# callbacks
self.callback = None # for the grabber
+ self.multi_callback = None
self.failure_obj = None
self.mirror_failure_obj = None
self.interrupt_callback = None
@@ -432,7 +433,7 @@ class YumRepository(Repository, config.RepoConf):
'basecachedir', 'http_headers', 'metadata_cookie',
'metadata_cookie_fn', 'quick_enable_disable',
'repoMDFile', 'timestamp_check', 'urls', 'mirrorurls',
- 'yumvar', 'repofile')
+ 'yumvar', 'repofile', 'multi_callback')
for attr in dir(self):
if attr.startswith('_'):
continue
@@ -530,6 +531,7 @@ class YumRepository(Repository, config.RepoConf):
ugopts = self._default_grabopts()
self._grabfunc = URLGrabber(progress_obj=self.callback,
+ multi_progress_obj=self.multi_callback,
failure_callback=self.failure_obj,
interrupt_callback=self.interrupt_callback,
copy_local=self.copy_local,
@@ -1742,8 +1744,9 @@ Insufficient space in download directory %s
return fn
return self._retrieveMD('group', retrieve_can_fail=True)
- def setCallback(self, callback):
+ def setCallback(self, callback, multi_callback=None):
self.callback = callback
+ self.multi_callback = multi_callback
self._callbacks_changed = True
def setFailureObj(self, failure_obj):
More information about the Yum-commits
mailing list