[Yum-devel] [UG][PATCH] text field
Ryan Tomayko
rtomayko at gmail.com
Tue Jan 11 20:39:15 UTC 2005
The progress bar stuff is Michael's code but this patch looks fine to
me. Michael/Seth, I can apply this to urlgrabber cvs with a thumbs up
from one of you.
- Ryan
On Jan 11, 2005, at 1:32 PM, Terje Rosten wrote:
> This patch let urlgrabber.urlgrab() pass a alternativ text to the
> progress bar, which is used in the front of the bar.
>
> Example:
>
> myug = URLGrabber(progress_obj=TextMeter(fo=sys.stdout))
> remote = "http://web/rpms/xorg-x11-sdk-6.8.1-12.FC3.21.i386.rpm"
> text = "[1/3]: "
> local= "test1.rpm"
> result = myug.urlgrab(remote, local, text=text +
> os.path.basename(remote))
>
> Gives:
>
> [1/3]: xorg-x11-sdk-6.8.1 100% |=========================| 7.7 MB
> 00:01
>
> I want to use this feature in a coming patch to Yum.
>
>
> - Terje
>
>
> diff -uNr urlgrabber.orig/urlgrabber/grabber.py
> urlgrabber/urlgrabber/grabber.py
> --- urlgrabber.orig/urlgrabber/grabber.py 2004-10-17
> 03:53:13.000000000 +0200
> +++ urlgrabber/urlgrabber/grabber.py 2005-01-11 16:33:26.585123753
> +0100
> @@ -48,11 +48,16 @@
> progress_obj = None
>
> a class instance that supports the following methods:
> - po.start(filename, url, basename, length)
> + po.start(filename, url, basename, length, text)
> # length will be None if unknown
> po.update(read) # read == bytes read so far
> po.end()
>
> + text = None
> +
> + specifies an alternativ text item in the beginning of the progress
> + bar line. If not given, the basename of the file is used.
> +
> throttle = 1.0
>
> a number - if it's an int, it's the bytes/second throttle limit.
> @@ -506,6 +511,7 @@
> self.opener = None
> self.cache_openers = True
> self.timeout = None
> + self.text = None
>
> class URLGrabber:
> """Provides easy opening of URLs with a variety of options.
> @@ -778,7 +784,8 @@
> except: length = None
> self.opts.progress_obj.start(str(self.filename), self.url,
> os.path.basename(path),
> - length)
> + length,
> + text=self.opts.text)
> self.opts.progress_obj.update(0)
> (self.fo, self.hdr) = (fo, hdr)
>
> diff -uNr urlgrabber.orig/urlgrabber/progress.py
> urlgrabber/urlgrabber/progress.py
> --- urlgrabber.orig/urlgrabber/progress.py 2004-09-07
> 23:19:54.000000000 +0200
> +++ urlgrabber/urlgrabber/progress.py 2005-01-11 16:33:26.595121920
> +0100
> @@ -31,6 +31,7 @@
> self.filename = None
> self.url = None
> self.basename = None
> + self.text = None
> self.size = None
> self.start_time = None
> self.last_amount_read = 0
> @@ -38,10 +39,11 @@
> self.re = RateEstimator()
>
> def start(self, filename=None, url=None, basename=None,
> - size=None, now=None):
> + size=None, now=None, text=None):
> self.filename = filename
> self.url = url
> self.basename = basename
> + self.text = text
>
> #size = None ######### TESTING
> self.size = size
> @@ -91,29 +93,39 @@
> fetime = format_time(etime)
> fread = format_number(amount_read)
> #self.size = None
> + if self.text is not None:
> + text = self.text
> + else:
> + text = self.basename
> if self.size is None:
> out = '\r%-60.60s %5sB %s ' % \
> - (self.basename, fread, fetime)
> + (text, fread, fetime)
> else:
> rtime = self.re.remaining_time()
> frtime = format_time(rtime)
> frac = self.re.fraction_read()
> bar = '='*int(25 * frac)
> +
> out = '\r%-25.25s %3i%% |%-25.25s| %5sB %8s ETA ' % \
> - (self.basename, frac*100, bar, fread, frtime)
> + (text, frac*100, bar, fread, frtime)
> +
> self.fo.write(out)
> self.fo.flush()
>
> def _do_end(self, amount_read, now=None):
> total_time = format_time(self.re.elapsed_time())
> total_size = format_number(amount_read)
> + if self.text is not None:
> + text = self.text
> + else:
> + text = self.basename
> if self.size is None:
> out = '\r%-60.60s %5sB %s ' % \
> - (self.basename, total_size, total_time)
> + (text, total_size, total_time)
> else:
> bar = '='*25
> out = '\r%-25.25s %3i%% |%-25.25s| %5sB %8s ' % \
> - (self.basename, 100, bar, total_size, total_time)
> + (text, 100, bar, total_size, total_time)
> self.fo.write(out + '\n')
> self.fo.flush()
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at linux.duke.edu
> https://lists.dulug.duke.edu/mailman/listinfo/yum-devel
>
More information about the Yum-devel
mailing list