From e54fe0dd0bc6327f3d6c005fd05973b09a65a9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Thu, 7 Jul 2005 12:11:25 +0000 Subject: [PATCH] =?UTF-8?q?fetcher'dan=20progress'i=20kald=C4=B1r.=20progr?= =?UTF-8?q?ess=20g=C3=B6stermek=20ui'nin=20i=C5=9Fi.=20Burada=20bir-iki=20?= =?UTF-8?q?d=C3=BCzenleme=20daha=20gerekebilir...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pisi/fetcher.py | 24 ++---------------------- pisi/index.py | 4 ++-- pisi/package.py | 5 +++-- pisi/packagedb.py | 3 ++- pisi/sourcearchive.py | 4 ++-- pisi/ui.py | 32 ++++++++++++++++---------------- 6 files changed, 27 insertions(+), 45 deletions(-) diff --git a/pisi/fetcher.py b/pisi/fetcher.py index c8be948a..d253bb02 100644 --- a/pisi/fetcher.py +++ b/pisi/fetcher.py @@ -19,11 +19,6 @@ class FetchError (Exception): pass # helper functions -def displayProgress(pd): - out = '\r%-30.30s %3d%% %12.2f %s' % \ - (pd['filename'], pd['percent'], pd['rate'], pd['symbol']) - ui.info(out) - def fetchUrl(url, dest, percentHook=None): fetch = Fetcher(url, dest) fetch.percentHook = percentHook @@ -66,7 +61,7 @@ class Fetcher: symbols = [' B/s', 'KB/s', 'MB/s', 'GB/s'] from time import time tt, oldsize = int(time()), 0 - p = Progress(totalsize) + p = ui.Progress(totalsize) bs, size = 1024, 0 symbol, depth = "B/s", 0 st = time() @@ -87,7 +82,7 @@ class Fetcher: oldsize, tt = size, time() if p.update(size): self.percent = p.percent - if self.percentHook != None: + if self.percentHook: retval = {'filename': self.url.filename(), 'percent' : self.percent, 'rate': self.rate, @@ -141,18 +136,3 @@ class Fetcher: def err (self, error): raise FetchError(error) -class Progress: - def __init__(self, totalsize): - self.totalsize = totalsize - self.percent = 0 - - def update(self, size): - if not self.totalsize: - return 100 - - percent = (size * 100) / self.totalsize - if percent and self.percent is not percent: - self.percent = percent - return percent - else: - return 0 diff --git a/pisi/index.py b/pisi/index.py index c97bd7dd..383ee618 100644 --- a/pisi/index.py +++ b/pisi/index.py @@ -25,9 +25,9 @@ class Index(XmlFile): url = PUrl(filename) if url.isRemoteFile(): from os import getcwd - from fetcher import fetchUrl, displayProgress + from fetcher import fetchUrl # TODO: index dosyasını indirmek için bir yer bulmak lazım. - fetchUrl(url, getcwd(), displayProgress) + fetchUrl(url, getcwd(), ui.displayProgress) self.filename = url.filename() self.readxml(self.filename) diff --git a/pisi/package.py b/pisi/package.py index d5a07436..e8f70836 100644 --- a/pisi/package.py +++ b/pisi/package.py @@ -16,10 +16,11 @@ class Package: if url.isRemoteFile(): from os import getcwd - from fetcher import fetchUrl, displayProgress + from fetcher import fetchUrl + from ui import ui # TODO: belki Constants.packages_dir() gibi bir yere # indirmek daha iyi olur. - fetchUrl(url, getcwd(), displayProgress) + fetchUrl(url, getcwd(), ui.displayProgress) self.filename = url.filename() self.impl = archive.ArchiveZip(self.filename, 'zip', mode) diff --git a/pisi/packagedb.py b/pisi/packagedb.py index b5ce63e7..970de41e 100644 --- a/pisi/packagedb.py +++ b/pisi/packagedb.py @@ -16,7 +16,8 @@ from config import config from bsddb import db class PackageDB(object): - + """PackageDB class provides an interface to the package database with + a delegated dbshelve object""" def __init__(self): util.check_dir(config.db_dir()) filename = os.path.join(config.db_dir(), 'package.bdb') diff --git a/pisi/sourcearchive.py b/pisi/sourcearchive.py index 9e159ea7..f482efd3 100644 --- a/pisi/sourcearchive.py +++ b/pisi/sourcearchive.py @@ -12,7 +12,7 @@ from archive import Archive from purl import PUrl from ui import ui from config import config -from fetcher import fetchUrl, displayProgress +from fetcher import fetchUrl import util @@ -31,7 +31,7 @@ class SourceArchive: def fetch(self, interactive=True): if not self.isCached(interactive): if interactive: - self.showProgress = displayProgress + self.showProgress = ui.displayProgress fetchUrl(self.url, config.archives_dir(), self.showProgress) def isCached(self, interactive=True): diff --git a/pisi/ui.py b/pisi/ui.py index fe8c8d67..6277b0cb 100644 --- a/pisi/ui.py +++ b/pisi/ui.py @@ -14,13 +14,6 @@ class CLI: def __init__(self, debuggy = True): self.showDebug = debuggy - class Progress: - def __init__(self, name, symbol): - self.name = name - self.percent = 0 - self.rate = 0 - self.symbol = symbol - def info(self, msg): sys.stdout.write(colorize(msg, 'blue')) sys.stdout.flush() @@ -34,18 +27,25 @@ class CLI: sys.stdout.write(colorize(msg, 'red')) sys.stdout.flush() - def startProgress(self, name, symbol): - ## support one progress for now - self.activeProgress = Progress(name, symbol) + class Progress: + def __init__(self, totalsize): + self.totalsize = totalsize + self.percent = 0 + + def update(self, size): + if not self.totalsize: + return 100 - def updateProgress(self, percent, rate): - self.activeProgress.percent = percent - self.activeProgress.rate = rate - self.displayProgress(pd) + percent = (size * 100) / self.totalsize + if percent and self.percent is not percent: + self.percent = percent + return percent + else: + return 0 - def displayProgress(pd): + def displayProgress(self, pd): out = '\r%-30.30s %3d%% %12.2f %s' % \ - (self.name, self.percent, self.rate, self.symbol) + (pd['filename'], pd['percent'], pd['rate'], pd['symbol']) self.info(out) # default UI is CLI