/usr/share/doc/python-apt/examples/progress.py is in python-apt-doc 0.9.3.12.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #!/usr/bin/python
import sys
import time
import apt_pkg
import apt
import apt.progress.base
class TextProgress(apt.progress.base.OpProgress):
def __init__(self):
self.last = 0.0
def update(self, percent):
if (self.last + 1.0) <= percent:
sys.stdout.write("\rProgress: %i.2 " % (percent))
self.last = percent
if percent >= 100:
self.last = 0.0
def done(self):
self.last = 0.0
print "\rDone "
class TextFetchProgress(apt.progress.base.AcquireProgress):
def __init__(self):
pass
def start(self):
pass
def stop(self):
pass
def fail(self, item):
print 'fail', item
def fetch(self, item):
print 'fetch', item
def ims_hit(self, item):
print 'ims_hit', item
def pulse(self, owner):
print "pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (
apt_pkg.size_to_str(self.current_cps),
apt_pkg.size_to_str(self.current_bytes),
apt_pkg.size_to_str(self.total_bytes),
self.current_items,
self.total_items)
return True
def media_change(self, medium, drive):
print "Please insert medium %s in drive %s" % (medium, drive)
sys.stdin.readline()
#return False
class TextInstallProgress(apt.progress.base.InstallProgress):
def __init__(self):
apt.progress.base.InstallProgress.__init__(self)
pass
def start_update(self):
print "start_update"
def finish_update(self):
print "finish_update"
def status_change(self, pkg, percent, status):
print "[%s] %s: %s" % (percent, pkg, status)
def update_interface(self):
apt.progress.base.InstallProgress.update_interface(self)
# usefull to e.g. redraw a GUI
time.sleep(0.1)
class TextCdromProgress(apt.progress.base.CdromProgress):
def __init__(self):
pass
# update is called regularly so that the gui can be redrawn
def update(self, text, step):
# check if we actually have some text to display
if text != "":
print "Update: %s %s" % (text.strip(), step)
def ask_cdrom_name(self):
print "Please enter cd-name: ",
cd_name = sys.stdin.readline()
return (True, cd_name.strip())
def change_cdrom(self):
print "Please insert cdrom and press <ENTER>"
answer = sys.stdin.readline()
print answer
return True
if __name__ == "__main__":
c = apt.Cache()
pkg = c["3dchess"]
if pkg.is_installed:
pkg.mark_delete()
else:
pkg.mark_install()
res = c.commit(TextFetchProgress(), TextInstallProgress())
print res
|