/usr/share/doc/python-apt/examples/progress.py is in python-apt-doc 0.8.3ubuntu7.
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 119 120 121 122 123 | #!/usr/bin/python
import sys
import time
import apt
class TextProgress(apt.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.FetchProgress):
def __init__(self):
pass
def start(self):
pass
def stop(self):
pass
def updateStatus(self, uri, descr, shortDescr, status):
print "UpdateStatus: '%s' '%s' '%s' '%i' " % (
uri, descr, shortDescr, status)
def update_status_full(self, uri, descr, shortDescr, status, fileSize,
partialSize):
print "update_status_full: '%s' '%s' '%s' '%i' '%d/%d'" % (
uri, descr, shortDescr, status, partialSize, fileSize)
def pulse(self):
print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (
apt.SizeToStr(self.currentCPS), apt.SizeToStr(self.currentBytes),
apt.SizeToStr(self.totalBytes), self.currentItems, self.totalItems)
return True
def pulse_items(self, items):
print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (
apt.SizeToStr(self.currentCPS), apt.SizeToStr(self.currentBytes),
apt.SizeToStr(self.totalBytes), self.currentItems, self.totalItems)
print "Pulse-Items: "
for itm in items:
uri, descr, shortDescr, fileSize, partialSize = itm
print " - '%s' '%s' '%s' '%d/%d'" % (
uri, descr, shortDescr, partialSize, fileSize)
return True
def mediaChange(self, medium, drive):
print "Please insert medium %s in drive %s" % (medium, drive)
sys.stdin.readline()
#return False
class TextInstallProgress(apt.InstallProgress):
def __init__(self):
apt.InstallProgress.__init__(self)
pass
def startUpdate(self):
print "StartUpdate"
def finishUpdate(self):
print "FinishUpdate"
def statusChange(self, pkg, percent, status):
print "[%s] %s: %s" % (percent, pkg, status)
def updateInterface(self):
apt.InstallProgress.updateInterface(self)
# usefull to e.g. redraw a GUI
time.sleep(0.1)
class TextCdromProgress(apt.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 askCdromName(self):
print "Please enter cd-name: ",
cd_name = sys.stdin.readline()
return (True, cd_name.strip())
def changeCdrom(self):
print "Please insert cdrom and press <ENTER>"
answer = sys.stdin.readline()
return True
if __name__ == "__main__":
c = apt.Cache()
pkg = c["3dchess"]
if pkg.isInstalled:
pkg.markDelete()
else:
pkg.markInstall()
res = c.commit(TextFetchProgress(), TextInstallProgress())
print res
|