]> git.ipfire.org Git - pakfire.git/commitdiff
http: Use C progressbar implementation
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 21 Apr 2021 11:13:52 +0000 (11:13 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 21 Apr 2021 11:13:52 +0000 (11:13 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/http.py

index 89207eea9b3f9f2562ff38d86658cc055ca2ff29..d7e495d5222f09e397a23029a5c7ebc33e5976d7 100644 (file)
@@ -32,9 +32,8 @@ import types
 import urllib.parse
 import urllib.request
 
-from .ui import progressbar
-
 from .i18n import _
+from . import _pakfire
 from . import errors
 
 from .__version__ import PAKFIRE_VERSION
@@ -327,7 +326,7 @@ class Client(object):
                                                                # Try setting progress bar to correct maximum value
                                                                # XXX this might need a function in ProgressBar
                                                                l = self._get_content_length(res)
-                                                               p.value_max = l
+                                                               p.set_max(l)
 
                                                                # Compute a checksum of each downloaded file
                                                                h = hashlib.new(checksum_algo or "sha512")
@@ -404,7 +403,7 @@ class Client(object):
                filesize = os.path.getsize(filename)
 
                with self._make_progressbar(message) as p:
-                       p.value_max = filesize
+                       p.set_max(filesize)
 
                        with open(filename, "rb") as f:
                                # This streams the data in small chunks and
@@ -449,41 +448,20 @@ class Client(object):
 
                return "Basic %s" % authstring.decode("ascii")
 
-       def _make_progressbar(self, message=None, **kwargs):
-               p = progressbar.ProgressBar(**kwargs)
+       def _make_progressbar(self, message=None):
+               p = progressbar.ProgressBar()
 
                # Show message (e.g. filename)
                if message:
-                       p.add(message)
-
-               w = progressbar.WidgetError()
-               p.add(w)
-
-               # Show percentage
-               w = progressbar.WidgetPercentage(clear_when_finished=True)
-               p.add(w)
-
-               # Add a bar
-               w = progressbar.WidgetBar()
-               p.add(w)
-
-               # Show transfer speed
-               # XXX just shows the average speed which is probably
-               # not what we want here. Might want an average over the
-               # last x (maybe ten?) seconds
-               w = progressbar.WidgetFileTransferSpeed()
-               p.add(w)
-
-               # Spacer
-               p.add("|")
-
-               # Show downloaded bytes
-               w = progressbar.WidgetBytesReceived()
-               p.add(w)
-
-               # ETA
-               w = progressbar.WidgetETA()
-               p.add(w)
+                       p.add_string(message)
+
+               # Add widgets
+               p.add_percentage()
+               p.add_bar()
+               p.add_transfer_speed()
+               p.add_string("|")
+               p.add_bytes_received()
+               p.add_eta()
 
                return p