From b147f1846cd26ab25ad925105f52421992395918 Mon Sep 17 00:00:00 2001 From: Ben Finney Date: Fri, 16 May 2008 14:58:00 +1000 Subject: Remove trailing whitespace. --- tests/pkgsrcrecords.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/pkgsrcrecords.py') diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py index 28df3f7c..06c4a1ef 100644 --- a/tests/pkgsrcrecords.py +++ b/tests/pkgsrcrecords.py @@ -2,7 +2,7 @@ # # Test for the PkgSrcRecords code # it segfaults for python-apt < 0.5.37 -# +# import apt_pkg import sys -- cgit v1.2.3 From a953d82143f0ec979e18f17e8d9bbacbac954868 Mon Sep 17 00:00:00 2001 From: Ben Finney Date: Fri, 16 May 2008 16:11:06 +1000 Subject: Fixes to blank lines, to conform with PEP 8. --- apt/cache.py | 17 +++++++++++++++++ apt/cdrom.py | 6 +++++- apt/debfile.py | 6 ++++-- apt/package.py | 25 ++++++++++++++++++++++++- apt/progress.py | 37 ++++++++++++++++++++++++++++++++++++- aptsources/__init__.py | 1 - aptsources/distinfo.py | 27 +++++++++++++++++++++++++-- aptsources/distro.py | 13 ++++++++++++- aptsources/sourceslist.py | 19 +++++++++++++++---- doc/examples/acquire.py | 4 +--- doc/examples/action.py | 12 ------------ doc/examples/build-deps.py | 2 ++ doc/examples/cdrom.py | 6 ------ doc/examples/deb_inspect.py | 3 +++ doc/examples/desc.py | 1 - doc/examples/gui-inst.py | 19 +++++++++++++------ doc/examples/inst.py | 10 ++++++---- doc/examples/progress.py | 14 ++++++++++++++ doc/examples/recommends.py | 6 ++---- tests/cache.py | 2 ++ tests/depcache.py | 1 + tests/lock.py | 1 - tests/pkgproblemresolver.py | 1 + tests/pkgrecords.py | 2 ++ tests/pkgsrcrecords.py | 2 ++ tests/test_aptsources.py | 3 +++ utils/get_debian_mirrors.py | 2 ++ utils/get_ubuntu_mirrors.py | 2 -- utils/get_ubuntu_mirrors_from_lp.py | 3 +++ 29 files changed, 195 insertions(+), 52 deletions(-) (limited to 'tests/pkgsrcrecords.py') diff --git a/apt/cache.py b/apt/cache.py index 6773aeec..35da7970 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -25,16 +25,22 @@ import apt.progress import os import sys + class FetchCancelledException(IOError): " Exception that is thrown when the user cancels a fetch operation " pass + + class FetchFailedException(IOError): " Exception that is thrown when fetching fails " pass + + class LockFailedException(IOError): " Exception that is thrown when locking fails " pass + class Cache(object): """ Dictionary-like package cache This class has all the packages that are available in it's @@ -227,6 +233,7 @@ class Cache(object): return (res == pm.ResultCompleted) # cache changes + def cachePostChange(self): " called internally if the cache has changed, emit a signal then " self._runCallbacks("cache_post_change") @@ -243,28 +250,36 @@ class Cache(object): self._callbacks[name] = [] self._callbacks[name].append(callback) + # ----------------------------- experimental interface + + class Filter(object): """ Filter base class """ + def apply(self, pkg): """ Filter function, return True if the package matchs a filter criteria and False otherwise """ return True + class MarkedChangesFilter(Filter): """ Filter that returns all marked changes """ + def apply(self, pkg): if pkg.markedInstall or pkg.markedDelete or pkg.markedUpgrade: return True else: return False + class FilteredCache(object): """ A package cache that is filtered. Can work on a existing cache or create a new one """ + def __init__(self, cache=None, progress=None): if cache == None: self.cache = Cache(progress) @@ -274,6 +289,7 @@ class FilteredCache(object): self.cache.connect("cache_post_open", self.filterCachePostChange) self._filtered = {} self._filters = [] + def __len__(self): return len(self._filtered) @@ -323,6 +339,7 @@ class FilteredCache(object): def cache_pre_changed(): print "cache pre changed" + def cache_post_changed(): print "cache post changed" diff --git a/apt/cdrom.py b/apt/cdrom.py index c0e57094..7f9b4776 100644 --- a/apt/cdrom.py +++ b/apt/cdrom.py @@ -1,7 +1,9 @@ import apt_pkg from progress import CdromProgress + class Cdrom(object): + def __init__(self, progress=None, mountpoint=None, nomount=True): """ Support for apt-cdrom like features. Options: @@ -22,15 +24,18 @@ class Cdrom(object): apt_pkg.Config.Set("APT::CDROM::NoMount", "true") else: apt_pkg.Config.Set("APT::CDROM::NoMount", "false") + def add(self): " add cdrom to the sources.list " return self._cdrom.Add(self._progress) + def ident(self): " identify the cdrom " (res, ident) = self._cdrom.Ident(self._progress) if res: return ident return None + @property def inSourcesList(self): " check if the cdrom is already in the current sources.list " @@ -44,4 +49,3 @@ class Cdrom(object): if not line.startswith("#") and cdid in line: return True return False - diff --git a/apt/debfile.py b/apt/debfile.py index 73e0288d..365847d7 100644 --- a/apt/debfile.py +++ b/apt/debfile.py @@ -4,9 +4,11 @@ from apt_inst import arCheckMember from gettext import gettext as _ + class NoDebArchiveException(IOError): pass + class DebPackage(object): _supported_data_members = ("data.tar.gz", "data.tar.bz2", "data.tar.lzma") @@ -31,10 +33,12 @@ class DebPackage(object): def filelist(self): """ return the list of files in the deb """ files = [] + def extract_cb(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor): #print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\ # % (What,Name,Link,Mode,UID,GID,Size, MTime, Major, Minor) files.append(Name) + for member in self._supported_data_members: if arCheckMember(open(self.filename), member): try: @@ -46,7 +50,6 @@ class DebPackage(object): filelist = property(filelist) - if __name__ == "__main__": import sys @@ -55,4 +58,3 @@ if __name__ == "__main__": print d["Maintainer"] print "Files:" print "\n".join(d.filelist) - diff --git a/apt/package.py b/apt/package.py index 043f58ca..b771c677 100644 --- a/apt/package.py +++ b/apt/package.py @@ -26,40 +26,53 @@ import string #from gettext import gettext as _ import gettext + + def _(s): return gettext.dgettext("python-apt", s) + class BaseDependency(object): " a single dependency " + def __init__(self, name, rel, ver, pre): self.name = name self.relation = rel self.version = ver self.preDepend = pre + class Dependency(object): + def __init__(self, alternatives): self.or_dependencies = alternatives + class Record(object): """ represents a pkgRecord, can be accessed like a dictionary and gives the original package record if accessed as a string """ + def __init__(self, s): self._str = s self._rec = apt_pkg.ParseSection(s) + def __str__(self): return self._str + def __getitem__(self, key): k = self._rec.get(key) if k is None: raise KeyError return k + def has_key(self, key): return self._rec.has_key(key) + class Package(object): """ This class represents a package in the cache """ + def __init__(self, cache, depcache, records, sourcelist, pcache, pkgiter): """ Init the Package object """ self._cache = cache # low level cache @@ -71,6 +84,7 @@ class Package(object): pass # helper + def _lookupRecord(self, UseCandidate=True): """ internal helper that moves the Records to the right position, must be called before _records is accessed """ @@ -173,6 +187,7 @@ class Package(object): if ver == None: return False return ver.Downloadable + def candidateDownloadable(self): " returns if the canidate is downloadable " return self._downloadable(useCandidate=True) @@ -279,6 +294,7 @@ class Package(object): installedRecord = property(installedRecord) # depcache states + def markedInstall(self): """ Package is marked for install """ return self._depcache.MarkedInstall(self._pkg) @@ -320,6 +336,7 @@ class Package(object): isUpgradable = property(isUpgradable) # size + def packageSize(self): """ The size of the candidate deb package """ ver = self._depcache.GetCandidateVer(self._pkg) @@ -345,8 +362,9 @@ class Package(object): return ver.InstalledSize installedSize = property(installedSize) - # canidate origin class Origin: + """ Candidate origin """ + def __init__(self, pkg, VerFileIter): self.component = VerFileIter.Component self.archive = VerFileIter.Archive @@ -359,6 +377,7 @@ class Package(object): self.trusted = True else: self.trusted = False + def __repr__(self): return "component: '%s' archive: '%s' origin: '%s' label: '%s' " \ "site '%s' isTrusted: '%s'"% (self.component, self.archive, @@ -376,11 +395,13 @@ class Package(object): candidateOrigin = property(candidateOrigin) # depcache actions + def markKeep(self): """ mark a package for keep """ self._pcache.cachePreChange() self._depcache.MarkKeep(self._pkg) self._pcache.cachePostChange() + def markDelete(self, autoFix=True, purge=False): """ mark a package for delete. Run the resolver if autoFix is set. Mark the package as purge (remove with configuration) if 'purge' @@ -397,6 +418,7 @@ class Package(object): Fix.InstallProtect() Fix.Resolve() self._pcache.cachePostChange() + def markInstall(self, autoFix=True, autoInst=True, fromUser=True): """ mark a package for install. Run the resolver if autoFix is set, automatically install required dependencies if autoInst is set @@ -411,6 +433,7 @@ class Package(object): fixer.Protect(self._pkg) fixer.Resolve(True) self._pcache.cachePostChange() + def markUpgrade(self): """ mark a package for upgrade """ if self.isUpgradable: diff --git a/apt/progress.py b/apt/progress.py index 19237a01..b50b2915 100644 --- a/apt/progress.py +++ b/apt/progress.py @@ -30,29 +30,36 @@ import apt_pkg import apt + class OpProgress(object): """ Abstract class to implement reporting on cache opening Subclass this class to implement simple Operation progress reporting """ + def __init__(self): pass + def update(self, percent): pass + def done(self): pass + class OpTextProgress(OpProgress): """ A simple text based cache open reporting class """ + def __init__(self): OpProgress.__init__(self) + def update(self, percent): sys.stdout.write("\r%s: %.2i " % (self.subOp,percent)) sys.stdout.flush() + def done(self): sys.stdout.write("\r%s: Done\n" % self.op) - class FetchProgress(object): """ Report the download/fetching progress Subclass this class to implement fetch progress reporting @@ -92,17 +99,22 @@ class FetchProgress(object): if self.currentCPS > 0: self.eta = (self.totalBytes-self.currentBytes)/float(self.currentCPS) return True + def mediaChange(self, medium, drive): pass + class TextFetchProgress(FetchProgress): """ Ready to use progress object for terminal windows """ + def __init__(self): self.items = {} + def updateStatus(self, uri, descr, shortDescr, status): if status != self.dlQueued: print "\r%s %s" % (self.dlStatusStr[status], descr) self.items[uri] = status + def pulse(self): FetchProgress.pulse(self) if self.currentCPS > 0: @@ -114,8 +126,10 @@ class TextFetchProgress(FetchProgress): print "\r%s" % (s), sys.stdout.flush() return True + def stop(self): print "\rDone downloading " + def mediaChange(self, medium, drive): """ react to media change events """ res = True; @@ -126,26 +140,34 @@ class TextFetchProgress(FetchProgress): res = false; return res + class DumbInstallProgress(object): """ Report the install progress Subclass this class to implement install progress reporting """ + def __init__(self): pass + def startUpdate(self): pass + def run(self, pm): return pm.DoInstall() + def finishUpdate(self): pass + def updateInterface(self): pass + class InstallProgress(DumbInstallProgress): """ A InstallProgress that is pretty useful. It supports the attributes 'percent' 'status' and callbacks for the dpkg errors and conffiles and status changes """ + def __init__(self): DumbInstallProgress.__init__(self) self.selectTimeout = 0.1 @@ -156,15 +178,19 @@ class InstallProgress(DumbInstallProgress): self.read = "" self.percent = 0.0 self.status = "" + def error(self, pkg, errormsg): " called when a error is detected during the install " pass + def conffile(self,current,new): " called when a conffile question from dpkg is detected " pass + def statusChange(self, pkg, percent, status): " called when the status changed " pass + def updateInterface(self): if self.statusfd != None: try: @@ -199,8 +225,10 @@ class InstallProgress(DumbInstallProgress): self.percent = float(percent) self.status = string.strip(status_str) self.read = "" + def fork(self): return os.fork() + def waitChild(self): while True: select.select([self.statusfd],[],[], self.selectTimeout) @@ -209,6 +237,7 @@ class InstallProgress(DumbInstallProgress): if pid == self.child_pid: break return os.WEXITSTATUS(res) + def run(self, pm): pid = self.fork() if pid == 0: @@ -219,20 +248,26 @@ class InstallProgress(DumbInstallProgress): res = self.waitChild() return res + class CdromProgress: """ Report the cdrom add progress Subclass this class to implement cdrom add progress reporting """ + def __init__(self): pass + def update(self, text, step): """ update is called regularly so that the gui can be redrawn """ pass + def askCdromName(self): pass + def changeCdrom(self): pass + # module test code if __name__ == "__main__": import apt_pkg diff --git a/aptsources/__init__.py b/aptsources/__init__.py index 8b137891..e69de29b 100644 --- a/aptsources/__init__.py +++ b/aptsources/__init__.py @@ -1 +0,0 @@ - diff --git a/aptsources/distinfo.py b/aptsources/distinfo.py index bc567a3a..4a601be3 100644 --- a/aptsources/distinfo.py +++ b/aptsources/distinfo.py @@ -28,14 +28,17 @@ import gettext from os import getenv import ConfigParser import string +import re #from gettext import gettext as _ import gettext + + def _(s): return gettext.dgettext("python-apt", s) -import re class Template: + def __init__(self): self.name = None self.child = False @@ -62,11 +65,14 @@ class Template: else: return False + class Component: + def __init__(self, name, desc=None, long_desc=None): self.name = name self.description = desc self.description_long = long_desc + def get_description(self): if self.description_long != None: return self.description_long @@ -74,24 +80,32 @@ class Component: return self.description else: return None + def set_description(self, desc): self.description = desc + def set_description_long(self, desc): self.description_long = desc + def get_description_long(self): return self.description_long + class Mirror: ''' Storage for mirror related information ''' + def __init__(self, proto, hostname, dir, location=None): self.hostname = hostname self.repositories = [] self.add_repository(proto, dir) self.location = location + def add_repository(self, proto, dir): self.repositories.append(Repository(proto, dir)) + def get_repositories_for_proto(self, proto): return filter(lambda r: r.proto == proto, self.repositories) + def has_repository(self, proto, dir): if dir is None: return False @@ -99,28 +113,38 @@ class Mirror: if r.proto == proto and dir in r.dir: return True return False + def get_repo_urls(self): return map(lambda r: r.get_url(self.hostname), self.repositories) + def get_location(self): return self.location + def set_location(self, location): self.location = location + class Repository: + def __init__(self, proto, dir): self.proto = proto self.dir = dir + def get_info(self): return self.proto, self.dir + def get_url(self, hostname): return "%s://%s/%s" % (self.proto, hostname, self.dir) + def split_url(url): ''' split a given URL into the protocoll, the hostname and the dir part ''' return map(lambda a,b: a, re.split(":*\/+", url, maxsplit=2), [None, None, None]) + class DistInfo: + def __init__(self, dist = None, base_dir = "/usr/share/python-apt/templates"): @@ -140,7 +164,6 @@ class DistInfo: self.dist = dist - map_mirror_sets = {} dist_fname = "%s/%s.info" % (base_dir, dist) diff --git a/aptsources/distro.py b/aptsources/distro.py index 0a977445..faccc271 100644 --- a/aptsources/distro.py +++ b/aptsources/distro.py @@ -28,13 +28,17 @@ import os import sys import gettext + + def _(s): return gettext.dgettext("python-apt", s) class NoDistroTemplateException(Exception): pass + class Distribution: + def __init__(self, id, codename, description, release): """ Container for distribution specific informations """ # LSB information @@ -199,6 +203,7 @@ class Distribution: def get_server_list(self): ''' Return a list of used and suggested servers ''' + def compare_mirrors(mir1, mir2): '''Helper function that handles comaprision of mirror urls that could contain trailing slashes''' @@ -271,6 +276,7 @@ class Distribution: comp: the component that should be enabled """ + def add_component_only_once(source, comps_per_dist): """ Check if we already added the component to the repository, since @@ -347,6 +353,7 @@ class Distribution: def change_server(self, uri): ''' Change the server of all distro specific sources to a given host ''' + def change_server_of_source(source, uri, seen): # Avoid creating duplicate entries source.uri = uri @@ -357,6 +364,7 @@ class Distribution: seen.append([source.uri, source.dist, comp]) if len(source.comps) < 1: self.sourceslist.remove(source) + seen_binary = [] seen_source = [] self.default_server = uri @@ -377,6 +385,7 @@ class Distribution: else: return False + class DebianDistribution(Distribution): ''' Class to support specific Debian features ''' @@ -408,12 +417,15 @@ class DebianDistribution(Distribution): Distribution.get_mirrors(self, mirror_template="http://ftp.%s.debian.org/debian/") + class UbuntuDistribution(Distribution): ''' Class to support specific Ubuntu features ''' + def get_mirrors(self): Distribution.get_mirrors(self, mirror_template="http://%s.archive.ubuntu.com/ubuntu/") + def get_distro(): ''' Check the currently used distribution and return the corresponding distriubtion class that supports distro specific features. ''' @@ -430,4 +442,3 @@ def get_distro(): return DebianDistribution(id, codename, description, release) else: return Distribution(id, codename, description, release) - diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py index 4067920a..a8a772a0 100644 --- a/aptsources/sourceslist.py +++ b/aptsources/sourceslist.py @@ -36,7 +36,10 @@ import sys #from UpdateManager.Common.DistInfo import DistInfo from distinfo import DistInfo + # some global helpers + + def is_mirror(master_uri, compare_uri): """check if the given add_url is idential or a mirror of orig_uri e.g. master_uri = archive.ubuntu.com @@ -66,12 +69,15 @@ def is_mirror(master_uri, compare_uri): return True return False + def uniq(s): """ simple and efficient way to return uniq list """ return list(set(s)) + class SourceEntry: """ single sources.list entry """ + def __init__(self, line,file=None): self.invalid = False # is the source entry valid self.disabled = False # is it disabled ('#' in front) @@ -96,7 +102,6 @@ class SourceEntry: self.dist == other.dist and self.comps == other.comps) - def mysplit(self, line): """ a split() implementation that understands the sources.list format better and takes [] into account (for e.g. cdroms) """ @@ -208,13 +213,17 @@ class SourceEntry: line += "\n" return line + class NullMatcher(object): """ a Matcher that does nothing """ + def match(self, s): return True + class SourcesList: """ represents the full sources.list + sources.list.d file """ + def __init__(self, withMatcher=True, matcherPath="/usr/share/python-apt/templates/"): @@ -383,9 +392,12 @@ class SourcesList: #print self.parents return (parents, used_child_templates) -# matcher class to make a source entry look nice -# lots of predefined matchers to make it i18n/gettext friendly + class SourceEntryMatcher: + """ matcher class to make a source entry look nice + lots of predefined matchers to make it i18n/gettext friendly + """ + def __init__(self, matcherPath): self.templates = [] # Get the human readable channel and comp names from the channel .infos @@ -435,4 +447,3 @@ if __name__ == "__main__": "http://de.archive.ubuntu.com/ubuntu/") print is_mirror("http://archive.ubuntu.com/ubuntu/", "http://de.archive.ubuntu.com/ubuntu") - diff --git a/doc/examples/acquire.py b/doc/examples/acquire.py index cce3fb0d..07f8da0e 100644 --- a/doc/examples/acquire.py +++ b/doc/examples/acquire.py @@ -4,6 +4,7 @@ import os import sys import tempfile + def get_file(fetcher, uri, destFile): cwd = os.getcwd() # create a temp dir @@ -86,6 +87,3 @@ print "fetcher.Run() returned: %s" % res print "now runing pm.DoInstall()" res = pm.DoInstall(1) print "pm.DoInstall() returned: %s"% res - - - diff --git a/doc/examples/action.py b/doc/examples/action.py index adf26539..9277129e 100644 --- a/doc/examples/action.py +++ b/doc/examples/action.py @@ -21,15 +21,6 @@ cache.Update(progress) print "Exiting" sys.exit(0) - - - - - - - - - iter = cache["base-config"] print "example package iter: %s" % iter @@ -45,7 +36,6 @@ depcache.Init(progress) #sys.exit() - # get a canidate version ver= depcache.GetCandidateVer(iter) print "Candidate version: %s " % ver @@ -66,7 +56,6 @@ depcache.MarkDelete(iter) print "DelCount: %s " % depcache.DelCount print "%s.MarkedDelete(): %s" % (iter.Name, depcache.MarkedDelete(iter)) - iter = cache["3dchess"] print "\nMarking '%s' for install" % iter.Name depcache.MarkInstall(iter) @@ -100,7 +89,6 @@ for pkg in cache.Packages: if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) and depcache.IsUpgradable(pkg): print "Upgrade didn't upgrade (kept): %s" % pkg.Name - print "\nPerforming DistUpgrade" depcache.Upgrade(True) print "Keep: %s " % depcache.KeepCount diff --git a/doc/examples/build-deps.py b/doc/examples/build-deps.py index fae7b55b..2d83a54f 100755 --- a/doc/examples/build-deps.py +++ b/doc/examples/build-deps.py @@ -5,6 +5,7 @@ import apt_pkg import sys import sets # only needed for python2.3, python2.4 supports this naively + def get_source_pkg(pkg, records, depcache): """ get the source package name of a given package """ version = depcache.GetCandidateVer(pkg) @@ -18,6 +19,7 @@ def get_source_pkg(pkg, records, depcache): srcpkg = pkg.Name return srcpkg + # main apt_pkg.init() cache = apt_pkg.GetCache() diff --git a/doc/examples/cdrom.py b/doc/examples/cdrom.py index bf044d7c..e54eb763 100644 --- a/doc/examples/cdrom.py +++ b/doc/examples/cdrom.py @@ -22,11 +22,5 @@ print "ident result is: %s (%s) " % (res, ident) apt_pkg.Config.Set("APT::CDROM::Rename", "True") cdrom.Add(progress) - - print "Exiting" sys.exit(0) - - - - diff --git a/doc/examples/deb_inspect.py b/doc/examples/deb_inspect.py index b57526c6..68219d6d 100755 --- a/doc/examples/deb_inspect.py +++ b/doc/examples/deb_inspect.py @@ -6,6 +6,7 @@ import apt_inst import sys import os.path + def Callback(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor): """ callback for debExtract """ @@ -40,8 +41,10 @@ if __name__ == "__main__": dir = "/tmp/deb" os.mkdir(dir) apt_inst.debExtractArchive(open(file),dir) + def visit(arg, dirname, names): print "%s/" % dirname for file in names: print "\t%s" % file + os.path.walk(dir, visit, None) diff --git a/doc/examples/desc.py b/doc/examples/desc.py index 87b9473b..1d43f2f9 100644 --- a/doc/examples/desc.py +++ b/doc/examples/desc.py @@ -22,4 +22,3 @@ records.Lookup((f,index)) desc = records.LongDesc print len(desc) print desc - diff --git a/doc/examples/gui-inst.py b/doc/examples/gui-inst.py index 5e5d2c99..28887d34 100755 --- a/doc/examples/gui-inst.py +++ b/doc/examples/gui-inst.py @@ -18,7 +18,9 @@ import posix from apt.progress import OpProgress, FetchProgress, InstallProgress + class GuiFetchProgress(gtk.Window, FetchProgress): + def __init__(self): gtk.Window.__init__(self) self.vbox = gtk.VBox() @@ -31,12 +33,15 @@ class GuiFetchProgress(gtk.Window, FetchProgress): self.vbox.pack_start(self.progress) self.vbox.pack_start(self.label) self.resize(300,100) + def start(self): print "start" self.progress.set_fraction(0.0) self.show() + def stop(self): self.hide() + def pulse(self): FetchProgress.pulse(self) self.label.set_text("Speed: %s/s" % apt_pkg.SizeToStr(self.currentCPS)) @@ -45,7 +50,9 @@ class GuiFetchProgress(gtk.Window, FetchProgress): gtk.main_iteration() return True + class TermInstallProgress(InstallProgress, gtk.Window): + def __init__(self): gtk.Window.__init__(self) InstallProgress.__init__(self) @@ -63,13 +70,16 @@ class TermInstallProgress(InstallProgress, gtk.Window): self.progressbar = gtk.ProgressBar() self.progressbar.show() box.pack_start(self.progressbar) + def child_exited(self,term, pid, status): print "child_exited: %s %s %s %s" % (self,term,pid,status) self.apt_status = posix.WEXITSTATUS(status) self.finished = True + def startUpdate(self): print "start" self.show() + def waitChild(self): while not self.finished: self.updateInterface() @@ -78,18 +88,20 @@ class TermInstallProgress(InstallProgress, gtk.Window): time.sleep(0.001) sys.stdin.readline() return self.apt_status + def statusChange(self, pkg, percent, status): print "statusChange", pkg, percent self.progressbar.set_fraction(float(percent)/100.0) self.progressbar.set_text(string.strip(status)) + def fork(self): env = ["VTE_PTY_KEEP_FD=%s"%self.writefd] return self.term.forkpty(envv=env) + cache = apt.Cache() print "Available packages: %s " % cache._cache.PackageCount - # update the cache fprogress = GuiFetchProgress() iprogress = TermInstallProgress() @@ -101,12 +113,10 @@ iprogress = TermInstallProgress() #depcache.ReadPinFile() #depcache.Init(progress) - # show the interface while gtk.events_pending(): gtk.main_iteration() - pkg = cache["3dchess"] print "\n%s"%pkg.name @@ -119,6 +129,3 @@ cache.commit(fprogress, iprogress) print "Exiting" sys.exit(0) - - - diff --git a/doc/examples/inst.py b/doc/examples/inst.py index ff9d452c..d1e2ff99 100644 --- a/doc/examples/inst.py +++ b/doc/examples/inst.py @@ -8,10 +8,13 @@ import time from apt.progress import InstallProgress + class TextInstallProgress(InstallProgress): + def __init__(self): apt.progress.InstallProgress.__init__(self) self.last = 0.0 + def updateInterface(self): InstallProgress.updateInterface(self) if self.last >= self.percent: @@ -19,11 +22,14 @@ class TextInstallProgress(InstallProgress): sys.stdout.write("\r[%s] %s\n" %(self.percent, self.status)) sys.stdout.flush() self.last = self.percent + def conffile(self,current,new): print "conffile prompt: %s %s" % (current,new) + def error(self, errorstr): print "got dpkg error: '%s'" % errorstr + cache = apt.Cache(apt.progress.OpTextProgress()) fprogress = apt.progress.TextFetchProgress() @@ -42,7 +48,3 @@ res = cache.commit(fprogress, iprogress) print res sys.exit(0) - - - - diff --git a/doc/examples/progress.py b/doc/examples/progress.py index b90253cb..39e73e70 100644 --- a/doc/examples/progress.py +++ b/doc/examples/progress.py @@ -4,7 +4,9 @@ import sys import time import string + class TextProgress(apt.OpProgress): + def __init__(self): self.last=0.0 @@ -21,6 +23,7 @@ class TextProgress(apt.OpProgress): class TextFetchProgress(apt.FetchProgress): + def __init__(self): pass @@ -32,6 +35,7 @@ class TextFetchProgress(apt.FetchProgress): def updateStatus(self, uri, descr, shortDescr, status): print "UpdateStatus: '%s' '%s' '%s' '%i'" % (uri,descr,shortDescr, status) + def pulse(self): print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (SizeToStr(self.currentCPS), SizeToStr(self.currentBytes), SizeToStr(self.totalBytes), self.currentItems, self.totalItems) return True @@ -43,15 +47,20 @@ class TextFetchProgress(apt.FetchProgress): 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 @@ -59,17 +68,22 @@ class TextInstallProgress(apt.InstallProgress): 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" % (string.strip(text), step) + def askCdromName(self): print "Please enter cd-name: ", cd_name = sys.stdin.readline() return (True, string.strip(cd_name)) + def changeCdrom(self): print "Please insert cdrom and press " answer = sys.stdin.readline() diff --git a/doc/examples/recommends.py b/doc/examples/recommends.py index c1a7eb2e..03d46068 100755 --- a/doc/examples/recommends.py +++ b/doc/examples/recommends.py @@ -5,6 +5,7 @@ apt_pkg.init() cache = apt_pkg.GetCache() + class Wanted: def __init__(self, name): @@ -12,6 +13,7 @@ class Wanted: self.recommended = [] self.suggested = [] + wanted = {} for package in cache.Packages: @@ -35,7 +37,3 @@ ks.sort() for want in ks: print want, wanted[want].recommended, wanted[want].suggested - - - - diff --git a/tests/cache.py b/tests/cache.py index 3ec87b40..34535e68 100644 --- a/tests/cache.py +++ b/tests/cache.py @@ -6,6 +6,7 @@ import apt_pkg import sys + def main(): apt_pkg.init() cache = apt_pkg.GetCache() @@ -44,6 +45,7 @@ def main(): print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + if __name__ == "__main__": main() sys.exit(0) diff --git a/tests/depcache.py b/tests/depcache.py index 5c78c3a1..635fea14 100644 --- a/tests/depcache.py +++ b/tests/depcache.py @@ -6,6 +6,7 @@ import apt_pkg import sys + def main(): apt_pkg.init() cache = apt_pkg.GetCache() diff --git a/tests/lock.py b/tests/lock.py index 86d704ea..a3d962d7 100644 --- a/tests/lock.py +++ b/tests/lock.py @@ -44,4 +44,3 @@ if __name__ == "__main__": fd = apt_pkg.GetLock(lock,True) print "Lockfile fd (child): %s" % fd sys.exit(0) - diff --git a/tests/pkgproblemresolver.py b/tests/pkgproblemresolver.py index 0ed32ea6..546e2f16 100644 --- a/tests/pkgproblemresolver.py +++ b/tests/pkgproblemresolver.py @@ -6,6 +6,7 @@ import apt_pkg import sys + def main(): apt_pkg.init() cache = apt_pkg.GetCache() diff --git a/tests/pkgrecords.py b/tests/pkgrecords.py index 43723569..308505f7 100644 --- a/tests/pkgrecords.py +++ b/tests/pkgrecords.py @@ -7,6 +7,7 @@ import apt_pkg import sys + def main(): apt_pkg.init() cache = apt_pkg.GetCache() @@ -31,6 +32,7 @@ def main(): pass print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + if __name__ == "__main__": main() sys.exit(0) diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py index 06c4a1ef..410140c8 100644 --- a/tests/pkgsrcrecords.py +++ b/tests/pkgsrcrecords.py @@ -7,6 +7,7 @@ import apt_pkg import sys + def main(): apt_pkg.init() cache = apt_pkg.GetCache() @@ -20,6 +21,7 @@ def main(): pass print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + if __name__ == "__main__": main() sys.exit(0) diff --git a/tests/test_aptsources.py b/tests/test_aptsources.py index 734503d2..08c8194a 100644 --- a/tests/test_aptsources.py +++ b/tests/test_aptsources.py @@ -6,7 +6,9 @@ import apt_pkg import os import copy + class TestAptSources(unittest.TestCase): + def __init__(self, methodName): unittest.TestCase.__init__(self, methodName) apt_pkg.init() @@ -123,5 +125,6 @@ class TestAptSources(unittest.TestCase): for key in found: self.assertEqual(found[key], 1) + if __name__ == "__main__": unittest.main() diff --git a/utils/get_debian_mirrors.py b/utils/get_debian_mirrors.py index 512731ed..2e3c7296 100755 --- a/utils/get_debian_mirrors.py +++ b/utils/get_debian_mirrors.py @@ -39,11 +39,13 @@ req = urllib2.Request("http://www.debian.org/mirror/mirrors_full") match = re.compile("^.*>([A-Za-z0-9-.\/_]+)<\/a>.*\n$") match_location = re.compile('^.*') + def add_sites(line, proto, sites, mirror_type): path = match.sub(r"\1", line) for site in sites: mirror_type.append("%s://%s%s\n" % (proto, site.lstrip(), path)) + try: print "Downloading mirrors list from the Debian website..." uri=urllib2.urlopen(req) diff --git a/utils/get_ubuntu_mirrors.py b/utils/get_ubuntu_mirrors.py index 605edcf5..8482615d 100755 --- a/utils/get_ubuntu_mirrors.py +++ b/utils/get_ubuntu_mirrors.py @@ -57,5 +57,3 @@ for mirror in mirrors: list.write("%s\n" % mirror) list.close() print "Done." - - diff --git a/utils/get_ubuntu_mirrors_from_lp.py b/utils/get_ubuntu_mirrors_from_lp.py index 1f41e34b..59ddd84e 100755 --- a/utils/get_ubuntu_mirrors_from_lp.py +++ b/utils/get_ubuntu_mirrors_from_lp.py @@ -64,6 +64,8 @@ content_splits = re.split(r'.+?', content)[0]) lines=[] + + def find(split): country = re.search(r"(.+?)", split) if not country: @@ -78,6 +80,7 @@ def find(split): split) map(lambda u: lines.append(u[0]), urls) + map(find, content_splits) print "Writing local mirrors list: %s" % list_path -- cgit v1.2.3 From ad7bc46acd80451de21ce58450edb0f4367a5c79 Mon Sep 17 00:00:00 2001 From: Ben Finney Date: Fri, 16 May 2008 16:50:38 +1000 Subject: Fix code indentation to 4 spaces, to conform with PEP 8. --- apt/progress.py | 8 +- aptsources/distro.py | 734 +++++++++++++++++++-------------------- aptsources/sourceslist.py | 762 ++++++++++++++++++++--------------------- doc/examples/acquire.py | 38 +- doc/examples/build-deps.py | 72 ++-- doc/examples/checkstate.py | 34 +- doc/examples/config.py | 16 +- doc/examples/configisc.py | 24 +- doc/examples/dependant-pkgs.py | 34 +- doc/examples/gui-inst.py | 48 +-- doc/examples/inst.py | 36 +- doc/examples/print_uris.py | 16 +- doc/examples/progress.py | 4 +- doc/examples/recommends.py | 38 +- doc/examples/records.py | 10 +- doc/examples/sources.py | 6 +- doc/examples/tagfile.py | 4 +- doc/examples/versiontest.py | 40 +-- tests/cache.py | 74 ++-- tests/depcache.py | 76 ++-- tests/lock.py | 6 +- tests/memleak.py | 54 +-- tests/pkgproblemresolver.py | 110 +++--- tests/pkgrecords.py | 48 +-- tests/pkgsrcrecords.py | 26 +- utils/get_ubuntu_mirrors.py | 8 +- 26 files changed, 1163 insertions(+), 1163 deletions(-) (limited to 'tests/pkgsrcrecords.py') diff --git a/apt/progress.py b/apt/progress.py index b50b2915..6f72197e 100644 --- a/apt/progress.py +++ b/apt/progress.py @@ -188,14 +188,14 @@ class InstallProgress(DumbInstallProgress): pass def statusChange(self, pkg, percent, status): - " called when the status changed " - pass + " called when the status changed " + pass def updateInterface(self): if self.statusfd != None: try: - while not self.read.endswith("\n"): - self.read += os.read(self.statusfd.fileno(),1) + while not self.read.endswith("\n"): + self.read += os.read(self.statusfd.fileno(),1) except OSError, (errno,errstr): # resource temporarly unavailable is ignored if errno != EAGAIN and errnor != EWOULDBLOCK: diff --git a/aptsources/distro.py b/aptsources/distro.py index faccc271..962c57bc 100644 --- a/aptsources/distro.py +++ b/aptsources/distro.py @@ -34,396 +34,396 @@ def _(s): return gettext.dgettext("python-apt", s) class NoDistroTemplateException(Exception): - pass + pass class Distribution: - def __init__(self, id, codename, description, release): - """ Container for distribution specific informations """ - # LSB information - self.id = id - self.codename = codename - self.description = description - self.release = release - - self.binary_type = "deb" - self.source_type = "deb-src" - - def get_sources(self, sourceslist): - """ - Find the corresponding template, main and child sources - for the distribution - """ - - self.sourceslist = sourceslist - # corresponding sources - self.source_template = None - self.child_sources = [] - self.main_sources = [] - self.disabled_sources = [] - self.cdrom_sources = [] - self.download_comps = [] - self.enabled_comps = [] - self.cdrom_comps = [] - self.used_media = [] - self.get_source_code = False - self.source_code_sources = [] - - # location of the sources - self.default_server = "" - self.main_server = "" - self.nearest_server = "" - self.used_servers = [] - - # find the distro template - for template in self.sourceslist.matcher.templates: - if self.is_codename(template.name) and\ - template.distribution == self.id: - #print "yeah! found a template for %s" % self.description - #print template.description, template.base_uri, template.components - self.source_template = template - break - if self.source_template == None: - raise (NoDistroTemplateException, - "Error: could not find a distribution template") - - # find main and child sources - media = [] - comps = [] - cdrom_comps = [] - enabled_comps = [] - source_code = [] - for source in self.sourceslist.list: - if source.invalid == False and\ - self.is_codename(source.dist) and\ - source.template and\ - self.is_codename(source.template.name): - #print "yeah! found a distro repo: %s" % source.line - # cdroms need do be handled differently - if source.uri.startswith("cdrom:") and \ - source.disabled == False: - self.cdrom_sources.append(source) - cdrom_comps.extend(source.comps) - elif source.uri.startswith("cdrom:") and \ - source.disabled == True: - self.cdrom_sources.append(source) - elif source.type == self.binary_type and \ - source.disabled == False: - self.main_sources.append(source) - comps.extend(source.comps) - media.append(source.uri) - elif source.type == self.binary_type and \ - source.disabled == True: - self.disabled_sources.append(source) - elif source.type == self.source_type and source.disabled == False: - self.source_code_sources.append(source) - elif source.type == self.source_type and source.disabled == True: - self.disabled_sources.append(source) - if source.invalid == False and\ - source.template in self.source_template.children: - if source.disabled == False and source.type == self.binary_type: - self.child_sources.append(source) - elif source.disabled == False and source.type == self.source_type: - self.source_code_sources.append(source) - else: - self.disabled_sources.append(source) - self.download_comps = set(comps) - self.cdrom_comps = set(cdrom_comps) - enabled_comps.extend(comps) - enabled_comps.extend(cdrom_comps) - self.enabled_comps = set(enabled_comps) - self.used_media = set(media) - - self.get_mirrors() - - def get_mirrors(self, mirror_template=None): - """ - Provide a set of mirrors where you can get the distribution from - """ - # the main server is stored in the template - self.main_server = self.source_template.base_uri - - # other used servers - for medium in self.used_media: - if not medium.startswith("cdrom:"): - # seems to be a network source - self.used_servers.append(medium) - - if len(self.main_sources) == 0: - self.default_server = self.main_server - else: - self.default_server = self.main_sources[0].uri - - # get a list of country codes and real names - self.countries = {} - try: - f = open("/usr/share/iso-codes/iso_3166.tab", "r") - lines = f.readlines() - for line in lines: - parts = line.split("\t") - self.countries[parts[0].lower()] = parts[1].strip() - except: - print "could not open file '%s'" % file - else: - f.close() - - # try to guess the nearest mirror from the locale - self.country = None - self.country_code = None - locale = os.getenv("LANG", default="en.UK") - a = locale.find("_") - z = locale.find(".") - if z == -1: - z = len(locale) - country_code = locale[a+1:z].lower() - - if mirror_template: - self.nearest_server = mirror_template % country_code - - if self.countries.has_key(country_code): - self.country = self.countries[country_code] - self.country_code = country_code - - def _get_mirror_name(self, server): - ''' Try to get a human readable name for the main mirror of a country - Customize for different distributions ''' - country = None - i = server.find("://") - l = server.find(".archive.ubuntu.com") - if i != -1 and l != -1: - country = server[i+len("://"):l] - if self.countries.has_key(country): - # TRANSLATORS: %s is a country - return _("Server for %s") % \ - gettext.dgettext("iso_3166", - self.countries[country].rstrip()).rstrip() - else: - return("%s" % server.rstrip("/ ")) - - def get_server_list(self): - ''' Return a list of used and suggested servers ''' - - def compare_mirrors(mir1, mir2): - '''Helper function that handles comaprision of mirror urls - that could contain trailing slashes''' - return re.match(mir1.strip("/ "), mir2.rstrip("/ ")) - - # Store all available servers: - # Name, URI, active - mirrors = [] - if len(self.used_servers) < 1 or \ - (len(self.used_servers) == 1 and \ - compare_mirrors(self.used_servers[0], self.main_server)): - mirrors.append([_("Main server"), self.main_server, True]) - mirrors.append([self._get_mirror_name(self.nearest_server), - self.nearest_server, False]) - elif len(self.used_servers) == 1 and not \ - compare_mirrors(self.used_servers[0], self.main_server): - mirrors.append([_("Main server"), self.main_server, False]) - # Only one server is used - server = self.used_servers[0] - - # Append the nearest server if it's not already used - if not compare_mirrors(server, self.nearest_server): + def __init__(self, id, codename, description, release): + """ Container for distribution specific informations """ + # LSB information + self.id = id + self.codename = codename + self.description = description + self.release = release + + self.binary_type = "deb" + self.source_type = "deb-src" + + def get_sources(self, sourceslist): + """ + Find the corresponding template, main and child sources + for the distribution + """ + + self.sourceslist = sourceslist + # corresponding sources + self.source_template = None + self.child_sources = [] + self.main_sources = [] + self.disabled_sources = [] + self.cdrom_sources = [] + self.download_comps = [] + self.enabled_comps = [] + self.cdrom_comps = [] + self.used_media = [] + self.get_source_code = False + self.source_code_sources = [] + + # location of the sources + self.default_server = "" + self.main_server = "" + self.nearest_server = "" + self.used_servers = [] + + # find the distro template + for template in self.sourceslist.matcher.templates: + if self.is_codename(template.name) and\ + template.distribution == self.id: + #print "yeah! found a template for %s" % self.description + #print template.description, template.base_uri, template.components + self.source_template = template + break + if self.source_template == None: + raise (NoDistroTemplateException, + "Error: could not find a distribution template") + + # find main and child sources + media = [] + comps = [] + cdrom_comps = [] + enabled_comps = [] + source_code = [] + for source in self.sourceslist.list: + if source.invalid == False and\ + self.is_codename(source.dist) and\ + source.template and\ + self.is_codename(source.template.name): + #print "yeah! found a distro repo: %s" % source.line + # cdroms need do be handled differently + if source.uri.startswith("cdrom:") and \ + source.disabled == False: + self.cdrom_sources.append(source) + cdrom_comps.extend(source.comps) + elif source.uri.startswith("cdrom:") and \ + source.disabled == True: + self.cdrom_sources.append(source) + elif source.type == self.binary_type and \ + source.disabled == False: + self.main_sources.append(source) + comps.extend(source.comps) + media.append(source.uri) + elif source.type == self.binary_type and \ + source.disabled == True: + self.disabled_sources.append(source) + elif source.type == self.source_type and source.disabled == False: + self.source_code_sources.append(source) + elif source.type == self.source_type and source.disabled == True: + self.disabled_sources.append(source) + if source.invalid == False and\ + source.template in self.source_template.children: + if source.disabled == False and source.type == self.binary_type: + self.child_sources.append(source) + elif source.disabled == False and source.type == self.source_type: + self.source_code_sources.append(source) + else: + self.disabled_sources.append(source) + self.download_comps = set(comps) + self.cdrom_comps = set(cdrom_comps) + enabled_comps.extend(comps) + enabled_comps.extend(cdrom_comps) + self.enabled_comps = set(enabled_comps) + self.used_media = set(media) + + self.get_mirrors() + + def get_mirrors(self, mirror_template=None): + """ + Provide a set of mirrors where you can get the distribution from + """ + # the main server is stored in the template + self.main_server = self.source_template.base_uri + + # other used servers + for medium in self.used_media: + if not medium.startswith("cdrom:"): + # seems to be a network source + self.used_servers.append(medium) + + if len(self.main_sources) == 0: + self.default_server = self.main_server + else: + self.default_server = self.main_sources[0].uri + + # get a list of country codes and real names + self.countries = {} + try: + f = open("/usr/share/iso-codes/iso_3166.tab", "r") + lines = f.readlines() + for line in lines: + parts = line.split("\t") + self.countries[parts[0].lower()] = parts[1].strip() + except: + print "could not open file '%s'" % file + else: + f.close() + + # try to guess the nearest mirror from the locale + self.country = None + self.country_code = None + locale = os.getenv("LANG", default="en.UK") + a = locale.find("_") + z = locale.find(".") + if z == -1: + z = len(locale) + country_code = locale[a+1:z].lower() + + if mirror_template: + self.nearest_server = mirror_template % country_code + + if self.countries.has_key(country_code): + self.country = self.countries[country_code] + self.country_code = country_code + + def _get_mirror_name(self, server): + ''' Try to get a human readable name for the main mirror of a country + Customize for different distributions ''' + country = None + i = server.find("://") + l = server.find(".archive.ubuntu.com") + if i != -1 and l != -1: + country = server[i+len("://"):l] + if self.countries.has_key(country): + # TRANSLATORS: %s is a country + return _("Server for %s") % \ + gettext.dgettext("iso_3166", + self.countries[country].rstrip()).rstrip() + else: + return("%s" % server.rstrip("/ ")) + + def get_server_list(self): + ''' Return a list of used and suggested servers ''' + + def compare_mirrors(mir1, mir2): + ''' Helper function that handles comaprision of mirror urls + that could contain trailing slashes''' + return re.match(mir1.strip("/ "), mir2.rstrip("/ ")) + + # Store all available servers: + # Name, URI, active + mirrors = [] + if len(self.used_servers) < 1 or \ + (len(self.used_servers) == 1 and \ + compare_mirrors(self.used_servers[0], self.main_server)): + mirrors.append([_("Main server"), self.main_server, True]) mirrors.append([self._get_mirror_name(self.nearest_server), self.nearest_server, False]) - mirrors.append([self._get_mirror_name(server), server, True]) - - elif len(self.used_servers) > 1: - # More than one server is used. Since we don't handle this case - # in the user interface we set "custom servers" to true and - # append a list of all used servers - mirrors.append([_("Main server"), self.main_server, False]) - mirrors.append([self._get_mirror_name(self.nearest_server), - self.nearest_server, False]) - mirrors.append([_("Custom servers"), None, True]) - for server in self.used_servers: - if compare_mirrors(server, self.nearest_server) or\ - compare_mirrors(server, self.main_server): - continue - elif not [self._get_mirror_name(server), server, False] in mirrors: - mirrors.append([self._get_mirror_name(server), server, False]) - - return mirrors - - def add_source(self, type=None, + elif len(self.used_servers) == 1 and not \ + compare_mirrors(self.used_servers[0], self.main_server): + mirrors.append([_("Main server"), self.main_server, False]) + # Only one server is used + server = self.used_servers[0] + + # Append the nearest server if it's not already used + if not compare_mirrors(server, self.nearest_server): + mirrors.append([self._get_mirror_name(self.nearest_server), + self.nearest_server, False]) + mirrors.append([self._get_mirror_name(server), server, True]) + + elif len(self.used_servers) > 1: + # More than one server is used. Since we don't handle this case + # in the user interface we set "custom servers" to true and + # append a list of all used servers + mirrors.append([_("Main server"), self.main_server, False]) + mirrors.append([self._get_mirror_name(self.nearest_server), + self.nearest_server, False]) + mirrors.append([_("Custom servers"), None, True]) + for server in self.used_servers: + if compare_mirrors(server, self.nearest_server) or\ + compare_mirrors(server, self.main_server): + continue + elif not [self._get_mirror_name(server), server, False] in mirrors: + mirrors.append([self._get_mirror_name(server), server, False]) + + return mirrors + + def add_source(self, type=None, uri=None, dist=None, comps=None, comment=""): - """ - Add distribution specific sources - """ - if uri == None: - # FIXME: Add support for the server selector - uri = self.default_server - if dist == None: - dist = self.codename - if comps == None: - comps = list(self.enabled_comps) - if type == None: - type = self.binary_type - new_source = self.sourceslist.add(type, uri, dist, comps, comment) - # if source code is enabled add a deb-src line after the new - # source - if self.get_source_code == True and type == self.binary_type: - self.sourceslist.add(self.source_type, uri, dist, comps, comment, - file=new_source.file, - pos=self.sourceslist.list.index(new_source)+1) - - def enable_component(self, comp): - """ - Enable a component in all main, child and source code sources - (excluding cdrom based sources) - - comp: the component that should be enabled - """ - - def add_component_only_once(source, comps_per_dist): """ - Check if we already added the component to the repository, since - a repository could be splitted into different apt lines. If not - add the component + Add distribution specific sources """ - # if we don't that distro, just reutnr (can happen for e.g. - # dapper-update only in deb-src - if not comps_per_dist.has_key(source.dist): - return - # if we have seen this component already for this distro, - # return (nothing to do - if comp in comps_per_dist[source.dist]: - return - # add it - source.comps.append(comp) - comps_per_dist[source.dist].add(comp) - - sources = [] - sources.extend(self.main_sources) - sources.extend(self.child_sources) - # store what comps are enabled already per distro (where distro is - # e.g. "dapper", "dapper-updates") - comps_per_dist = {} - comps_per_sdist = {} - for s in sources: - if s.type == self.binary_type: - if not comps_per_dist.has_key(s.dist): - comps_per_dist[s.dist] = set() - map(comps_per_dist[s.dist].add, s.comps) - for s in self.source_code_sources: - if s.type == self.source_type: - if not comps_per_sdist.has_key(s.dist): - comps_per_sdist[s.dist] = set() - map(comps_per_sdist[s.dist].add, s.comps) - - # check if there is a main source at all - if len(self.main_sources) < 1: - # create a new main source - self.add_source(comps=["%s"%comp]) - else: - # add the comp to all main, child and source code sources - for source in sources: - add_component_only_once(source, comps_per_dist) + if uri == None: + # FIXME: Add support for the server selector + uri = self.default_server + if dist == None: + dist = self.codename + if comps == None: + comps = list(self.enabled_comps) + if type == None: + type = self.binary_type + new_source = self.sourceslist.add(type, uri, dist, comps, comment) + # if source code is enabled add a deb-src line after the new + # source + if self.get_source_code == True and type == self.binary_type: + self.sourceslist.add(self.source_type, uri, dist, comps, comment, + file=new_source.file, + pos=self.sourceslist.list.index(new_source)+1) + + def enable_component(self, comp): + """ + Enable a component in all main, child and source code sources + (excluding cdrom based sources) - # check if there is a main source code source at all - if self.get_source_code == True: - if len(self.source_code_sources) < 1: - # create a new main source - self.add_source(type=self.source_type, comps=["%s"%comp]) - else: - # add the comp to all main, child and source code sources - for source in self.source_code_sources: - add_component_only_once(source, comps_per_sdist) - - def disable_component(self, comp): - """ - Disable a component in all main, child and source code sources - (excluding cdrom based sources) - """ - sources = [] - sources.extend(self.main_sources) - sources.extend(self.child_sources) - sources.extend(self.source_code_sources) - if comp in self.cdrom_comps: + comp: the component that should be enabled + """ + + def add_component_only_once(source, comps_per_dist): + """ + Check if we already added the component to the repository, since + a repository could be splitted into different apt lines. If not + add the component + """ + # if we don't that distro, just reutnr (can happen for e.g. + # dapper-update only in deb-src + if not comps_per_dist.has_key(source.dist): + return + # if we have seen this component already for this distro, + # return (nothing to do + if comp in comps_per_dist[source.dist]: + return + # add it + source.comps.append(comp) + comps_per_dist[source.dist].add(comp) + + sources = [] + sources.extend(self.main_sources) + sources.extend(self.child_sources) + # store what comps are enabled already per distro (where distro is + # e.g. "dapper", "dapper-updates") + comps_per_dist = {} + comps_per_sdist = {} + for s in sources: + if s.type == self.binary_type: + if not comps_per_dist.has_key(s.dist): + comps_per_dist[s.dist] = set() + map(comps_per_dist[s.dist].add, s.comps) + for s in self.source_code_sources: + if s.type == self.source_type: + if not comps_per_sdist.has_key(s.dist): + comps_per_sdist[s.dist] = set() + map(comps_per_sdist[s.dist].add, s.comps) + + # check if there is a main source at all + if len(self.main_sources) < 1: + # create a new main source + self.add_source(comps=["%s"%comp]) + else: + # add the comp to all main, child and source code sources + for source in sources: + add_component_only_once(source, comps_per_dist) + + # check if there is a main source code source at all + if self.get_source_code == True: + if len(self.source_code_sources) < 1: + # create a new main source + self.add_source(type=self.source_type, comps=["%s"%comp]) + else: + # add the comp to all main, child and source code sources + for source in self.source_code_sources: + add_component_only_once(source, comps_per_sdist) + + def disable_component(self, comp): + """ + Disable a component in all main, child and source code sources + (excluding cdrom based sources) + """ sources = [] sources.extend(self.main_sources) - for source in sources: - if comp in source.comps: - source.comps.remove(comp) + sources.extend(self.child_sources) + sources.extend(self.source_code_sources) + if comp in self.cdrom_comps: + sources = [] + sources.extend(self.main_sources) + for source in sources: + if comp in source.comps: + source.comps.remove(comp) + if len(source.comps) < 1: + self.sourceslist.remove(source) + + def change_server(self, uri): + ''' Change the server of all distro specific sources to + a given host ''' + + def change_server_of_source(source, uri, seen): + # Avoid creating duplicate entries + source.uri = uri + for comp in source.comps: + if [source.uri, source.dist, comp] in seen: + source.comps.remove(comp) + else: + seen.append([source.uri, source.dist, comp]) if len(source.comps) < 1: - self.sourceslist.remove(source) - - def change_server(self, uri): - ''' Change the server of all distro specific sources to - a given host ''' + self.sourceslist.remove(source) - def change_server_of_source(source, uri, seen): - # Avoid creating duplicate entries - source.uri = uri - for comp in source.comps: - if [source.uri, source.dist, comp] in seen: - source.comps.remove(comp) - else: - seen.append([source.uri, source.dist, comp]) - if len(source.comps) < 1: - self.sourceslist.remove(source) - - seen_binary = [] - seen_source = [] - self.default_server = uri - for source in self.main_sources: - change_server_of_source(source, uri, seen_binary) - for source in self.child_sources: - # Do not change the forces server of a child source - if source.template.base_uri == None or \ - source.template.base_uri != source.uri: + seen_binary = [] + seen_source = [] + self.default_server = uri + for source in self.main_sources: change_server_of_source(source, uri, seen_binary) - for source in self.source_code_sources: - change_server_of_source(source, uri, seen_source) - - def is_codename(self, name): - ''' Compare a given name with the release codename. ''' - if name == self.codename: - return True - else: - return False + for source in self.child_sources: + # Do not change the forces server of a child source + if source.template.base_uri == None or \ + source.template.base_uri != source.uri: + change_server_of_source(source, uri, seen_binary) + for source in self.source_code_sources: + change_server_of_source(source, uri, seen_source) + + def is_codename(self, name): + ''' Compare a given name with the release codename. ''' + if name == self.codename: + return True + else: + return False class DebianDistribution(Distribution): - ''' Class to support specific Debian features ''' + ''' Class to support specific Debian features ''' - def is_codename(self, name): - ''' Compare a given name with the release codename and check if - if it can be used as a synonym for a development releases ''' - if name == self.codename or self.release in ("testing", "unstable"): - return True - else: - return False - - def _get_mirror_name(self, server): - ''' Try to get a human readable name for the main mirror of a country - Debian specific ''' - country = None - i = server.find("://ftp.") - l = server.find(".debian.org") - if i != -1 and l != -1: - country = server[i+len("://ftp."):l] - if self.countries.has_key(country): - # TRANSLATORS: %s is a country - return _("Server for %s") % \ - gettext.dgettext("iso_3166", - self.countries[country].rstrip()).rstrip() - else: - return("%s" % server.rstrip("/ ")) - - def get_mirrors(self): - Distribution.get_mirrors(self, - mirror_template="http://ftp.%s.debian.org/debian/") + def is_codename(self, name): + ''' Compare a given name with the release codename and check if + if it can be used as a synonym for a development releases ''' + if name == self.codename or self.release in ("testing", "unstable"): + return True + else: + return False + + def _get_mirror_name(self, server): + ''' Try to get a human readable name for the main mirror of a country + Debian specific ''' + country = None + i = server.find("://ftp.") + l = server.find(".debian.org") + if i != -1 and l != -1: + country = server[i+len("://ftp."):l] + if self.countries.has_key(country): + # TRANSLATORS: %s is a country + return _("Server for %s") % \ + gettext.dgettext("iso_3166", + self.countries[country].rstrip()).rstrip() + else: + return("%s" % server.rstrip("/ ")) + + def get_mirrors(self): + Distribution.get_mirrors(self, + mirror_template="http://ftp.%s.debian.org/debian/") class UbuntuDistribution(Distribution): - ''' Class to support specific Ubuntu features ''' + ''' Class to support specific Ubuntu features ''' - def get_mirrors(self): - Distribution.get_mirrors(self, - mirror_template="http://%s.archive.ubuntu.com/ubuntu/") + def get_mirrors(self): + Distribution.get_mirrors(self, + mirror_template="http://%s.archive.ubuntu.com/ubuntu/") def get_distro(): diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py index a8a772a0..57be2a68 100644 --- a/aptsources/sourceslist.py +++ b/aptsources/sourceslist.py @@ -41,409 +41,409 @@ from distinfo import DistInfo def is_mirror(master_uri, compare_uri): - """check if the given add_url is idential or a mirror of orig_uri - e.g. master_uri = archive.ubuntu.com - compare_uri = de.archive.ubuntu.com - -> True - """ - # remove traling spaces and "/" - compare_uri = compare_uri.rstrip("/ ") - master_uri = master_uri.rstrip("/ ") - # uri is identical - if compare_uri == master_uri: - #print "Identical" - return True - # add uri is a master site and orig_uri has the from "XX.mastersite" - # (e.g. de.archive.ubuntu.com) - try: - compare_srv = compare_uri.split("//")[1] - master_srv = master_uri.split("//")[1] - #print "%s == %s " % (add_srv, orig_srv) - except IndexError: # ok, somethings wrong here - #print "IndexError" + """ check if the given add_url is idential or a mirror of orig_uri + e.g. master_uri = archive.ubuntu.com + compare_uri = de.archive.ubuntu.com + -> True + """ + # remove traling spaces and "/" + compare_uri = compare_uri.rstrip("/ ") + master_uri = master_uri.rstrip("/ ") + # uri is identical + if compare_uri == master_uri: + #print "Identical" + return True + # add uri is a master site and orig_uri has the from "XX.mastersite" + # (e.g. de.archive.ubuntu.com) + try: + compare_srv = compare_uri.split("//")[1] + master_srv = master_uri.split("//")[1] + #print "%s == %s " % (add_srv, orig_srv) + except IndexError: # ok, somethings wrong here + #print "IndexError" + return False + # remove the leading "." (if any) and see if that helps + if "." in compare_srv and \ + compare_srv[compare_srv.index(".")+1:] == master_srv: + #print "Mirror" + return True return False - # remove the leading "." (if any) and see if that helps - if "." in compare_srv and \ - compare_srv[compare_srv.index(".")+1:] == master_srv: - #print "Mirror" - return True - return False def uniq(s): - """ simple and efficient way to return uniq list """ - return list(set(s)) + """ simple and efficient way to return uniq list """ + return list(set(s)) class SourceEntry: - """ single sources.list entry """ - - def __init__(self, line,file=None): - self.invalid = False # is the source entry valid - self.disabled = False # is it disabled ('#' in front) - self.type = "" # what type (deb, deb-src) - self.uri = "" # base-uri - self.dist = "" # distribution (dapper, edgy, etc) - self.comps = [] # list of available componetns (may empty) - self.comment = "" # (optional) comment - self.line = line # the original sources.list line - if file == None: - file = apt_pkg.Config.FindDir("Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist") - self.file = file # the file that the entry is located in - self.parse(line) - self.template = None # type DistInfo.Suite - self.children = [] - - def __eq__(self, other): - """ equal operator for two sources.list entries """ - return (self.disabled == other.disabled and - self.type == other.type and - self.uri == other.uri and - self.dist == other.dist and - self.comps == other.comps) - - def mysplit(self, line): - """ a split() implementation that understands the sources.list - format better and takes [] into account (for e.g. cdroms) """ - line = string.strip(line) - pieces = [] - tmp = "" - # we are inside a [..] block - p_found = False - space_found = False - for i in range(len(line)): - if line[i] == "[": - p_found=True - tmp += line[i] - elif line[i] == "]": - p_found=False - tmp += line[i] - elif space_found and not line[i].isspace(): # we skip one or more space + """ single sources.list entry """ + + def __init__(self, line,file=None): + self.invalid = False # is the source entry valid + self.disabled = False # is it disabled ('#' in front) + self.type = "" # what type (deb, deb-src) + self.uri = "" # base-uri + self.dist = "" # distribution (dapper, edgy, etc) + self.comps = [] # list of available componetns (may empty) + self.comment = "" # (optional) comment + self.line = line # the original sources.list line + if file == None: + file = apt_pkg.Config.FindDir("Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist") + self.file = file # the file that the entry is located in + self.parse(line) + self.template = None # type DistInfo.Suite + self.children = [] + + def __eq__(self, other): + """ equal operator for two sources.list entries """ + return (self.disabled == other.disabled and + self.type == other.type and + self.uri == other.uri and + self.dist == other.dist and + self.comps == other.comps) + + def mysplit(self, line): + """ a split() implementation that understands the sources.list + format better and takes [] into account (for e.g. cdroms) """ + line = string.strip(line) + pieces = [] + tmp = "" + # we are inside a [..] block + p_found = False space_found = False - pieces.append(tmp) - tmp = line[i] - elif line[i].isspace() and not p_found: # found a whitespace - space_found = True - else: - tmp += line[i] - # append last piece - if len(tmp) > 0: - pieces.append(tmp) - return pieces - - def parse(self,line): - """ parse a given sources.list (textual) line and break it up - into the field we have """ - line = string.strip(self.line) - #print line - # check if the source is enabled/disabled - if line == "" or line == "#": # empty line - self.invalid = True - return - if line[0] == "#": - self.disabled = True - pieces = string.split(line[1:]) - # if it looks not like a disabled deb line return - if not pieces[0] in ("rpm", "rpm-src", "deb", "deb-src"): - self.invalid = True - return - else: - line = line[1:] - # check for another "#" in the line (this is treated as a comment) - i = line.find("#") - if i > 0: - self.comment = line[i+1:] - line = line[:i] - # source is ok, split it and see what we have - pieces = self.mysplit(line) - # Sanity check - if len(pieces) < 3: - self.invalid = True - return - # Type, deb or deb-src - self.type = string.strip(pieces[0]) - # Sanity check - if self.type not in ("deb", "deb-src", "rpm", "rpm-src"): - self.invalid = True - return - # URI - self.uri = string.strip(pieces[1]) - if len(self.uri) < 1: - self.invalid = True - # distro and components (optional) - # Directory or distro - self.dist = string.strip(pieces[2]) - if len(pieces) > 3: - # List of components - self.comps = pieces[3:] - else: - self.comps = [] - - def set_enabled(self, new_value): - """ set a line to enabled or disabled """ - self.disabled = not new_value - # enable, remove all "#" from the start of the line - if new_value == True: - i=0 - self.line = string.lstrip(self.line) - while self.line[i] == "#": - i += 1 - self.line = self.line[i:] - else: - # disabled, add a "#" - if string.strip(self.line)[0] != "#": - self.line = "#" + self.line - - def __str__(self): - """ debug helper """ - return self.str().strip() - - def str(self): - """ return the current line as string """ - if self.invalid: - return self.line - line = "" - if self.disabled: - line = "# " - line += "%s %s %s" % (self.type, self.uri, self.dist) - if len(self.comps) > 0: - line += " " + " ".join(self.comps) - if self.comment != "": - line += " #"+self.comment - line += "\n" - return line + for i in range(len(line)): + if line[i] == "[": + p_found=True + tmp += line[i] + elif line[i] == "]": + p_found=False + tmp += line[i] + elif space_found and not line[i].isspace(): # we skip one or more space + space_found = False + pieces.append(tmp) + tmp = line[i] + elif line[i].isspace() and not p_found: # found a whitespace + space_found = True + else: + tmp += line[i] + # append last piece + if len(tmp) > 0: + pieces.append(tmp) + return pieces + + def parse(self,line): + """ parse a given sources.list (textual) line and break it up + into the field we have """ + line = string.strip(self.line) + #print line + # check if the source is enabled/disabled + if line == "" or line == "#": # empty line + self.invalid = True + return + if line[0] == "#": + self.disabled = True + pieces = string.split(line[1:]) + # if it looks not like a disabled deb line return + if not pieces[0] in ("rpm", "rpm-src", "deb", "deb-src"): + self.invalid = True + return + else: + line = line[1:] + # check for another "#" in the line (this is treated as a comment) + i = line.find("#") + if i > 0: + self.comment = line[i+1:] + line = line[:i] + # source is ok, split it and see what we have + pieces = self.mysplit(line) + # Sanity check + if len(pieces) < 3: + self.invalid = True + return + # Type, deb or deb-src + self.type = string.strip(pieces[0]) + # Sanity check + if self.type not in ("deb", "deb-src", "rpm", "rpm-src"): + self.invalid = True + return + # URI + self.uri = string.strip(pieces[1]) + if len(self.uri) < 1: + self.invalid = True + # distro and components (optional) + # Directory or distro + self.dist = string.strip(pieces[2]) + if len(pieces) > 3: + # List of components + self.comps = pieces[3:] + else: + self.comps = [] + + def set_enabled(self, new_value): + """ set a line to enabled or disabled """ + self.disabled = not new_value + # enable, remove all "#" from the start of the line + if new_value == True: + i=0 + self.line = string.lstrip(self.line) + while self.line[i] == "#": + i += 1 + self.line = self.line[i:] + else: + # disabled, add a "#" + if string.strip(self.line)[0] != "#": + self.line = "#" + self.line + + def __str__(self): + """ debug helper """ + return self.str().strip() + + def str(self): + """ return the current line as string """ + if self.invalid: + return self.line + line = "" + if self.disabled: + line = "# " + line += "%s %s %s" % (self.type, self.uri, self.dist) + if len(self.comps) > 0: + line += " " + " ".join(self.comps) + if self.comment != "": + line += " #"+self.comment + line += "\n" + return line class NullMatcher(object): - """ a Matcher that does nothing """ + """ a Matcher that does nothing """ - def match(self, s): - return True + def match(self, s): + return True class SourcesList: - """ represents the full sources.list + sources.list.d file """ - - def __init__(self, - withMatcher=True, - matcherPath="/usr/share/python-apt/templates/"): - self.list = [] # the actual SourceEntries Type - if withMatcher: - self.matcher = SourceEntryMatcher(matcherPath) - else: - self.matcher = NullMatcher() - self.refresh() - - def refresh(self): - """ update the list of known entries """ - self.list = [] - # read sources.list - dir = apt_pkg.Config.FindDir("Dir::Etc") - file = apt_pkg.Config.Find("Dir::Etc::sourcelist") - self.load(dir+file) - # read sources.list.d - partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") - for file in glob.glob("%s/*.list" % partsdir): - self.load(file) - # check if the source item fits a predefined template - for source in self.list: - if source.invalid == False: - self.matcher.match(source) - - def __iter__(self): - """ simple iterator to go over self.list, returns SourceEntry - types """ - for entry in self.list: - yield entry - raise StopIteration - - def add(self, type, uri, dist, orig_comps, comment="", pos=-1, file=None): - """ - Add a new source to the sources.list. - The method will search for existing matching repos and will try to - reuse them as far as possible - """ - # create a working copy of the component list so that - # we can modify it later - comps = orig_comps[:] - # check if we have this source already in the sources.list - for source in self.list: - if source.disabled == False and source.invalid == False and \ - source.type == type and uri == source.uri and \ - source.dist == dist: - for new_comp in comps: - if new_comp in source.comps: - # we have this component already, delete it from the new_comps - # list - del comps[comps.index(new_comp)] - if len(comps) == 0: - return source - for source in self.list: - # if there is a repo with the same (type, uri, dist) just add the - # components - if source.disabled == False and source.invalid == False and \ - source.type == type and uri == source.uri and \ - source.dist == dist: - comps = uniq(source.comps + comps) - source.comps = comps - return source - # if there is a corresponding repo which is disabled, enable it - elif source.disabled == True and source.invalid == False and \ - source.type == type and uri == source.uri and \ - source.dist == dist and \ - len(set(source.comps) & set(comps)) == len(comps): - source.disabled = False - return source - # there isn't any matching source, so create a new line and parse it - line = "%s %s %s" % (type,uri,dist) - for c in comps: - line = line + " " + c; - if comment != "": - line = "%s #%s\n" %(line,comment) - line = line + "\n" - new_entry = SourceEntry(line) - if file != None: - new_entry.file = file - self.matcher.match(new_entry) - self.list.insert(pos, new_entry) - return new_entry - - def remove(self, source_entry): - """ remove the specified entry from the sources.list """ - self.list.remove(source_entry) - - def restoreBackup(self, backup_ext): - " restore sources.list files based on the backup extension " - dir = apt_pkg.Config.FindDir("Dir::Etc") - file = apt_pkg.Config.Find("Dir::Etc::sourcelist") - if os.path.exists(dir+file+backup_ext) and \ - os.path.exists(dir+file): - shutil.copy(dir+file+backup_ext,dir+file) - # now sources.list.d - partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") - for file in glob.glob("%s/*.list" % partsdir): - if os.path.exists(file+backup_ext): - shutil.copy(file+backup_ext,file) - - def backup(self, backup_ext=None): - """ make a backup of the current source files, if no backup extension - is given, the current date/time is used (and returned) """ - already_backuped = set() - if backup_ext == None: - backup_ext = time.strftime("%y%m%d.%H%M") - for source in self.list: - if not source.file in already_backuped and os.path.exists(source.file): - shutil.copy(source.file,"%s%s" % (source.file,backup_ext)) - return backup_ext - - def load(self,file): - """ (re)load the current sources """ - try: - f = open(file, "r") - lines = f.readlines() - for line in lines: - source = SourceEntry(line,file) - self.list.append(source) - except: - print "could not open file '%s'" % file - else: - f.close() - - def save(self): - """ save the current sources """ - files = {} - # write an empty default config file if there aren't any sources - if len(self.list) == 0: - path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"), - apt_pkg.Config.Find("Dir::Etc::sourcelist")) - header = ("## See sources.list(5) for more information, especialy\n" - "# Remember that you can only use http, ftp or file URIs\n" - "# CDROMs are managed through the apt-cdrom tool.\n") - open(path,"w").write(header) - return - for source in self.list: - if not files.has_key(source.file): - files[source.file]=open(source.file,"w") - files[source.file].write(source.str()) - for f in files: - files[f].close() - - def check_for_relations(self, sources_list): - """get all parent and child channels in the sources list""" - parents = [] - used_child_templates = {} - for source in sources_list: - # try to avoid checking uninterressting sources - if source.template == None: - continue - # set up a dict with all used child templates and corresponding - # source entries - if source.template.child == True: - key = source.template - if not used_child_templates.has_key(key): - used_child_templates[key] = [] - temp = used_child_templates[key] - temp.append(source) - else: - # store each source with children aka. a parent :) - if len(source.template.children) > 0: - parents.append(source) - #print self.used_child_templates - #print self.parents - return (parents, used_child_templates) + """ represents the full sources.list + sources.list.d file """ + + def __init__(self, + withMatcher=True, + matcherPath="/usr/share/python-apt/templates/"): + self.list = [] # the actual SourceEntries Type + if withMatcher: + self.matcher = SourceEntryMatcher(matcherPath) + else: + self.matcher = NullMatcher() + self.refresh() + + def refresh(self): + """ update the list of known entries """ + self.list = [] + # read sources.list + dir = apt_pkg.Config.FindDir("Dir::Etc") + file = apt_pkg.Config.Find("Dir::Etc::sourcelist") + self.load(dir+file) + # read sources.list.d + partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") + for file in glob.glob("%s/*.list" % partsdir): + self.load(file) + # check if the source item fits a predefined template + for source in self.list: + if source.invalid == False: + self.matcher.match(source) + + def __iter__(self): + """ simple iterator to go over self.list, returns SourceEntry + types """ + for entry in self.list: + yield entry + raise StopIteration + + def add(self, type, uri, dist, orig_comps, comment="", pos=-1, file=None): + """ + Add a new source to the sources.list. + The method will search for existing matching repos and will try to + reuse them as far as possible + """ + # create a working copy of the component list so that + # we can modify it later + comps = orig_comps[:] + # check if we have this source already in the sources.list + for source in self.list: + if source.disabled == False and source.invalid == False and \ + source.type == type and uri == source.uri and \ + source.dist == dist: + for new_comp in comps: + if new_comp in source.comps: + # we have this component already, delete it from the new_comps + # list + del comps[comps.index(new_comp)] + if len(comps) == 0: + return source + for source in self.list: + # if there is a repo with the same (type, uri, dist) just add the + # components + if source.disabled == False and source.invalid == False and \ + source.type == type and uri == source.uri and \ + source.dist == dist: + comps = uniq(source.comps + comps) + source.comps = comps + return source + # if there is a corresponding repo which is disabled, enable it + elif source.disabled == True and source.invalid == False and \ + source.type == type and uri == source.uri and \ + source.dist == dist and \ + len(set(source.comps) & set(comps)) == len(comps): + source.disabled = False + return source + # there isn't any matching source, so create a new line and parse it + line = "%s %s %s" % (type,uri,dist) + for c in comps: + line = line + " " + c; + if comment != "": + line = "%s #%s\n" %(line,comment) + line = line + "\n" + new_entry = SourceEntry(line) + if file != None: + new_entry.file = file + self.matcher.match(new_entry) + self.list.insert(pos, new_entry) + return new_entry + + def remove(self, source_entry): + """ remove the specified entry from the sources.list """ + self.list.remove(source_entry) + + def restoreBackup(self, backup_ext): + " restore sources.list files based on the backup extension " + dir = apt_pkg.Config.FindDir("Dir::Etc") + file = apt_pkg.Config.Find("Dir::Etc::sourcelist") + if os.path.exists(dir+file+backup_ext) and \ + os.path.exists(dir+file): + shutil.copy(dir+file+backup_ext,dir+file) + # now sources.list.d + partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") + for file in glob.glob("%s/*.list" % partsdir): + if os.path.exists(file+backup_ext): + shutil.copy(file+backup_ext,file) + + def backup(self, backup_ext=None): + """ make a backup of the current source files, if no backup extension + is given, the current date/time is used (and returned) """ + already_backuped = set() + if backup_ext == None: + backup_ext = time.strftime("%y%m%d.%H%M") + for source in self.list: + if not source.file in already_backuped and os.path.exists(source.file): + shutil.copy(source.file,"%s%s" % (source.file,backup_ext)) + return backup_ext + + def load(self,file): + """ (re)load the current sources """ + try: + f = open(file, "r") + lines = f.readlines() + for line in lines: + source = SourceEntry(line,file) + self.list.append(source) + except: + print "could not open file '%s'" % file + else: + f.close() + + def save(self): + """ save the current sources """ + files = {} + # write an empty default config file if there aren't any sources + if len(self.list) == 0: + path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"), + apt_pkg.Config.Find("Dir::Etc::sourcelist")) + header = ("## See sources.list(5) for more information, especialy\n" + "# Remember that you can only use http, ftp or file URIs\n" + "# CDROMs are managed through the apt-cdrom tool.\n") + open(path,"w").write(header) + return + for source in self.list: + if not files.has_key(source.file): + files[source.file]=open(source.file,"w") + files[source.file].write(source.str()) + for f in files: + files[f].close() + + def check_for_relations(self, sources_list): + """get all parent and child channels in the sources list""" + parents = [] + used_child_templates = {} + for source in sources_list: + # try to avoid checking uninterressting sources + if source.template == None: + continue + # set up a dict with all used child templates and corresponding + # source entries + if source.template.child == True: + key = source.template + if not used_child_templates.has_key(key): + used_child_templates[key] = [] + temp = used_child_templates[key] + temp.append(source) + else: + # store each source with children aka. a parent :) + if len(source.template.children) > 0: + parents.append(source) + #print self.used_child_templates + #print self.parents + return (parents, used_child_templates) class SourceEntryMatcher: - """ matcher class to make a source entry look nice - lots of predefined matchers to make it i18n/gettext friendly - """ - - def __init__(self, matcherPath): - self.templates = [] - # Get the human readable channel and comp names from the channel .infos - spec_files = glob.glob("%s/*.info" % matcherPath) - for f in spec_files: - f = os.path.basename(f) - i = f.find(".info") - f = f[0:i] - dist = DistInfo(f,base_dir=matcherPath) - for template in dist.templates: - if template.match_uri != None: - self.templates.append(template) - return - - def match(self, source): - """Add a matching template to the source""" - _ = gettext.gettext - found = False - for template in self.templates: - if (re.search(template.match_uri, source.uri) and - re.match(template.match_name, source.dist)): - found = True - source.template = template - break - elif (template.is_mirror(source.uri) and - re.match(template.match_name, source.dist)): - found = True - source.template = template - break - return found + """ matcher class to make a source entry look nice + lots of predefined matchers to make it i18n/gettext friendly + """ + + def __init__(self, matcherPath): + self.templates = [] + # Get the human readable channel and comp names from the channel .infos + spec_files = glob.glob("%s/*.info" % matcherPath) + for f in spec_files: + f = os.path.basename(f) + i = f.find(".info") + f = f[0:i] + dist = DistInfo(f,base_dir=matcherPath) + for template in dist.templates: + if template.match_uri != None: + self.templates.append(template) + return + + def match(self, source): + """Add a matching template to the source""" + _ = gettext.gettext + found = False + for template in self.templates: + if (re.search(template.match_uri, source.uri) and + re.match(template.match_name, source.dist)): + found = True + source.template = template + break + elif (template.is_mirror(source.uri) and + re.match(template.match_name, source.dist)): + found = True + source.template = template + break + return found # some simple tests if __name__ == "__main__": - apt_pkg.InitConfig() - sources = SourcesList() + apt_pkg.InitConfig() + sources = SourcesList() - for entry in sources: - print entry.str() - #print entry.uri + for entry in sources: + print entry.str() + #print entry.uri - mirror = is_mirror("http://archive.ubuntu.com/ubuntu/", - "http://de.archive.ubuntu.com/ubuntu/") - print "is_mirror(): %s" % mirror + mirror = is_mirror("http://archive.ubuntu.com/ubuntu/", + "http://de.archive.ubuntu.com/ubuntu/") + print "is_mirror(): %s" % mirror - print is_mirror("http://archive.ubuntu.com/ubuntu", - "http://de.archive.ubuntu.com/ubuntu/") - print is_mirror("http://archive.ubuntu.com/ubuntu/", - "http://de.archive.ubuntu.com/ubuntu") + print is_mirror("http://archive.ubuntu.com/ubuntu", + "http://de.archive.ubuntu.com/ubuntu/") + print is_mirror("http://archive.ubuntu.com/ubuntu/", + "http://de.archive.ubuntu.com/ubuntu") diff --git a/doc/examples/acquire.py b/doc/examples/acquire.py index 07f8da0e..7bf7d646 100644 --- a/doc/examples/acquire.py +++ b/doc/examples/acquire.py @@ -6,25 +6,25 @@ import tempfile def get_file(fetcher, uri, destFile): - cwd = os.getcwd() - # create a temp dir - dir = tempfile.mkdtemp() - os.chdir(dir) - # get the file - af = apt_pkg.GetPkgAcqFile(fetcher, - uri=uri, - descr="sample descr") - res = fetcher.Run() - if res != fetcher.ResultContinue: - os.rmdir(dir) - os.chdir(cwd) - return False - filename = os.path.basename(uri) - os.rename(dir+"/"+filename,destFile) - # cleanup - os.rmdir(dir) - os.chdir(cwd) - return True + cwd = os.getcwd() + # create a temp dir + dir = tempfile.mkdtemp() + os.chdir(dir) + # get the file + af = apt_pkg.GetPkgAcqFile(fetcher, + uri=uri, + descr="sample descr") + res = fetcher.Run() + if res != fetcher.ResultContinue: + os.rmdir(dir) + os.chdir(cwd) + return False + filename = os.path.basename(uri) + os.rename(dir+"/"+filename,destFile) + # cleanup + os.rmdir(dir) + os.chdir(cwd) + return True apt_pkg.init() diff --git a/doc/examples/build-deps.py b/doc/examples/build-deps.py index 2d83a54f..dc1a6f4e 100755 --- a/doc/examples/build-deps.py +++ b/doc/examples/build-deps.py @@ -7,17 +7,17 @@ import sets # only needed for python2.3, python2.4 supports this naively def get_source_pkg(pkg, records, depcache): - """ get the source package name of a given package """ - version = depcache.GetCandidateVer(pkg) - if not version: - return None - file, index = version.FileList.pop(0) - records.Lookup((file, index)) - if records.SourcePkg != "": - srcpkg = records.SourcePkg - else: - srcpkg = pkg.Name - return srcpkg + """ get the source package name of a given package """ + version = depcache.GetCandidateVer(pkg) + if not version: + return None + file, index = version.FileList.pop(0) + records.Lookup((file, index)) + if records.SourcePkg != "": + srcpkg = records.SourcePkg + else: + srcpkg = pkg.Name + return srcpkg # main @@ -30,45 +30,45 @@ srcrecords = apt_pkg.GetPkgSrcRecords() # base package that we use for build-depends calculation if len(sys.argv) < 2: - print "need a package name as argument" - sys.exit(1) + print "need a package name as argument" + sys.exit(1) try: - base = cache[sys.argv[1]] + base = cache[sys.argv[1]] except KeyError: - print "No package %s found" % sys.argv[1] - sys.exit(1) + print "No package %s found" % sys.argv[1] + sys.exit(1) all_build_depends = sets.Set() # get the build depdends for the package itself srcpkg_name = get_source_pkg(base, records, depcache) print "srcpkg_name: %s " % srcpkg_name if not srcpkg_name: - print "Can't find source package for '%s'" % pkg.Name + print "Can't find source package for '%s'" % pkg.Name srcrec = srcrecords.Lookup(srcpkg_name) if srcrec: - print "Files:" - print srcrecords.Files - bd = srcrecords.BuildDepends - print "build-depends of the package: %s " % bd - for b in bd: - all_build_depends.add(b[0]) + print "Files:" + print srcrecords.Files + bd = srcrecords.BuildDepends + print "build-depends of the package: %s " % bd + for b in bd: + all_build_depends.add(b[0]) # calculate the build depends for all dependencies depends = depcache.GetCandidateVer(base).DependsList for dep in depends["Depends"]: # FIXME: do we need to consider PreDepends? - pkg = dep[0].TargetPkg - srcpkg_name = get_source_pkg(pkg, records, depcache) - if not srcpkg_name: - print "Can't find source package for '%s'" % pkg.Name - continue - srcrec = srcrecords.Lookup(srcpkg_name) - if srcrec: - #print srcrecords.Package - #print srcrecords.Binaries - bd = srcrecords.BuildDepends - #print "%s: %s " % (srcpkg_name, bd) - for b in bd: - all_build_depends.add(b[0]) + pkg = dep[0].TargetPkg + srcpkg_name = get_source_pkg(pkg, records, depcache) + if not srcpkg_name: + print "Can't find source package for '%s'" % pkg.Name + continue + srcrec = srcrecords.Lookup(srcpkg_name) + if srcrec: + #print srcrecords.Package + #print srcrecords.Binaries + bd = srcrecords.BuildDepends + #print "%s: %s " % (srcpkg_name, bd) + for b in bd: + all_build_depends.add(b[0]) print "\n".join(all_build_depends) diff --git a/doc/examples/checkstate.py b/doc/examples/checkstate.py index 2986872f..3368d500 100755 --- a/doc/examples/checkstate.py +++ b/doc/examples/checkstate.py @@ -14,23 +14,23 @@ packages = cache.Packages uninstalled, updated, upgradable = {}, {}, {} for package in packages: - versions = package.VersionList - if not versions: - continue - version = versions[0] - for other_version in versions: - if apt_pkg.VersionCompare(version.VerStr, other_version.VerStr)<0: - version = other_version - if package.CurrentVer: - current = package.CurrentVer - if apt_pkg.VersionCompare(current.VerStr, version.VerStr)<0: - upgradable[package.Name] = version - break - else: - updated[package.Name] = current - else: - uninstalled[package.Name] = version + versions = package.VersionList + if not versions: + continue + version = versions[0] + for other_version in versions: + if apt_pkg.VersionCompare(version.VerStr, other_version.VerStr)<0: + version = other_version + if package.CurrentVer: + current = package.CurrentVer + if apt_pkg.VersionCompare(current.VerStr, version.VerStr)<0: + upgradable[package.Name] = version + break + else: + updated[package.Name] = current + else: + uninstalled[package.Name] = version for l in (uninstalled, updated, upgradable): - print l.items()[0] + print l.items()[0] diff --git a/doc/examples/config.py b/doc/examples/config.py index 222c1331..337899f0 100755 --- a/doc/examples/config.py +++ b/doc/examples/config.py @@ -25,31 +25,31 @@ print "Command line is",sys.argv # Load the default configuration file, InitConfig() does this better.. Cnf.Set("config-file","/etc/apt/apt.conf"); # or Cnf["config-file"] = ".."; if posixpath.exists(Cnf.FindFile("config-file")): - apt_pkg.ReadConfigFile(Cnf,"/etc/apt/apt.conf"); + apt_pkg.ReadConfigFile(Cnf,"/etc/apt/apt.conf"); # Merge the command line arguments into the configuration space Arguments = [('h',"help","help"), ('v',"version","version"), ('q',"quiet","quiet","IntLevel"), ('c',"config-file","","ConfigFile"), - ('o',"option","","ArbItem")] + ('o',"option","","ArbItem")] print "FileNames",apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); print "Quiet level selected is",Cnf.FindI("quiet",0); # Do some stuff with it if Cnf.FindB("version",0) == 1: - print "Version selected - 1.1"; + print "Version selected - 1.1"; if Cnf.FindB("help",0) == 1: - print apt_pkg.Package,apt_pkg.Version,"for",apt_pkg.Architecture, \ - "compiled on",apt_pkg.Date,apt_pkg.Time; - print "Hi, I am the help text for this program"; - sys.exit(0); + print apt_pkg.Package,apt_pkg.Version,"for",apt_pkg.Architecture, \ + "compiled on",apt_pkg.Date,apt_pkg.Time; + print "Hi, I am the help text for this program"; + sys.exit(0); print "No help for you, try -h"; # Print the configuration space print "The Configuration space looks like:"; for I in Cnf.keys(): - print "%s \"%s\";"%(I,Cnf[I]); + print "%s \"%s\";"%(I,Cnf[I]); diff --git a/doc/examples/configisc.py b/doc/examples/configisc.py index 1773a919..45a9c7f6 100755 --- a/doc/examples/configisc.py +++ b/doc/examples/configisc.py @@ -13,8 +13,8 @@ import apt_pkg,sys,posixpath; ConfigFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv); if len(ConfigFile) != 1: - print "Must have exactly 1 file name"; - sys.exit(0); + print "Must have exactly 1 file name"; + sys.exit(0); Cnf = apt_pkg.newConfiguration(); apt_pkg.ReadConfigFileISC(Cnf,ConfigFile[0]); @@ -26,14 +26,14 @@ apt_pkg.ReadConfigFileISC(Cnf,ConfigFile[0]); # bind8 config file.. if Cnf.has_key("Zone"): - print "Zones: ",Cnf.SubTree("zone").List(); - for I in Cnf.List("zone"): - SubCnf = Cnf.SubTree(I); - if SubCnf.Find("type") == "slave": - print "Masters for %s: %s"%(SubCnf.MyTag(),SubCnf.ValueList("masters")); + print "Zones: ",Cnf.SubTree("zone").List(); + for I in Cnf.List("zone"): + SubCnf = Cnf.SubTree(I); + if SubCnf.Find("type") == "slave": + print "Masters for %s: %s"%(SubCnf.MyTag(),SubCnf.ValueList("masters")); else: - print "Tree definitions:"; - for I in Cnf.List("tree"): - SubCnf = Cnf.SubTree(I); - # This could use Find which would eliminate the possibility of exceptions. - print "Subtree %s with sections '%s' and architectures '%s'"%(SubCnf.MyTag(),SubCnf["Sections"],SubCnf["Architectures"]); + print "Tree definitions:"; + for I in Cnf.List("tree"): + SubCnf = Cnf.SubTree(I); + # This could use Find which would eliminate the possibility of exceptions. + print "Subtree %s with sections '%s' and architectures '%s'"%(SubCnf.MyTag(),SubCnf["Sections"],SubCnf["Architectures"]); diff --git a/doc/examples/dependant-pkgs.py b/doc/examples/dependant-pkgs.py index 2de420a5..bb10ce70 100755 --- a/doc/examples/dependant-pkgs.py +++ b/doc/examples/dependant-pkgs.py @@ -6,27 +6,27 @@ import sys pkgs = set() cache = apt.Cache() for pkg in cache: - candver = cache._depcache.GetCandidateVer(pkg._pkg) - if candver == None: - continue - dependslist = candver.DependsList - for dep in dependslist.keys(): - # get the list of each dependency object - for depVerList in dependslist[dep]: - for z in depVerList: - # get all TargetVersions of - # the dependency object - for tpkg in z.AllTargets(): - if sys.argv[1] == tpkg.ParentPkg.Name: - pkgs.add(pkg.name) + candver = cache._depcache.GetCandidateVer(pkg._pkg) + if candver == None: + continue + dependslist = candver.DependsList + for dep in dependslist.keys(): + # get the list of each dependency object + for depVerList in dependslist[dep]: + for z in depVerList: + # get all TargetVersions of + # the dependency object + for tpkg in z.AllTargets(): + if sys.argv[1] == tpkg.ParentPkg.Name: + pkgs.add(pkg.name) main = set() universe = set() for pkg in pkgs: - if "universe" in cache[pkg].section: - universe.add(cache[pkg].sourcePackageName) - else: - main.add(cache[pkg].sourcePackageName) + if "universe" in cache[pkg].section: + universe.add(cache[pkg].sourcePackageName) + else: + main.add(cache[pkg].sourcePackageName) print "main:" print "\n".join(main) diff --git a/doc/examples/gui-inst.py b/doc/examples/gui-inst.py index 28887d34..edaec455 100755 --- a/doc/examples/gui-inst.py +++ b/doc/examples/gui-inst.py @@ -22,51 +22,51 @@ from apt.progress import OpProgress, FetchProgress, InstallProgress class GuiFetchProgress(gtk.Window, FetchProgress): def __init__(self): - gtk.Window.__init__(self) - self.vbox = gtk.VBox() - self.vbox.show() - self.add(self.vbox) - self.progress = gtk.ProgressBar() - self.progress.show() - self.label = gtk.Label() - self.label.show() - self.vbox.pack_start(self.progress) - self.vbox.pack_start(self.label) - self.resize(300,100) + gtk.Window.__init__(self) + self.vbox = gtk.VBox() + self.vbox.show() + self.add(self.vbox) + self.progress = gtk.ProgressBar() + self.progress.show() + self.label = gtk.Label() + self.label.show() + self.vbox.pack_start(self.progress) + self.vbox.pack_start(self.label) + self.resize(300,100) def start(self): print "start" - self.progress.set_fraction(0.0) + self.progress.set_fraction(0.0) self.show() def stop(self): - self.hide() + self.hide() def pulse(self): FetchProgress.pulse(self) self.label.set_text("Speed: %s/s" % apt_pkg.SizeToStr(self.currentCPS)) - #self.progressbar.set_fraction(self.currentBytes/self.totalBytes) - while gtk.events_pending(): - gtk.main_iteration() + #self.progressbar.set_fraction(self.currentBytes/self.totalBytes) + while gtk.events_pending(): + gtk.main_iteration() return True class TermInstallProgress(InstallProgress, gtk.Window): def __init__(self): - gtk.Window.__init__(self) + gtk.Window.__init__(self) InstallProgress.__init__(self) - self.show() + self.show() box = gtk.VBox() box.show() self.add(box) - self.term = vte.Terminal() - self.term.show() + self.term = vte.Terminal() + self.term.show() # check for the child self.reaper = vte.reaper_get() self.reaper.connect("child-exited",self.child_exited) self.finished = False - box.pack_start(self.term) + box.pack_start(self.term) self.progressbar = gtk.ProgressBar() self.progressbar.show() box.pack_start(self.progressbar) @@ -115,16 +115,16 @@ iprogress = TermInstallProgress() # show the interface while gtk.events_pending(): - gtk.main_iteration() + gtk.main_iteration() pkg = cache["3dchess"] print "\n%s"%pkg.name # install or remove, the importend thing is to keep us busy :) if pkg.isInstalled: - pkg.markDelete() + pkg.markDelete() else: - pkg.markInstall() + pkg.markInstall() cache.commit(fprogress, iprogress) print "Exiting" diff --git a/doc/examples/inst.py b/doc/examples/inst.py index d1e2ff99..b37ab4cd 100644 --- a/doc/examples/inst.py +++ b/doc/examples/inst.py @@ -11,23 +11,23 @@ from apt.progress import InstallProgress class TextInstallProgress(InstallProgress): - def __init__(self): - apt.progress.InstallProgress.__init__(self) - self.last = 0.0 + def __init__(self): + apt.progress.InstallProgress.__init__(self) + self.last = 0.0 - def updateInterface(self): - InstallProgress.updateInterface(self) - if self.last >= self.percent: - return - sys.stdout.write("\r[%s] %s\n" %(self.percent, self.status)) - sys.stdout.flush() - self.last = self.percent + def updateInterface(self): + InstallProgress.updateInterface(self) + if self.last >= self.percent: + return + sys.stdout.write("\r[%s] %s\n" %(self.percent, self.status)) + sys.stdout.flush() + self.last = self.percent - def conffile(self,current,new): - print "conffile prompt: %s %s" % (current,new) + def conffile(self,current,new): + print "conffile prompt: %s %s" % (current,new) - def error(self, errorstr): - print "got dpkg error: '%s'" % errorstr + def error(self, errorstr): + print "got dpkg error: '%s'" % errorstr cache = apt.Cache(apt.progress.OpTextProgress()) @@ -39,11 +39,11 @@ pkg = cache["3dchess"] # install or remove, the importend thing is to keep us busy :) if pkg.isInstalled: - print "Going to delete %s" % pkg.name - pkg.markDelete() + print "Going to delete %s" % pkg.name + pkg.markDelete() else: - print "Going to install %s" % pkg.name - pkg.markInstall() + print "Going to install %s" % pkg.name + pkg.markInstall() res = cache.commit(fprogress, iprogress) print res diff --git a/doc/examples/print_uris.py b/doc/examples/print_uris.py index c8a64223..3c93a668 100755 --- a/doc/examples/print_uris.py +++ b/doc/examples/print_uris.py @@ -12,11 +12,11 @@ upgradable = filter(lambda p: p.isUpgradable, cache) for pkg in upgradable: - pkg._lookupRecord(True) - path = apt_pkg.ParseSection(pkg._records.Record)["Filename"] - cand = pkg._depcache.GetCandidateVer(pkg._pkg) - for (packagefile,i) in cand.FileList: - indexfile = cache._list.FindIndex(packagefile) - if indexfile: - uri = indexfile.ArchiveURI(path) - print uri + pkg._lookupRecord(True) + path = apt_pkg.ParseSection(pkg._records.Record)["Filename"] + cand = pkg._depcache.GetCandidateVer(pkg._pkg) + for (packagefile,i) in cand.FileList: + indexfile = cache._list.FindIndex(packagefile) + if indexfile: + uri = indexfile.ArchiveURI(path) + print uri diff --git a/doc/examples/progress.py b/doc/examples/progress.py index 39e73e70..d8f00a52 100644 --- a/doc/examples/progress.py +++ b/doc/examples/progress.py @@ -41,8 +41,8 @@ class TextFetchProgress(apt.FetchProgress): return True def mediaChange(self, medium, drive): - print "Please insert medium %s in drive %s" % (medium, drive) - sys.stdin.readline() + print "Please insert medium %s in drive %s" % (medium, drive) + sys.stdin.readline() #return False diff --git a/doc/examples/recommends.py b/doc/examples/recommends.py index 03d46068..f0b3b1be 100755 --- a/doc/examples/recommends.py +++ b/doc/examples/recommends.py @@ -8,32 +8,32 @@ cache = apt_pkg.GetCache() class Wanted: - def __init__(self, name): - self.name = name - self.recommended = [] - self.suggested = [] + def __init__(self, name): + self.name = name + self.recommended = [] + self.suggested = [] wanted = {} for package in cache.Packages: - current = package.CurrentVer - if not current: - continue - depends = current.DependsList - for (key, attr) in (('Suggests', 'suggested'), - ('Recommends', 'recommended')): - list = depends.get(key, []) - for dependency in list: - name = dependency[0].TargetPkg.Name - dep = cache[name] - if dep.CurrentVer: - continue - getattr(wanted.setdefault(name, Wanted(name)), - attr).append(package.Name) + current = package.CurrentVer + if not current: + continue + depends = current.DependsList + for (key, attr) in (('Suggests', 'suggested'), + ('Recommends', 'recommended')): + list = depends.get(key, []) + for dependency in list: + name = dependency[0].TargetPkg.Name + dep = cache[name] + if dep.CurrentVer: + continue + getattr(wanted.setdefault(name, Wanted(name)), + attr).append(package.Name) ks = wanted.keys() ks.sort() for want in ks: - print want, wanted[want].recommended, wanted[want].suggested + print want, wanted[want].recommended, wanted[want].suggested diff --git a/doc/examples/records.py b/doc/examples/records.py index ef04b555..9dfc460b 100755 --- a/doc/examples/records.py +++ b/doc/examples/records.py @@ -5,8 +5,8 @@ import apt cache = apt.Cache() for pkg in cache: - if not pkg.candidateRecord: - continue - if pkg.candidateRecord.has_key("Task"): - print "Pkg %s is part of '%s'" % (pkg.name, pkg.candidateRecord["Task"].split()) - #print pkg.candidateRecord + if not pkg.candidateRecord: + continue + if pkg.candidateRecord.has_key("Task"): + print "Pkg %s is part of '%s'" % (pkg.name, pkg.candidateRecord["Task"].split()) + #print pkg.candidateRecord diff --git a/doc/examples/sources.py b/doc/examples/sources.py index b48c0ba5..8d807f4c 100644 --- a/doc/examples/sources.py +++ b/doc/examples/sources.py @@ -10,6 +10,6 @@ apt_pkg.init() sources = apt_pkg.GetPkgSrcRecords() sources.Restart() while sources.Lookup('hello'): - print sources.Package, sources.Version, sources.Maintainer, sources.Section, `sources.Binaries` - print sources.Files - print sources.Index.ArchiveURI(sources.Files[0][2]) + print sources.Package, sources.Version, sources.Maintainer, sources.Section, `sources.Binaries` + print sources.Files + print sources.Index.ArchiveURI(sources.Files[0][2]) diff --git a/doc/examples/tagfile.py b/doc/examples/tagfile.py index 653c0a71..aeba34d2 100755 --- a/doc/examples/tagfile.py +++ b/doc/examples/tagfile.py @@ -4,5 +4,5 @@ import apt_pkg Parse = apt_pkg.ParseTagFile(open("/var/lib/dpkg/status","r")); while Parse.Step() == 1: - print Parse.Section.get("Package"); - print apt_pkg.ParseDepends(Parse.Section.get("Depends","")); + print Parse.Section.get("Package"); + print apt_pkg.ParseDepends(Parse.Section.get("Depends","")); diff --git a/doc/examples/versiontest.py b/doc/examples/versiontest.py index c4e5f44d..8f18f6c8 100755 --- a/doc/examples/versiontest.py +++ b/doc/examples/versiontest.py @@ -7,30 +7,30 @@ apt_pkg.InitSystem(); TestFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv); if len(TestFile) != 1: - print "Must have exactly 1 file name"; - sys.exit(0); + print "Must have exactly 1 file name"; + sys.exit(0); # Go over the file.. List = open(TestFile[0],"r"); CurLine = 0; while(1): - Line = List.readline(); - CurLine = CurLine + 1; - if Line == "": - break; - Line = string.strip(Line); - if len(Line) == 0 or Line[0] == '#': - continue; + Line = List.readline(); + CurLine = CurLine + 1; + if Line == "": + break; + Line = string.strip(Line); + if len(Line) == 0 or Line[0] == '#': + continue; - Split = re.split("[ \n]",Line); + Split = re.split("[ \n]",Line); - # Check forward - if apt_pkg.VersionCompare(Split[0],Split[1]) != int(Split[2]): - print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, - Split[0],Split[1],apt_pkg.VersionCompare(Split[0],Split[1]), - int(Split[2])); - # Check reverse - if apt_pkg.VersionCompare(Split[1],Split[0]) != -1*int(Split[2]): - print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, - Split[1],Split[0],apt_pkg.VersionCompare(Split[1],Split[0]), - -1*int(Split[2])); + # Check forward + if apt_pkg.VersionCompare(Split[0],Split[1]) != int(Split[2]): + print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, + Split[0],Split[1],apt_pkg.VersionCompare(Split[0],Split[1]), + int(Split[2])); + # Check reverse + if apt_pkg.VersionCompare(Split[1],Split[0]) != -1*int(Split[2]): + print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, + Split[1],Split[0],apt_pkg.VersionCompare(Split[1],Split[0]), + -1*int(Split[2])); diff --git a/tests/cache.py b/tests/cache.py index 34535e68..24732578 100644 --- a/tests/cache.py +++ b/tests/cache.py @@ -8,44 +8,44 @@ import sys def main(): - apt_pkg.init() - cache = apt_pkg.GetCache() - depcache = apt_pkg.GetDepCache(cache) - depcache.Init() - i=0 - all=cache.PackageCount - print "Running Cache test on all packages:" - # first, get all pkgs - for pkg in cache.Packages: - i += 1 - x = pkg.Name - # then get each version - for ver in pkg.VersionList: - # get some version information - a = ver.FileList - b = ver.VerStr - c = ver.Arch - d = ver.DependsListStr - dl = ver.DependsList - # get all dependencies (a dict of string->list, - # e.g. "depends:" -> [ver1,ver2,..] - for dep in dl.keys(): - # get the list of each dependency object - for depVerList in dl[dep]: - for z in depVerList: - # get all TargetVersions of - # the dependency object - for j in z.AllTargets(): - f = j.FileList - g = ver.VerStr - h = ver.Arch - k = ver.DependsListStr - j = ver.DependsList - pass + apt_pkg.init() + cache = apt_pkg.GetCache() + depcache = apt_pkg.GetDepCache(cache) + depcache.Init() + i=0 + all=cache.PackageCount + print "Running Cache test on all packages:" + # first, get all pkgs + for pkg in cache.Packages: + i += 1 + x = pkg.Name + # then get each version + for ver in pkg.VersionList: + # get some version information + a = ver.FileList + b = ver.VerStr + c = ver.Arch + d = ver.DependsListStr + dl = ver.DependsList + # get all dependencies (a dict of string->list, + # e.g. "depends:" -> [ver1,ver2,..] + for dep in dl.keys(): + # get the list of each dependency object + for depVerList in dl[dep]: + for z in depVerList: + # get all TargetVersions of + # the dependency object + for j in z.AllTargets(): + f = j.FileList + g = ver.VerStr + h = ver.Arch + k = ver.DependsListStr + j = ver.DependsList + pass - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), if __name__ == "__main__": - main() - sys.exit(0) + main() + sys.exit(0) diff --git a/tests/depcache.py b/tests/depcache.py index 635fea14..32c510f0 100644 --- a/tests/depcache.py +++ b/tests/depcache.py @@ -8,46 +8,46 @@ import sys def main(): - apt_pkg.init() - cache = apt_pkg.GetCache() - depcache = apt_pkg.GetDepCache(cache) - depcache.Init() - i=0 - all=cache.PackageCount - print "Running DepCache test on all packages" - print "(trying to install each and then mark it keep again):" - # first, get all pkgs - for pkg in cache.Packages: - i += 1 - x = pkg.Name - # then get each version - ver =depcache.GetCandidateVer(pkg) - if ver != None: - depcache.MarkInstall(pkg) - if depcache.InstCount == 0: - if depcache.IsUpgradable(pkg): - print "Error marking %s for install" % x - for p in cache.Packages: - if depcache.MarkedInstall(p): - depcache.MarkKeep(p) - if depcache.InstCount != 0: - print "Error undoing the selection for %s (InstCount: %s)" % (x,depcache.InstCount) - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + apt_pkg.init() + cache = apt_pkg.GetCache() + depcache = apt_pkg.GetDepCache(cache) + depcache.Init() + i=0 + all=cache.PackageCount + print "Running DepCache test on all packages" + print "(trying to install each and then mark it keep again):" + # first, get all pkgs + for pkg in cache.Packages: + i += 1 + x = pkg.Name + # then get each version + ver =depcache.GetCandidateVer(pkg) + if ver != None: + depcache.MarkInstall(pkg) + if depcache.InstCount == 0: + if depcache.IsUpgradable(pkg): + print "Error marking %s for install" % x + for p in cache.Packages: + if depcache.MarkedInstall(p): + depcache.MarkKeep(p) + if depcache.InstCount != 0: + print "Error undoing the selection for %s (InstCount: %s)" % (x,depcache.InstCount) + print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), - print - print "Trying Upgrade:" - depcache.Upgrade() - print "To install: %s " % depcache.InstCount - print "To remove: %s " % depcache.DelCount - print "Kept back: %s " % depcache.KeepCount + print + print "Trying Upgrade:" + depcache.Upgrade() + print "To install: %s " % depcache.InstCount + print "To remove: %s " % depcache.DelCount + print "Kept back: %s " % depcache.KeepCount - print "Trying DistUpgrade:" - depcache.Upgrade(True) - print "To install: %s " % depcache.InstCount - print "To remove: %s " % depcache.DelCount - print "Kept back: %s " % depcache.KeepCount + print "Trying DistUpgrade:" + depcache.Upgrade(True) + print "To install: %s " % depcache.InstCount + print "To remove: %s " % depcache.DelCount + print "Kept back: %s " % depcache.KeepCount if __name__ == "__main__": - main() - sys.exit(0) + main() + sys.exit(0) diff --git a/tests/lock.py b/tests/lock.py index a3d962d7..aeab804b 100644 --- a/tests/lock.py +++ b/tests/lock.py @@ -21,7 +21,7 @@ if __name__ == "__main__": apt_pkg.PkgSystemLock() except SystemError, s: print "Can't get lock: (error text:\n%s)" % s - sys.exit(0) + sys.exit(0) apt_pkg.PkgSystemUnLock() @@ -35,7 +35,7 @@ if __name__ == "__main__": # child fd = apt_pkg.GetLock(lock,False) print "Lockfile fd (child): %s" % fd - sys.exit(0) + sys.exit(0) # try to get lock with error flag pid = os.fork() @@ -43,4 +43,4 @@ if __name__ == "__main__": # child fd = apt_pkg.GetLock(lock,True) print "Lockfile fd (child): %s" % fd - sys.exit(0) + sys.exit(0) diff --git a/tests/memleak.py b/tests/memleak.py index 58a2f886..6eece9d4 100755 --- a/tests/memleak.py +++ b/tests/memleak.py @@ -11,36 +11,36 @@ cache = apt.Cache() # memleak for i in range(100): - cache.open(None) - print cache["apt"].name - time.sleep(1) - gc.collect() - f = open("%s" % i,"w") - for obj in gc.get_objects(): - f.write("%s\n" % str(obj)) - f.close() + cache.open(None) + print cache["apt"].name + time.sleep(1) + gc.collect() + f = open("%s" % i,"w") + for obj in gc.get_objects(): + f.write("%s\n" % str(obj)) + f.close() # memleak #for i in range(100): -# cache = apt.Cache() -# time.sleep(1) -# cache = None -# gc.collect() +# cache = apt.Cache() +# time.sleep(1) +# cache = None +# gc.collect() # no memleak, but more or less the apt.Cache.open() code for i in range(100): - cache = apt_pkg.GetCache() - depcache = apt_pkg.GetDepCache(cache) - records = apt_pkg.GetPkgRecords(cache) - list = apt_pkg.GetPkgSourceList() - list.ReadMainList() - dict = {} - for pkg in cache.Packages: - if len(pkg.VersionList) > 0: - dict[pkg.Name] = apt.Package(cache,depcache, - records, list, None, pkg) - - print cache["apt"] - time.sleep(1) - - gc.collect() + cache = apt_pkg.GetCache() + depcache = apt_pkg.GetDepCache(cache) + records = apt_pkg.GetPkgRecords(cache) + list = apt_pkg.GetPkgSourceList() + list.ReadMainList() + dict = {} + for pkg in cache.Packages: + if len(pkg.VersionList) > 0: + dict[pkg.Name] = apt.Package(cache,depcache, + records, list, None, pkg) + + print cache["apt"] + time.sleep(1) + + gc.collect() diff --git a/tests/pkgproblemresolver.py b/tests/pkgproblemresolver.py index 546e2f16..82186d40 100644 --- a/tests/pkgproblemresolver.py +++ b/tests/pkgproblemresolver.py @@ -8,63 +8,63 @@ import sys def main(): - apt_pkg.init() - cache = apt_pkg.GetCache() - depcache = apt_pkg.GetDepCache(cache) - depcache.Init() - i=0 - all=cache.PackageCount - print "Running DepCache test on all packages" - print "(trying to install each and then mark it keep again):" - # first, get all pkgs - for pkg in cache.Packages: - i += 1 - x = pkg.Name - # then get each version - ver =depcache.GetCandidateVer(pkg) - if ver != None: - depcache.MarkInstall(pkg) - if depcache.BrokenCount > 0: - fixer = apt_pkg.GetPkgProblemResolver(depcache) - fixer.Clear(pkg) - fixer.Protect(pkg) - # we first try to resolve the problem - # with the package that should be installed - # protected - try: - fixer.Resolve(True) - except SystemError: - # the pkg seems to be broken, the - # returns a exception - fixer.Clear(pkg) - fixer.Resolve(True) - if not depcache.MarkedInstall(pkg): - print "broken in archive: %s " % pkg.Name - fixer = None - if depcache.InstCount == 0: - if depcache.IsUpgradable(pkg): - print "Error marking %s for install" % x - for p in cache.Packages: - if depcache.MarkedInstall(p) or depcache.MarkedUpgrade(p): - depcache.MarkKeep(p) - if depcache.InstCount != 0: - print "Error undoing the selection for %s" % x - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + apt_pkg.init() + cache = apt_pkg.GetCache() + depcache = apt_pkg.GetDepCache(cache) + depcache.Init() + i=0 + all=cache.PackageCount + print "Running DepCache test on all packages" + print "(trying to install each and then mark it keep again):" + # first, get all pkgs + for pkg in cache.Packages: + i += 1 + x = pkg.Name + # then get each version + ver =depcache.GetCandidateVer(pkg) + if ver != None: + depcache.MarkInstall(pkg) + if depcache.BrokenCount > 0: + fixer = apt_pkg.GetPkgProblemResolver(depcache) + fixer.Clear(pkg) + fixer.Protect(pkg) + # we first try to resolve the problem + # with the package that should be installed + # protected + try: + fixer.Resolve(True) + except SystemError: + # the pkg seems to be broken, the + # returns a exception + fixer.Clear(pkg) + fixer.Resolve(True) + if not depcache.MarkedInstall(pkg): + print "broken in archive: %s " % pkg.Name + fixer = None + if depcache.InstCount == 0: + if depcache.IsUpgradable(pkg): + print "Error marking %s for install" % x + for p in cache.Packages: + if depcache.MarkedInstall(p) or depcache.MarkedUpgrade(p): + depcache.MarkKeep(p) + if depcache.InstCount != 0: + print "Error undoing the selection for %s" % x + print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), - print - print "Trying Upgrade:" - depcache.Upgrade() - print "To install: %s " % depcache.InstCount - print "To remove: %s " % depcache.DelCount - print "Kept back: %s " % depcache.KeepCount + print + print "Trying Upgrade:" + depcache.Upgrade() + print "To install: %s " % depcache.InstCount + print "To remove: %s " % depcache.DelCount + print "Kept back: %s " % depcache.KeepCount - print "Trying DistUpgrade:" - depcache.Upgrade(True) - print "To install: %s " % depcache.InstCount - print "To remove: %s " % depcache.DelCount - print "Kept back: %s " % depcache.KeepCount + print "Trying DistUpgrade:" + depcache.Upgrade(True) + print "To install: %s " % depcache.InstCount + print "To remove: %s " % depcache.DelCount + print "Kept back: %s " % depcache.KeepCount if __name__ == "__main__": - main() - sys.exit(0) + main() + sys.exit(0) diff --git a/tests/pkgrecords.py b/tests/pkgrecords.py index 308505f7..72096463 100644 --- a/tests/pkgrecords.py +++ b/tests/pkgrecords.py @@ -9,30 +9,30 @@ import sys def main(): - apt_pkg.init() - cache = apt_pkg.GetCache() - depcache = apt_pkg.GetDepCache(cache) - depcache.Init() - i=0 - print "Running PkgRecords test on all packages:" - for pkg in cache.Packages: - i += 1 - records = apt_pkg.GetPkgRecords(cache) - if len(pkg.VersionList) == 0: - #print "no available version, cruft" - continue - version = depcache.GetCandidateVer(pkg) - if not version: - continue - file, index = version.FileList.pop(0) - if records.Lookup((file,index)): - #print records.FileName - x = records.FileName - y = records.LongDesc - pass - print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + apt_pkg.init() + cache = apt_pkg.GetCache() + depcache = apt_pkg.GetDepCache(cache) + depcache.Init() + i=0 + print "Running PkgRecords test on all packages:" + for pkg in cache.Packages: + i += 1 + records = apt_pkg.GetPkgRecords(cache) + if len(pkg.VersionList) == 0: + #print "no available version, cruft" + continue + version = depcache.GetCandidateVer(pkg) + if not version: + continue + file, index = version.FileList.pop(0) + if records.Lookup((file,index)): + #print records.FileName + x = records.FileName + y = records.LongDesc + pass + print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), if __name__ == "__main__": - main() - sys.exit(0) + main() + sys.exit(0) diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py index 410140c8..3eb0fcab 100644 --- a/tests/pkgsrcrecords.py +++ b/tests/pkgsrcrecords.py @@ -9,19 +9,19 @@ import sys def main(): - apt_pkg.init() - cache = apt_pkg.GetCache() - i=0 - print "Running PkgSrcRecords test on all packages:" - for x in cache.Packages: - i += 1 - src = apt_pkg.GetPkgSrcRecords() - if src.Lookup(x.Name): - #print src.Package - pass - print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + apt_pkg.init() + cache = apt_pkg.GetCache() + i=0 + print "Running PkgSrcRecords test on all packages:" + for x in cache.Packages: + i += 1 + src = apt_pkg.GetPkgSrcRecords() + if src.Lookup(x.Name): + #print src.Package + pass + print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), if __name__ == "__main__": - main() - sys.exit(0) + main() + sys.exit(0) diff --git a/utils/get_ubuntu_mirrors.py b/utils/get_ubuntu_mirrors.py index 8482615d..ddd1e369 100755 --- a/utils/get_ubuntu_mirrors.py +++ b/utils/get_ubuntu_mirrors.py @@ -42,10 +42,10 @@ try: uri=urllib2.urlopen(req) p = re.compile('^.*((http|ftp):\/\/[A-Za-z0-9-.:\/_]+).*\n*$') for line in uri.readlines(): - if r"[[Anchor(dvd-images)]]" in line: - break - if "http://" in line or "ftp://" in line: - mirrors.append(p.sub(r"\1", line)) + if r"[[Anchor(dvd-images)]]" in line: + break + if "http://" in line or "ftp://" in line: + mirrors.append(p.sub(r"\1", line)) uri.close() except: print "Failed to download or extract the mirrors list!" -- cgit v1.2.3 From 0d12af28d4de2745f8831abf0224ceabec693b76 Mon Sep 17 00:00:00 2001 From: Ben Finney Date: Fri, 16 May 2008 18:04:01 +1000 Subject: Fix spaces adjacent to commas and operators, to conform with PEP 8. --- apt/cache.py | 4 ++-- apt/cdrom.py | 2 +- apt/debfile.py | 4 ++-- apt/package.py | 24 ++++++++++++------------ apt/progress.py | 30 +++++++++++++++--------------- aptsources/distinfo.py | 16 ++++++++-------- aptsources/distro.py | 2 +- aptsources/sourceslist.py | 28 ++++++++++++++-------------- doc/examples/acquire.py | 8 ++++---- doc/examples/all_deps.py | 4 ++-- doc/examples/cdrom.py | 2 +- doc/examples/config.py | 32 ++++++++++++++++---------------- doc/examples/configisc.py | 14 +++++++------- doc/examples/deb_inspect.py | 8 ++++---- doc/examples/desc.py | 6 +++--- doc/examples/gui-inst.py | 8 ++++---- doc/examples/indexfile.py | 2 +- doc/examples/inst.py | 4 ++-- doc/examples/metaindex.py | 6 +++--- doc/examples/print_uris.py | 2 +- doc/examples/progress.py | 4 ++-- doc/examples/tagfile.py | 6 +++--- doc/examples/update.py | 2 +- doc/examples/versiontest.py | 24 ++++++++++++------------ setup.py | 35 ++++++++++++++++++----------------- tests/apt-test.py | 2 +- tests/cache.py | 2 +- tests/depcache.py | 4 ++-- tests/lock.py | 6 +++--- tests/memleak.py | 4 ++-- tests/pkgproblemresolver.py | 2 +- tests/pkgrecords.py | 4 ++-- tests/pkgsrcrecords.py | 2 +- tests/refcount.py | 2 +- tests/test_aptsources.py | 18 +++++++++--------- 35 files changed, 162 insertions(+), 161 deletions(-) (limited to 'tests/pkgsrcrecords.py') diff --git a/apt/cache.py b/apt/cache.py index 35da7970..3c3a25e5 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -153,7 +153,7 @@ class Cache(object): if item.StatIdle: transient = True continue - errMsg += "Failed to fetch %s %s\n" % (item.DescURI,item.ErrorText) + errMsg += "Failed to fetch %s %s\n" % (item.DescURI, item.ErrorText) failed = True # we raise a exception if the download failed or it was cancelt @@ -371,7 +371,7 @@ if __name__ == "__main__": for d in ["/tmp/pytest", "/tmp/pytest/partial"]: if not os.path.exists(d): os.mkdir(d) - apt_pkg.Config.Set("Dir::Cache::Archives","/tmp/pytest") + apt_pkg.Config.Set("Dir::Cache::Archives", "/tmp/pytest") pm = apt_pkg.GetPackageManager(c._depcache) fetcher = apt_pkg.GetAcquire(apt.progress.TextFetchProgress()) c._fetchArchives(fetcher, pm) diff --git a/apt/cdrom.py b/apt/cdrom.py index 7f9b4776..d6f098db 100644 --- a/apt/cdrom.py +++ b/apt/cdrom.py @@ -18,7 +18,7 @@ class Cdrom(object): self._progress = progress # see if we have a alternative mountpoint if mountpoint is not None: - apt_pkg.Config.Set("Acquire::cdrom::mount",mountpoint) + apt_pkg.Config.Set("Acquire::cdrom::mount", mountpoint) # do not mess with mount points by default if nomount is True: apt_pkg.Config.Set("APT::CDROM::NoMount", "true") diff --git a/apt/debfile.py b/apt/debfile.py index 365847d7..1a64b833 100644 --- a/apt/debfile.py +++ b/apt/debfile.py @@ -34,9 +34,9 @@ class DebPackage(object): """ return the list of files in the deb """ files = [] - def extract_cb(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor): + def extract_cb(What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor): #print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\ - # % (What,Name,Link,Mode,UID,GID,Size, MTime, Major, Minor) + # % (What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor) files.append(Name) for member in self._supported_data_members: diff --git a/apt/package.py b/apt/package.py index b771c677..eef598af 100644 --- a/apt/package.py +++ b/apt/package.py @@ -102,7 +102,7 @@ class Package(object): print "No FileList for: %s " % self._pkg.Name() return False f, index = ver.FileList.pop(0) - self._records.Lookup((f,index)) + self._records.Lookup((f, index)) return True @@ -259,11 +259,11 @@ class Package(object): self._records.Lookup(desc_iter.FileList.pop(0)) desc = "" try: - s = unicode(self._records.LongDesc,"utf-8") - except UnicodeDecodeError,e: + s = unicode(self._records.LongDesc, "utf-8") + except UnicodeDecodeError, e: s = _("Invalid unicode in description for '%s' (%s). " - "Please report.") % (self.name,e) - for line in string.split(s,"\n"): + "Please report.") % (self.name, e) + for line in string.split(s, "\n"): tmp = string.strip(line) if tmp == ".": desc += "\n" @@ -380,7 +380,7 @@ class Package(object): def __repr__(self): return "component: '%s' archive: '%s' origin: '%s' label: '%s' " \ - "site '%s' isTrusted: '%s'"% (self.component, self.archive, + "site '%s' isTrusted: '%s'" % (self.component, self.archive, self.origin, self.label, self.site, self.trusted) @@ -389,7 +389,7 @@ class Package(object): if not ver: return None origins = [] - for (verFileIter,index) in ver.FileList: + for (verFileIter, index) in ver.FileList: origins.append(self.Origin(self, verFileIter)) return origins candidateOrigin = property(candidateOrigin) @@ -440,7 +440,7 @@ class Package(object): self.markInstall() else: # FIXME: we may want to throw a exception here - sys.stderr.write("MarkUpgrade() called on a non-upgrable pkg: '%s'\n" %self._pkg.Name) + sys.stderr.write("MarkUpgrade() called on a non-upgrable pkg: '%s'\n" % self._pkg.Name) def commit(self, fprogress, iprogress): """ commit the changes, need a FetchProgress and InstallProgress @@ -477,10 +477,10 @@ if __name__ == "__main__": print "PackageSize: %s " % pkg.packageSize print "Dependencies: %s" % pkg.installedDependencies for dep in pkg.candidateDependencies: - print ",".join(["%s (%s) (%s) (%s)" % (o.name,o.version,o.relation, o.preDepend) for o in dep.or_dependencies]) + print ",".join(["%s (%s) (%s) (%s)" % (o.name, o.version, o.relation, o.preDepend) for o in dep.or_dependencies]) print "arch: %s" % pkg.architecture print "homepage: %s" % pkg.homepage - print "rec: ",pkg.candidateRecord + print "rec: ", pkg.candidateRecord # now test install/remove import apt @@ -491,7 +491,7 @@ if __name__ == "__main__": for name in cache.keys(): pkg = cache[name] if pkg.isUpgradable: - if random.randint(0,1) == 1: + if random.randint(0, 1) == 1: pkg.markInstall(i) print "Broken: %s " % cache._depcache.BrokenCount print "InstCount: %s " % cache._depcache.InstCount @@ -502,7 +502,7 @@ if __name__ == "__main__": print "Randomly remove some packages with AutoFix: %s" % i cache = apt.Cache(progress) for name in cache.keys(): - if random.randint(0,1) == 1: + if random.randint(0, 1) == 1: try: cache[name].markDelete(i) except SystemError: diff --git a/apt/progress.py b/apt/progress.py index 6f72197e..dbad8050 100644 --- a/apt/progress.py +++ b/apt/progress.py @@ -53,7 +53,7 @@ class OpTextProgress(OpProgress): OpProgress.__init__(self) def update(self, percent): - sys.stdout.write("\r%s: %.2i " % (self.subOp,percent)) + sys.stdout.write("\r%s: %.2i " % (self.subOp, percent)) sys.stdout.flush() def done(self): @@ -71,11 +71,11 @@ class FetchProgress(object): dlFailed = 2 dlHit = 3 dlIgnored = 4 - dlStatusStr = {dlDone : "Done", - dlQueued : "Queued", - dlFailed : "Failed", - dlHit : "Hit", - dlIgnored : "Ignored"} + dlStatusStr = {dlDone: "Done", + dlQueued: "Queued", + dlFailed: "Failed", + dlHit: "Hit", + dlIgnored: "Ignored"} def __init__(self): self.eta = 0.0 @@ -134,7 +134,7 @@ class TextFetchProgress(FetchProgress): """ react to media change events """ res = True; print "Media change: please insert the disc labeled \ - '%s' in the drive '%s' and press enter" % (medium,drive) + '%s' in the drive '%s' and press enter" % (medium, drive) s = sys.stdin.readline() if(s == 'c' or s == 'C'): res = false; @@ -174,7 +174,7 @@ class InstallProgress(DumbInstallProgress): (read, write) = os.pipe() self.writefd=write self.statusfd = os.fdopen(read, "r") - fcntl.fcntl(self.statusfd.fileno(), fcntl.F_SETFL,os.O_NONBLOCK) + fcntl.fcntl(self.statusfd.fileno(), fcntl.F_SETFL, os.O_NONBLOCK) self.read = "" self.percent = 0.0 self.status = "" @@ -183,7 +183,7 @@ class InstallProgress(DumbInstallProgress): " called when a error is detected during the install " pass - def conffile(self,current,new): + def conffile(self, current, new): " called when a conffile question from dpkg is detected " pass @@ -195,8 +195,8 @@ class InstallProgress(DumbInstallProgress): if self.statusfd != None: try: while not self.read.endswith("\n"): - self.read += os.read(self.statusfd.fileno(),1) - except OSError, (errno,errstr): + self.read += os.read(self.statusfd.fileno(), 1) + except OSError, (errno, errstr): # resource temporarly unavailable is ignored if errno != EAGAIN and errnor != EWOULDBLOCK: print errstr @@ -204,14 +204,14 @@ class InstallProgress(DumbInstallProgress): s = self.read #print s try: - (status, pkg, percent, status_str) = string.split(s, ":",3) + (status, pkg, percent, status_str) = string.split(s, ":", 3) except ValueError, e: # silently ignore lines that can't be parsed self.read = "" return #print "percent: %s %s" % (pkg, float(percent)/100.0) if status == "pmerror": - self.error(pkg,status_str) + self.error(pkg, status_str) elif status == "pmconffile": # we get a string like this: # 'current-conffile' 'new-conffile' useredited distedited @@ -231,9 +231,9 @@ class InstallProgress(DumbInstallProgress): def waitChild(self): while True: - select.select([self.statusfd],[],[], self.selectTimeout) + select.select([self.statusfd], [], [], self.selectTimeout) self.updateInterface() - (pid, res) = os.waitpid(self.child_pid,os.WNOHANG) + (pid, res) = os.waitpid(self.child_pid, os.WNOHANG) if pid == self.child_pid: break return os.WEXITSTATUS(res) diff --git a/aptsources/distinfo.py b/aptsources/distinfo.py index 4a601be3..57266a49 100644 --- a/aptsources/distinfo.py +++ b/aptsources/distinfo.py @@ -139,8 +139,8 @@ class Repository: def split_url(url): ''' split a given URL into the protocoll, the hostname and the dir part ''' - return map(lambda a,b: a, re.split(":*\/+", url, maxsplit=2), - [None, None, None]) + return map(lambda a, b: a, re.split(":*\/+", url, maxsplit=2), + [None, None, None]) class DistInfo: @@ -167,17 +167,17 @@ class DistInfo: map_mirror_sets = {} dist_fname = "%s/%s.info" % (base_dir, dist) - dist_file = open (dist_fname) + dist_file = open(dist_fname) if not dist_file: return template = None component = None for line in dist_file: - tokens = line.split (':', 1) - if len (tokens) < 2: + tokens = line.split(':', 1) + if len(tokens) < 2: continue - field = tokens[0].strip () - value = tokens[1].strip () + field = tokens[0].strip() + value = tokens[1].strip() if field == 'ChangelogURI': self.changelogs_uri = _(value) elif field == 'MetaReleaseURI': @@ -251,7 +251,7 @@ class DistInfo: template = None if __name__ == "__main__": - d = DistInfo ("Ubuntu", "/usr/share/python-apt/templates") + d = DistInfo("Ubuntu", "/usr/share/python-apt/templates") print d.changelogs_uri for template in d.templates: print "\nSuite: %s" % template.name diff --git a/aptsources/distro.py b/aptsources/distro.py index 962c57bc..f39f6748 100644 --- a/aptsources/distro.py +++ b/aptsources/distro.py @@ -108,7 +108,7 @@ class Distribution: elif source.uri.startswith("cdrom:") and \ source.disabled == True: self.cdrom_sources.append(source) - elif source.type == self.binary_type and \ + elif source.type == self.binary_type and \ source.disabled == False: self.main_sources.append(source) comps.extend(source.comps) diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py index 57be2a68..dfc0ccb6 100644 --- a/aptsources/sourceslist.py +++ b/aptsources/sourceslist.py @@ -78,7 +78,7 @@ def uniq(s): class SourceEntry: """ single sources.list entry """ - def __init__(self, line,file=None): + def __init__(self, line, file=None): self.invalid = False # is the source entry valid self.disabled = False # is it disabled ('#' in front) self.type = "" # what type (deb, deb-src) @@ -131,10 +131,10 @@ class SourceEntry: pieces.append(tmp) return pieces - def parse(self,line): + def parse(self, line): """ parse a given sources.list (textual) line and break it up into the field we have """ - line = string.strip(self.line) + line = string.strip(self.line) #print line # check if the source is enabled/disabled if line == "" or line == "#": # empty line @@ -295,11 +295,11 @@ class SourcesList: source.disabled = False return source # there isn't any matching source, so create a new line and parse it - line = "%s %s %s" % (type,uri,dist) + line = "%s %s %s" % (type, uri, dist) for c in comps: line = line + " " + c; if comment != "": - line = "%s #%s\n" %(line,comment) + line = "%s #%s\n" % (line, comment) line = line + "\n" new_entry = SourceEntry(line) if file != None: @@ -317,13 +317,13 @@ class SourcesList: dir = apt_pkg.Config.FindDir("Dir::Etc") file = apt_pkg.Config.Find("Dir::Etc::sourcelist") if os.path.exists(dir+file+backup_ext) and \ - os.path.exists(dir+file): - shutil.copy(dir+file+backup_ext,dir+file) + os.path.exists(dir+file): + shutil.copy(dir+file+backup_ext, dir+file) # now sources.list.d partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts") for file in glob.glob("%s/*.list" % partsdir): if os.path.exists(file+backup_ext): - shutil.copy(file+backup_ext,file) + shutil.copy(file+backup_ext, file) def backup(self, backup_ext=None): """ make a backup of the current source files, if no backup extension @@ -333,16 +333,16 @@ class SourcesList: backup_ext = time.strftime("%y%m%d.%H%M") for source in self.list: if not source.file in already_backuped and os.path.exists(source.file): - shutil.copy(source.file,"%s%s" % (source.file,backup_ext)) + shutil.copy(source.file, "%s%s" % (source.file, backup_ext)) return backup_ext - def load(self,file): + def load(self, file): """ (re)load the current sources """ try: f = open(file, "r") lines = f.readlines() for line in lines: - source = SourceEntry(line,file) + source = SourceEntry(line, file) self.list.append(source) except: print "could not open file '%s'" % file @@ -359,11 +359,11 @@ class SourcesList: header = ("## See sources.list(5) for more information, especialy\n" "# Remember that you can only use http, ftp or file URIs\n" "# CDROMs are managed through the apt-cdrom tool.\n") - open(path,"w").write(header) + open(path, "w").write(header) return for source in self.list: if not files.has_key(source.file): - files[source.file]=open(source.file,"w") + files[source.file] = open(source.file, "w") files[source.file].write(source.str()) for f in files: files[f].close() @@ -406,7 +406,7 @@ class SourceEntryMatcher: f = os.path.basename(f) i = f.find(".info") f = f[0:i] - dist = DistInfo(f,base_dir=matcherPath) + dist = DistInfo(f, base_dir=matcherPath) for template in dist.templates: if template.match_uri != None: self.templates.append(template) diff --git a/doc/examples/acquire.py b/doc/examples/acquire.py index 7bf7d646..e42a9401 100644 --- a/doc/examples/acquire.py +++ b/doc/examples/acquire.py @@ -20,7 +20,7 @@ def get_file(fetcher, uri, destFile): os.chdir(cwd) return False filename = os.path.basename(uri) - os.rename(dir+"/"+filename,destFile) + os.rename(dir+"/"+filename, destFile) # cleanup os.rmdir(dir) os.chdir(cwd) @@ -44,7 +44,7 @@ depcache.Upgrade(True) progress = apt.progress.TextFetchProgress() fetcher = apt_pkg.GetAcquire(progress) pm = apt_pkg.GetPackageManager(depcache) -pm.GetArchives(fetcher,list,recs) +pm.GetArchives(fetcher, list, recs) print "%s (%s)" % (apt_pkg.SizeToStr(fetcher.FetchNeeded), fetcher.FetchNeeded) actiongroup = apt_pkg.GetPkgActionGroup(depcache) for pkg in cache.Packages: @@ -55,7 +55,7 @@ try: os.mkdir("/tmp/pyapt-test/partial") except OSError: pass -apt_pkg.Config.Set("Dir::Cache::archives","/tmp/pyapt-test") +apt_pkg.Config.Set("Dir::Cache::archives", "/tmp/pyapt-test") pkg = cache["3ddesktop"] depcache.MarkInstall(pkg) @@ -70,7 +70,7 @@ print fetcher get_file(fetcher, "ftp://ftp.debian.org/debian/dists/README", "/tmp/lala") -pm.GetArchives(fetcher,list,recs) +pm.GetArchives(fetcher, list, recs) for item in fetcher.Items: print item diff --git a/doc/examples/all_deps.py b/doc/examples/all_deps.py index f4f1741c..37222463 100644 --- a/doc/examples/all_deps.py +++ b/doc/examples/all_deps.py @@ -26,9 +26,9 @@ pkg = c[pkgname] deps = set() -deps = dependencies(c,pkg, deps, "Depends") +deps = dependencies(c, pkg, deps, "Depends") print " ".join(deps) preDeps = set() -preDeps = dependencies(c,pkg, preDeps, "PreDepends") +preDeps = dependencies(c, pkg, preDeps, "PreDepends") print " ".join(preDeps) diff --git a/doc/examples/cdrom.py b/doc/examples/cdrom.py index e54eb763..289b10f1 100644 --- a/doc/examples/cdrom.py +++ b/doc/examples/cdrom.py @@ -16,7 +16,7 @@ print cdrom progress = CdromProgress() -(res,ident) = cdrom.Ident(progress) +(res, ident) = cdrom.Ident(progress) print "ident result is: %s (%s) " % (res, ident) apt_pkg.Config.Set("APT::CDROM::Rename", "True") diff --git a/doc/examples/config.py b/doc/examples/config.py index 337899f0..cd7bcae0 100755 --- a/doc/examples/config.py +++ b/doc/examples/config.py @@ -12,7 +12,7 @@ # This shows how to use the system for configuration and option control. # The other varient is for ISC object config files. See configisc.py. -import apt_pkg,sys,posixpath; +import apt_pkg, sys, posixpath # Create a new empty Configuration object - there is also the system global # configuration object apt_pkg.Config which is used interally by apt-pkg @@ -20,30 +20,30 @@ import apt_pkg,sys,posixpath; # whenever possible.. Cnf = apt_pkg.newConfiguration(); -print "Command line is",sys.argv +print "Command line is", sys.argv # Load the default configuration file, InitConfig() does this better.. -Cnf.Set("config-file","/etc/apt/apt.conf"); # or Cnf["config-file"] = ".."; +Cnf.Set("config-file", "/etc/apt/apt.conf") # or Cnf["config-file"] = ".." if posixpath.exists(Cnf.FindFile("config-file")): - apt_pkg.ReadConfigFile(Cnf,"/etc/apt/apt.conf"); + apt_pkg.ReadConfigFile(Cnf, "/etc/apt/apt.conf") # Merge the command line arguments into the configuration space -Arguments = [('h',"help","help"), - ('v',"version","version"), - ('q',"quiet","quiet","IntLevel"), - ('c',"config-file","","ConfigFile"), - ('o',"option","","ArbItem")] -print "FileNames",apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); +Arguments = [('h', "help", "help"), + ('v', "version", "version"), + ('q', "quiet", "quiet", "IntLevel"), + ('c', "config-file", "", "ConfigFile"), + ('o', "option", "", "ArbItem")] +print "FileNames", apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv) -print "Quiet level selected is",Cnf.FindI("quiet",0); +print "Quiet level selected is", Cnf.FindI("quiet", 0) # Do some stuff with it -if Cnf.FindB("version",0) == 1: +if Cnf.FindB("version", 0) == 1: print "Version selected - 1.1"; -if Cnf.FindB("help",0) == 1: - print apt_pkg.Package,apt_pkg.Version,"for",apt_pkg.Architecture, \ - "compiled on",apt_pkg.Date,apt_pkg.Time; +if Cnf.FindB("help", 0) == 1: + print apt_pkg.Package, apt_pkg.Version, "for", apt_pkg.Architecture, \ + "compiled on", apt_pkg.Date, apt_pkg.Time print "Hi, I am the help text for this program"; sys.exit(0); @@ -52,4 +52,4 @@ print "No help for you, try -h"; # Print the configuration space print "The Configuration space looks like:"; for I in Cnf.keys(): - print "%s \"%s\";"%(I,Cnf[I]); + print "%s \"%s\";" % (I, Cnf[I]) diff --git a/doc/examples/configisc.py b/doc/examples/configisc.py index 45a9c7f6..4d0d33d4 100755 --- a/doc/examples/configisc.py +++ b/doc/examples/configisc.py @@ -8,32 +8,32 @@ # doc/examples/ftp-archive.conf # or a bind8 config file.. -import apt_pkg,sys,posixpath; +import apt_pkg, sys, posixpath -ConfigFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv); +ConfigFile = apt_pkg.ParseCommandLine(apt_pkg.Config, [], sys.argv) if len(ConfigFile) != 1: print "Must have exactly 1 file name"; sys.exit(0); Cnf = apt_pkg.newConfiguration(); -apt_pkg.ReadConfigFileISC(Cnf,ConfigFile[0]); +apt_pkg.ReadConfigFileISC(Cnf, ConfigFile[0]) # Print the configuration space #print "The Configuration space looks like:"; #for I in Cnf.keys(): -# print "%s \"%s\";"%(I,Cnf[I]); +# print "%s \"%s\";" % (I, Cnf[I]) # bind8 config file.. if Cnf.has_key("Zone"): - print "Zones: ",Cnf.SubTree("zone").List(); + print "Zones: ", Cnf.SubTree("zone").List() for I in Cnf.List("zone"): SubCnf = Cnf.SubTree(I); if SubCnf.Find("type") == "slave": - print "Masters for %s: %s"%(SubCnf.MyTag(),SubCnf.ValueList("masters")); + print "Masters for %s: %s" % (SubCnf.MyTag(), SubCnf.ValueList("masters")) else: print "Tree definitions:"; for I in Cnf.List("tree"): SubCnf = Cnf.SubTree(I); # This could use Find which would eliminate the possibility of exceptions. - print "Subtree %s with sections '%s' and architectures '%s'"%(SubCnf.MyTag(),SubCnf["Sections"],SubCnf["Architectures"]); + print "Subtree %s with sections '%s' and architectures '%s'" % (SubCnf.MyTag(), SubCnf["Sections"], SubCnf["Architectures"]) diff --git a/doc/examples/deb_inspect.py b/doc/examples/deb_inspect.py index 68219d6d..f3e5ae2b 100755 --- a/doc/examples/deb_inspect.py +++ b/doc/examples/deb_inspect.py @@ -7,11 +7,11 @@ import sys import os.path -def Callback(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor): +def Callback(What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor): """ callback for debExtract """ - print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\ - % (What,Name,Link,Mode,UID,GID,Size, MTime, Major, Minor); + print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u" \ + % (What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor) if __name__ == "__main__": @@ -40,7 +40,7 @@ if __name__ == "__main__": print "extracting archive" dir = "/tmp/deb" os.mkdir(dir) - apt_inst.debExtractArchive(open(file),dir) + apt_inst.debExtractArchive(open(file), dir) def visit(arg, dirname, names): print "%s/" % dirname diff --git a/doc/examples/desc.py b/doc/examples/desc.py index 1d43f2f9..f47517cf 100644 --- a/doc/examples/desc.py +++ b/doc/examples/desc.py @@ -3,7 +3,7 @@ import apt_pkg apt_pkg.init() -apt_pkg.Config.Set("APT::Acquire::Translation","de") +apt_pkg.Config.Set("APT::Acquire::Translation", "de") cache = apt_pkg.GetCache() depcache = apt_pkg.GetDepCache(cache) @@ -15,10 +15,10 @@ print cand desc = cand.TranslatedDescription print desc print desc.FileList -(f,index) = desc.FileList.pop(0) +(f, index) = desc.FileList.pop(0) records = apt_pkg.GetPkgRecords(cache) -records.Lookup((f,index)) +records.Lookup((f, index)) desc = records.LongDesc print len(desc) print desc diff --git a/doc/examples/gui-inst.py b/doc/examples/gui-inst.py index edaec455..61db63f8 100755 --- a/doc/examples/gui-inst.py +++ b/doc/examples/gui-inst.py @@ -32,7 +32,7 @@ class GuiFetchProgress(gtk.Window, FetchProgress): self.label.show() self.vbox.pack_start(self.progress) self.vbox.pack_start(self.label) - self.resize(300,100) + self.resize(300, 100) def start(self): print "start" @@ -64,15 +64,15 @@ class TermInstallProgress(InstallProgress, gtk.Window): self.term.show() # check for the child self.reaper = vte.reaper_get() - self.reaper.connect("child-exited",self.child_exited) + self.reaper.connect("child-exited", self.child_exited) self.finished = False box.pack_start(self.term) self.progressbar = gtk.ProgressBar() self.progressbar.show() box.pack_start(self.progressbar) - def child_exited(self,term, pid, status): - print "child_exited: %s %s %s %s" % (self,term,pid,status) + def child_exited(self, term, pid, status): + print "child_exited: %s %s %s %s" % (self, term, pid, status) self.apt_status = posix.WEXITSTATUS(status) self.finished = True diff --git a/doc/examples/indexfile.py b/doc/examples/indexfile.py index d383fd61..22d0b635 100644 --- a/doc/examples/indexfile.py +++ b/doc/examples/indexfile.py @@ -10,7 +10,7 @@ cache = apt_pkg.GetCache() depcache = apt_pkg.GetDepCache(cache) pkg = cache["libimlib2"] cand = depcache.GetCandidateVer(pkg) -for (f,i) in cand.FileList: +for (f, i) in cand.FileList: index = sources.FindIndex(f) print index if index: diff --git a/doc/examples/inst.py b/doc/examples/inst.py index b37ab4cd..723038c1 100644 --- a/doc/examples/inst.py +++ b/doc/examples/inst.py @@ -23,8 +23,8 @@ class TextInstallProgress(InstallProgress): sys.stdout.flush() self.last = self.percent - def conffile(self,current,new): - print "conffile prompt: %s %s" % (current,new) + def conffile(self, current, new): + print "conffile prompt: %s %s" % (current, new) def error(self, errorstr): print "got dpkg error: '%s'" % errorstr diff --git a/doc/examples/metaindex.py b/doc/examples/metaindex.py index 1bce0dba..f00a7e01 100644 --- a/doc/examples/metaindex.py +++ b/doc/examples/metaindex.py @@ -9,7 +9,7 @@ sources.ReadMainList() for metaindex in sources.List: print metaindex - print "URI: ",metaindex.URI - print "Dist: ",metaindex.Dist - print "IndexFiles: ","\n".join([str(i) for i in metaindex.IndexFiles]) + print "URI: ", metaindex.URI + print "Dist: ", metaindex.Dist + print "IndexFiles: ", "\n".join([str(i) for i in metaindex.IndexFiles]) print diff --git a/doc/examples/print_uris.py b/doc/examples/print_uris.py index 3c93a668..3b678e83 100755 --- a/doc/examples/print_uris.py +++ b/doc/examples/print_uris.py @@ -15,7 +15,7 @@ for pkg in upgradable: pkg._lookupRecord(True) path = apt_pkg.ParseSection(pkg._records.Record)["Filename"] cand = pkg._depcache.GetCandidateVer(pkg._pkg) - for (packagefile,i) in cand.FileList: + for (packagefile, i) in cand.FileList: indexfile = cache._list.FindIndex(packagefile) if indexfile: uri = indexfile.ArchiveURI(path) diff --git a/doc/examples/progress.py b/doc/examples/progress.py index d8f00a52..70fc92f3 100644 --- a/doc/examples/progress.py +++ b/doc/examples/progress.py @@ -34,7 +34,7 @@ class TextFetchProgress(apt.FetchProgress): pass def updateStatus(self, uri, descr, shortDescr, status): - print "UpdateStatus: '%s' '%s' '%s' '%i'" % (uri,descr,shortDescr, status) + print "UpdateStatus: '%s' '%s' '%s' '%i'" % (uri, descr, shortDescr, status) def pulse(self): print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (SizeToStr(self.currentCPS), SizeToStr(self.currentBytes), SizeToStr(self.totalBytes), self.currentItems, self.totalItems) @@ -86,7 +86,7 @@ class TextCdromProgress(apt.CdromProgress): def changeCdrom(self): print "Please insert cdrom and press " - answer = sys.stdin.readline() + answer = sys.stdin.readline() return True diff --git a/doc/examples/tagfile.py b/doc/examples/tagfile.py index aeba34d2..4faf08ac 100755 --- a/doc/examples/tagfile.py +++ b/doc/examples/tagfile.py @@ -1,8 +1,8 @@ #!/usr/bin/env python import apt_pkg -Parse = apt_pkg.ParseTagFile(open("/var/lib/dpkg/status","r")); +Parse = apt_pkg.ParseTagFile(open("/var/lib/dpkg/status", "r")) while Parse.Step() == 1: - print Parse.Section.get("Package"); - print apt_pkg.ParseDepends(Parse.Section.get("Depends","")); + print Parse.Section.get("Package") + print apt_pkg.ParseDepends(Parse.Section.get("Depends", "")) diff --git a/doc/examples/update.py b/doc/examples/update.py index be7bb679..364fa1c9 100755 --- a/doc/examples/update.py +++ b/doc/examples/update.py @@ -9,5 +9,5 @@ if __name__ == "__main__": "touch /tmp/update-was-run") c = apt.Cache() res = c.update(apt.progress.TextFetchProgress()) - print "res: ",res + print "res: ", res assert(os.path.exists("/tmp/update-about-to-run")) diff --git a/doc/examples/versiontest.py b/doc/examples/versiontest.py index 8f18f6c8..29da3b8f 100755 --- a/doc/examples/versiontest.py +++ b/doc/examples/versiontest.py @@ -1,17 +1,17 @@ #!/usr/bin/python # This is a simple clone of tests/versiontest.cc -import apt_pkg,sys,re,string; +import apt_pkg, sys, re, string apt_pkg.InitConfig(); apt_pkg.InitSystem(); -TestFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv); +TestFile = apt_pkg.ParseCommandLine(apt_pkg.Config, [], sys.argv) if len(TestFile) != 1: print "Must have exactly 1 file name"; sys.exit(0); # Go over the file.. -List = open(TestFile[0],"r"); +List = open(TestFile[0], "r") CurLine = 0; while(1): Line = List.readline(); @@ -22,15 +22,15 @@ while(1): if len(Line) == 0 or Line[0] == '#': continue; - Split = re.split("[ \n]",Line); + Split = re.split("[ \n]", Line) # Check forward - if apt_pkg.VersionCompare(Split[0],Split[1]) != int(Split[2]): - print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, - Split[0],Split[1],apt_pkg.VersionCompare(Split[0],Split[1]), - int(Split[2])); + if apt_pkg.VersionCompare(Split[0], Split[1]) != int(Split[2]): + print "Comparision failed on line %u. '%s' ? '%s' %i != %i" % (CurLine, + Split[0], Split[1], apt_pkg.VersionCompare(Split[0], Split[1]), + int(Split[2])) # Check reverse - if apt_pkg.VersionCompare(Split[1],Split[0]) != -1*int(Split[2]): - print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine, - Split[1],Split[0],apt_pkg.VersionCompare(Split[1],Split[0]), - -1*int(Split[2])); + if apt_pkg.VersionCompare(Split[1], Split[0]) != -1 * int(Split[2]): + print "Comparision failed on line %u. '%s' ? '%s' %i != %i" % (CurLine, + Split[1], Split[0], apt_pkg.VersionCompare(Split[1], Split[0]), + -1 * int(Split[2])) diff --git a/setup.py b/setup.py index 72fada77..2c11d9d3 100755 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ apt_pkg = Extension("apt_pkg", files, libraries=["apt-pkg"]); # The apt_inst module files = map(lambda source: "python/"+source, string.split(parse_makefile("python/makefile")["APT_INST_SRC"])) -apt_inst = Extension("apt_inst", files, libraries=["apt-pkg","apt-inst"]); +apt_inst = Extension("apt_inst", files, libraries=["apt-pkg", "apt-inst"]); # Replace the leading _ that is used in the templates for translation templates = [] @@ -29,19 +29,20 @@ for template in glob.glob('data/templates/*.info.in'): source.close() build.close() -setup(name="python-apt", - version="0.6.17", - description="Python bindings for APT", - author="APT Development Team", - author_email="deity@lists.debian.org", - ext_modules=[apt_pkg,apt_inst], - packages=['apt', 'aptsources'], - data_files = [('share/python-apt/templates', - glob.glob('build/data/templates/*.info')), - ('share/python-apt/templates', - glob.glob('data/templates/*.mirrors'))], - cmdclass = { "build" : build_extra.build_extra, - "build_i18n" : build_i18n.build_i18n }, - license = 'GNU GPL', - platforms = 'posix' - ) +setup( + name="python-apt", + version="0.6.17", + description="Python bindings for APT", + author="APT Development Team", + author_email="deity@lists.debian.org", + ext_modules=[apt_pkg, apt_inst], + packages=['apt', 'aptsources'], + data_files=[('share/python-apt/templates', + glob.glob('build/data/templates/*.info')), + ('share/python-apt/templates', + glob.glob('data/templates/*.mirrors'))], + cmdclass={"build": build_extra.build_extra, + "build_i18n": build_i18n.build_i18n}, + license='GNU GPL', + platforms='posix', + ) diff --git a/tests/apt-test.py b/tests/apt-test.py index 6205cf60..fac2ff43 100644 --- a/tests/apt-test.py +++ b/tests/apt-test.py @@ -20,7 +20,7 @@ if __name__ == "__main__": cache = apt.Cache(progress) for name in cache.keys(): import random - if random.randint(0,1) == 1: + if random.randint(0, 1) == 1: cache[name].markDelete() print "Broken: %s " % cache._depcache.BrokenCount print "DelCount: %s " % cache._depcache.DelCount diff --git a/tests/cache.py b/tests/cache.py index 24732578..4e79eb3e 100644 --- a/tests/cache.py +++ b/tests/cache.py @@ -43,7 +43,7 @@ def main(): j = ver.DependsList pass - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)), if __name__ == "__main__": diff --git a/tests/depcache.py b/tests/depcache.py index 32c510f0..5ed54895 100644 --- a/tests/depcache.py +++ b/tests/depcache.py @@ -31,8 +31,8 @@ def main(): if depcache.MarkedInstall(p): depcache.MarkKeep(p) if depcache.InstCount != 0: - print "Error undoing the selection for %s (InstCount: %s)" % (x,depcache.InstCount) - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + print "Error undoing the selection for %s (InstCount: %s)" % (x, depcache.InstCount) + print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)), print print "Trying Upgrade:" diff --git a/tests/lock.py b/tests/lock.py index aeab804b..8bd5619f 100644 --- a/tests/lock.py +++ b/tests/lock.py @@ -26,14 +26,14 @@ if __name__ == "__main__": apt_pkg.PkgSystemUnLock() # low-level lock - fd = apt_pkg.GetLock(lock,True) + fd = apt_pkg.GetLock(lock, True) print "Lockfile fd: %s" % fd # try to get lock without error flag pid = os.fork() if pid == 0: # child - fd = apt_pkg.GetLock(lock,False) + fd = apt_pkg.GetLock(lock, False) print "Lockfile fd (child): %s" % fd sys.exit(0) @@ -41,6 +41,6 @@ if __name__ == "__main__": pid = os.fork() if pid == 0: # child - fd = apt_pkg.GetLock(lock,True) + fd = apt_pkg.GetLock(lock, True) print "Lockfile fd (child): %s" % fd sys.exit(0) diff --git a/tests/memleak.py b/tests/memleak.py index 6eece9d4..659091fc 100755 --- a/tests/memleak.py +++ b/tests/memleak.py @@ -15,7 +15,7 @@ for i in range(100): print cache["apt"].name time.sleep(1) gc.collect() - f = open("%s" % i,"w") + f = open("%s" % i, "w") for obj in gc.get_objects(): f.write("%s\n" % str(obj)) f.close() @@ -37,7 +37,7 @@ for i in range(100): dict = {} for pkg in cache.Packages: if len(pkg.VersionList) > 0: - dict[pkg.Name] = apt.Package(cache,depcache, + dict[pkg.Name] = apt.Package(cache, depcache, records, list, None, pkg) print cache["apt"] diff --git a/tests/pkgproblemresolver.py b/tests/pkgproblemresolver.py index 82186d40..7d5ae682 100644 --- a/tests/pkgproblemresolver.py +++ b/tests/pkgproblemresolver.py @@ -49,7 +49,7 @@ def main(): depcache.MarkKeep(p) if depcache.InstCount != 0: print "Error undoing the selection for %s" % x - print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)), + print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)), print print "Trying Upgrade:" diff --git a/tests/pkgrecords.py b/tests/pkgrecords.py index 72096463..e128237b 100644 --- a/tests/pkgrecords.py +++ b/tests/pkgrecords.py @@ -25,12 +25,12 @@ def main(): if not version: continue file, index = version.FileList.pop(0) - if records.Lookup((file,index)): + if records.Lookup((file, index)): #print records.FileName x = records.FileName y = records.LongDesc pass - print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + print "\r%i/%i=%.3f%% " % (i, cache.PackageCount, (float(i) / float(cache.PackageCount) * 100)), if __name__ == "__main__": diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py index 3eb0fcab..6e78858b 100644 --- a/tests/pkgsrcrecords.py +++ b/tests/pkgsrcrecords.py @@ -19,7 +19,7 @@ def main(): if src.Lookup(x.Name): #print src.Package pass - print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)), + print "\r%i/%i=%.3f%% " % (i, cache.PackageCount, (float(i) / float(cache.PackageCount) * 100)), if __name__ == "__main__": diff --git a/tests/refcount.py b/tests/refcount.py index f3230bd3..a29744ae 100755 --- a/tests/refcount.py +++ b/tests/refcount.py @@ -1,6 +1,6 @@ #!/usr/bin/python-dbg -from pprint import pprint,pformat +from pprint import pprint, pformat import apt import sys import gc diff --git a/tests/test_aptsources.py b/tests/test_aptsources.py index 08c8194a..9019aa2d 100644 --- a/tests/test_aptsources.py +++ b/tests/test_aptsources.py @@ -13,7 +13,7 @@ class TestAptSources(unittest.TestCase): unittest.TestCase.__init__(self, methodName) apt_pkg.init() apt_pkg.Config.Set("Dir::Etc", os.getcwd()) - apt_pkg.Config.Set("Dir::Etc::sourceparts",".") + apt_pkg.Config.Set("Dir::Etc::sourceparts", ".") def testIsMirror(self): self.assertTrue(aptsources.is_mirror("http://archive.ubuntu.com", @@ -22,7 +22,7 @@ class TestAptSources(unittest.TestCase): "http://ftp.debian.org")) def testSourcesListReading(self): - apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list") + apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list") sources = aptsources.SourcesList() self.assertEqual(len(sources.list), 6) # test load @@ -31,22 +31,22 @@ class TestAptSources(unittest.TestCase): self.assertEqual(len(sources.list), 6) def testSourcesListAdding(self): - apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list") + apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list") sources = aptsources.SourcesList() # test to add something that is already there (main) before = copy.deepcopy(sources) - sources.add("deb","http://de.archive.ubuntu.com/ubuntu/", + sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/", "edgy", ["main"]) self.assertTrue(sources.list == before.list) # test to add something that is already there (restricted) before = copy.deepcopy(sources) - sources.add("deb","http://de.archive.ubuntu.com/ubuntu/", + sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/", "edgy", ["restricted"]) self.assertTrue(sources.list == before.list) # test to add something new: multiverse - sources.add("deb","http://de.archive.ubuntu.com/ubuntu/", + sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/", "edgy", ["multiverse"]) found = False @@ -60,7 +60,7 @@ class TestAptSources(unittest.TestCase): # test to add something new: multiverse *and* # something that is already there before = copy.deepcopy(sources) - sources.add("deb","http://de.archive.ubuntu.com/ubuntu/", + sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/", "edgy", ["universe", "something"]) found_universe = 0 @@ -79,7 +79,7 @@ class TestAptSources(unittest.TestCase): self.assertEqual(found_universe, 1) def testDistribution(self): - apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list.testDistribution") + apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list.testDistribution") sources = aptsources.SourcesList() distro = aptsources.Distribution() distro.get_sources(sources) @@ -89,7 +89,7 @@ class TestAptSources(unittest.TestCase): if s.template: dist_templates.add(s.template.name) #print dist_templates - for d in ["edgy","edgy-security","edgy-updates","hoary","breezy", "breezy-backports"]: + for d in ["edgy", "edgy-security", "edgy-updates", "hoary", "breezy", "breezy-backports"]: self.assertTrue(d in dist_templates) # test enable comp = "restricted" -- cgit v1.2.3 From f264f62b7602f960bc35f3f68b1ed14c61bbfdd5 Mon Sep 17 00:00:00 2001 From: Ben Finney Date: Fri, 16 May 2008 20:12:36 +1000 Subject: Limit code lines to maximum 79 characters, to conform with PEP 8. --- apt/__init__.py | 3 +- apt/cache.py | 6 ++-- apt/debfile.py | 18 ++++++++---- apt/package.py | 16 ++++++++--- apt/progress.py | 71 ++++++++++++++++++++++++++--------------------- aptsources/distinfo.py | 10 +++++-- aptsources/distro.py | 33 ++++++++++++---------- aptsources/sourceslist.py | 26 ++++++++++------- doc/examples/action.py | 3 +- doc/examples/all_deps.py | 6 ++-- doc/examples/config.py | 3 +- doc/examples/configisc.py | 9 ++++-- doc/examples/depcache.py | 3 +- doc/examples/progress.py | 7 +++-- doc/examples/records.py | 3 +- doc/examples/sources.py | 3 +- tests/depcache.py | 3 +- tests/pkgrecords.py | 4 ++- tests/pkgsrcrecords.py | 4 ++- tests/test_aptsources.py | 7 +++-- 20 files changed, 149 insertions(+), 89 deletions(-) (limited to 'tests/pkgsrcrecords.py') diff --git a/apt/__init__.py b/apt/__init__.py index c6a2ff39..05407aff 100644 --- a/apt/__init__.py +++ b/apt/__init__.py @@ -6,7 +6,8 @@ import os # import some fancy classes from apt.package import Package from apt.cache import Cache -from apt.progress import OpProgress, FetchProgress, InstallProgress, CdromProgress +from apt.progress import ( + OpProgress, FetchProgress, InstallProgress, CdromProgress) from apt.cdrom import Cdrom from apt_pkg import SizeToStr, TimeToStr, VersionCompare diff --git a/apt/cache.py b/apt/cache.py index 3c3a25e5..a43bd5d7 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -51,7 +51,8 @@ class Cache(object): self._callbacks = {} if rootdir: apt_pkg.Config.Set("Dir", rootdir) - apt_pkg.Config.Set("Dir::State::status", rootdir + "/var/lib/dpkg/status") + apt_pkg.Config.Set( + "Dir::State::status", rootdir + "/var/lib/dpkg/status") self.open(progress) def _runCallbacks(self, name): @@ -153,7 +154,8 @@ class Cache(object): if item.StatIdle: transient = True continue - errMsg += "Failed to fetch %s %s\n" % (item.DescURI, item.ErrorText) + errMsg += "Failed to fetch %s %s\n" % ( + item.DescURI, item.ErrorText) failed = True # we raise a exception if the download failed or it was cancelt diff --git a/apt/debfile.py b/apt/debfile.py index 1a64b833..ca82bbdb 100644 --- a/apt/debfile.py +++ b/apt/debfile.py @@ -22,7 +22,9 @@ class DebPackage(object): " open given debfile " self.filename = filename if not arCheckMember(open(self.filename), "debian-binary"): - raise NoDebArchiveException, _("This is not a valid DEB archive, missing '%s' member" % "debian-binary") + raise NoDebArchiveException, _( + "This is not a valid DEB archive, missing '%s' member" + % "debian-binary") control = apt_inst.debExtractControl(open(self.filename)) self._sections = apt_pkg.ParseSection(control) self.pkgname = self._sections["Package"] @@ -34,18 +36,22 @@ class DebPackage(object): """ return the list of files in the deb """ files = [] - def extract_cb(What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor): - #print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\ - # % (What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor) + def extract_cb( + What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor): + #print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u" % ( + # What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor) files.append(Name) for member in self._supported_data_members: if arCheckMember(open(self.filename), member): try: - apt_inst.debExtract(open(self.filename), extract_cb, member) + apt_inst.debExtract( + open(self.filename), extract_cb, member) break except SystemError, e: - return [_("List of files for '%s'could not be read" % self.filename)] + return [_( + "List of files for '%s'could not be read" + % self.filename)] return files filelist = property(filelist) diff --git a/apt/package.py b/apt/package.py index 51986874..e51ab98f 100644 --- a/apt/package.py +++ b/apt/package.py @@ -96,7 +96,8 @@ class Package(object): # check if we found a version if ver == None: - #print "No version for: %s (Candidate: %s)" % (self._pkg.Name, UseCandidate) + #print "No version for: %s (Candidate: %s)" % ( + # self._pkg.Name, UseCandidate) return False if ver.FileList == None: @@ -150,7 +151,10 @@ class Package(object): for depVerList in depends[t]: base_deps = [] for depOr in depVerList: - base_deps.append(BaseDependency(depOr.TargetPkg.Name, depOr.CompType, depOr.TargetVer, (t == "PreDepends"))) + base_deps.append( + BaseDependency( + depOr.TargetPkg.Name, depOr.CompType, + depOr.TargetVer, (t == "PreDepends"))) depends_list.append(Dependency(base_deps)) return depends_list @@ -441,7 +445,9 @@ class Package(object): self.markInstall() else: # FIXME: we may want to throw a exception here - sys.stderr.write("MarkUpgrade() called on a non-upgrable pkg: '%s'\n" % self._pkg.Name) + sys.stderr.write( + "MarkUpgrade() called on a non-upgrable pkg: '%s'\n" + % self._pkg.Name) def commit(self, fprogress, iprogress): """ commit the changes, need a FetchProgress and InstallProgress @@ -478,7 +484,9 @@ if __name__ == "__main__": print "PackageSize: %s " % pkg.packageSize print "Dependencies: %s" % pkg.installedDependencies for dep in pkg.candidateDependencies: - print ",".join(["%s (%s) (%s) (%s)" % (o.name, o.version, o.relation, o.preDepend) for o in dep.or_dependencies]) + print ",".join( + ["%s (%s) (%s) (%s)" % (o.name, o.version, o.relation, o.preDepend) + for o in dep.or_dependencies]) print "arch: %s" % pkg.architecture print "homepage: %s" % pkg.homepage print "rec: ", pkg.candidateRecord diff --git a/apt/progress.py b/apt/progress.py index 1f2d4e7c..96112d73 100644 --- a/apt/progress.py +++ b/apt/progress.py @@ -95,9 +95,13 @@ class FetchProgress(object): """ called periodically (to update the gui), importend to return True to continue or False to cancel """ - self.percent = ((self.currentBytes + self.currentItems)*100.0)/float(self.totalBytes+self.totalItems) + self.percent = ( + ((self.currentBytes + self.currentItems) * 100.0) + / float(self.totalBytes+self.totalItems)) if self.currentCPS > 0: - self.eta = (self.totalBytes-self.currentBytes)/float(self.currentCPS) + self.eta = ( + (self.totalBytes - self.currentBytes) + / float(self.currentCPS)) return True def mediaChange(self, medium, drive): @@ -193,38 +197,41 @@ class InstallProgress(DumbInstallProgress): def updateInterface(self): if self.statusfd != None: + try: + while not self.read.endswith("\n"): + self.read += os.read(self.statusfd.fileno(), 1) + except OSError, (errno, errstr): + # resource temporarly unavailable is ignored + if errno != EAGAIN and errnor != EWOULDBLOCK: + print errstr + if self.read.endswith("\n"): + s = self.read + #print s try: - while not self.read.endswith("\n"): - self.read += os.read(self.statusfd.fileno(), 1) - except OSError, (errno, errstr): - # resource temporarly unavailable is ignored - if errno != EAGAIN and errnor != EWOULDBLOCK: - print errstr - if self.read.endswith("\n"): - s = self.read - #print s - try: - (status, pkg, percent, status_str) = string.split(s, ":", 3) - except ValueError, e: - # silently ignore lines that can't be parsed - self.read = "" - return - #print "percent: %s %s" % (pkg, float(percent)/100.0) - if status == "pmerror": - self.error(pkg, status_str) - elif status == "pmconffile": - # we get a string like this: - # 'current-conffile' 'new-conffile' useredited distedited - match = re.compile("\s*\'(.*)\'\s*\'(.*)\'.*").match(status_str) - if match: - self.conffile(match.group(1), match.group(2)) - elif status == "pmstatus": - if float(percent) != self.percent or \ - status_str != self.status: - self.statusChange(pkg, float(percent), status_str.strip()) - self.percent = float(percent) - self.status = string.strip(status_str) + (status, pkg, percent, status_str) = string.split( + s, ":", 3) + except ValueError, e: + # silently ignore lines that can't be parsed self.read = "" + return + #print "percent: %s %s" % (pkg, float(percent)/100.0) + if status == "pmerror": + self.error(pkg, status_str) + elif status == "pmconffile": + # we get a string like this: + # 'current-conffile' 'new-conffile' useredited distedited + match = re.compile( + "\s*\'(.*)\'\s*\'(.*)\'.*").match(status_str) + if match: + self.conffile(match.group(1), match.group(2)) + elif status == "pmstatus": + if float(percent) != self.percent or \ + status_str != self.status: + self.statusChange( + pkg, float(percent), status_str.strip()) + self.percent = float(percent) + self.status = string.strip(status_str) + self.read = "" def fork(self): return os.fork() diff --git a/aptsources/distinfo.py b/aptsources/distinfo.py index ce90faac..3bdbd653 100644 --- a/aptsources/distinfo.py +++ b/aptsources/distinfo.py @@ -154,7 +154,9 @@ class DistInfo: location = None match_loc = re.compile(r"^#LOC:(.+)$") - match_mirror_line = re.compile(r"^(#LOC:.+)|(((http)|(ftp)|(rsync)|(file)|(https))://[A-Za-z/\.:\-_]+)$") + match_mirror_line = re.compile( + r"^(#LOC:.+)|(((http)|(ftp)|(rsync)|(file)|(https))://" + r"[A-Za-z/\.:\-_]+)$") #match_mirror_line = re.compile(r".+") if not dist: @@ -185,7 +187,8 @@ class DistInfo: self.metarelease_uri = value elif field == 'Suite': if template: - if component and not template.has_component(component.name): + if component \ + and not template.has_component(component.name): template.components.append(component) component = None self.templates.append(template) @@ -231,7 +234,8 @@ class DistInfo: if mirror_set.has_key(hostname): mirror_set[hostname].add_repository(proto, dir) else: - mirror_set[hostname] = Mirror(proto, hostname, dir, location) + mirror_set[hostname] = Mirror( + proto, hostname, dir, location) map_mirror_sets[value] = mirror_set template.mirror_set = map_mirror_sets[value] elif field == 'Description': diff --git a/aptsources/distro.py b/aptsources/distro.py index 888e6e06..f631e285 100644 --- a/aptsources/distro.py +++ b/aptsources/distro.py @@ -82,7 +82,8 @@ class Distribution: if self.is_codename(template.name) and\ template.distribution == self.id: #print "yeah! found a template for %s" % self.description - #print template.description, template.base_uri, template.components + #print template.description, template.base_uri, \ + # template.components self.source_template = template break if self.source_template == None: @@ -117,15 +118,19 @@ class Distribution: elif source.type == self.binary_type and \ source.disabled == True: self.disabled_sources.append(source) - elif source.type == self.source_type and source.disabled == False: + elif source.type == self.source_type \ + and source.disabled == False: self.source_code_sources.append(source) - elif source.type == self.source_type and source.disabled == True: + elif source.type == self.source_type \ + and source.disabled == True: self.disabled_sources.append(source) if source.invalid == False and\ source.template in self.source_template.children: - if source.disabled == False and source.type == self.binary_type: + if source.disabled == False \ + and source.type == self.binary_type: self.child_sources.append(source) - elif source.disabled == False and source.type == self.source_type: + elif source.disabled == False \ + and source.type == self.source_type: self.source_code_sources.append(source) else: self.disabled_sources.append(source) @@ -240,11 +245,12 @@ class Distribution: self.nearest_server, False]) mirrors.append([_("Custom servers"), None, True]) for server in self.used_servers: + mirror_entry = [self._get_mirror_name(server), server, False] if compare_mirrors(server, self.nearest_server) or\ compare_mirrors(server, self.main_server): continue - elif not [self._get_mirror_name(server), server, False] in mirrors: - mirrors.append([self._get_mirror_name(server), server, False]) + elif not mirror_entry in mirrors: + mirrors.append(mirror_entry) return mirrors @@ -408,23 +414,22 @@ class DebianDistribution(Distribution): country = server[i+len("://ftp."):l] if self.countries.has_key(country): # TRANSLATORS: %s is a country - return _("Server for %s") % \ - gettext.dgettext("iso_3166", - self.countries[country].rstrip()).rstrip() + return _("Server for %s") % gettext.dgettext( + "iso_3166", self.countries[country].rstrip()).rstrip() else: return("%s" % server.rstrip("/ ")) def get_mirrors(self): - Distribution.get_mirrors(self, - mirror_template="http://ftp.%s.debian.org/debian/") + Distribution.get_mirrors( + self, mirror_template="http://ftp.%s.debian.org/debian/") class UbuntuDistribution(Distribution): ''' Class to support specific Ubuntu features ''' def get_mirrors(self): - Distribution.get_mirrors(self, - mirror_template="http://%s.archive.ubuntu.com/ubuntu/") + Distribution.get_mirrors( + self, mirror_template="http://%s.archive.ubuntu.com/ubuntu/") def get_distro(): diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py index 6eb69f6e..be17cd1f 100644 --- a/aptsources/sourceslist.py +++ b/aptsources/sourceslist.py @@ -84,11 +84,13 @@ class SourceEntry: self.type = "" # what type (deb, deb-src) self.uri = "" # base-uri self.dist = "" # distribution (dapper, edgy, etc) - self.comps = [] # list of available componetns (may empty) + self.comps = [] # list of available componetns + # (may empty) self.comment = "" # (optional) comment self.line = line # the original sources.list line if file == None: - file = apt_pkg.Config.FindDir("Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist") + file = apt_pkg.Config.FindDir( + "Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist") self.file = file # the file that the entry is located in self.parse(line) self.template = None # type DistInfo.Suite @@ -118,11 +120,13 @@ class SourceEntry: elif line[i] == "]": p_found=False tmp += line[i] - elif space_found and not line[i].isspace(): # we skip one or more space + elif space_found and not line[i].isspace(): + # we skip one or more space space_found = False pieces.append(tmp) tmp = line[i] - elif line[i].isspace() and not p_found: # found a whitespace + elif line[i].isspace() and not p_found: + # found a whitespace space_found = True else: tmp += line[i] @@ -273,8 +277,8 @@ class SourcesList: source.dist == dist: for new_comp in comps: if new_comp in source.comps: - # we have this component already, delete it from the new_comps - # list + # we have this component already, delete it + # from the new_comps list del comps[comps.index(new_comp)] if len(comps) == 0: return source @@ -332,7 +336,8 @@ class SourcesList: if backup_ext == None: backup_ext = time.strftime("%y%m%d.%H%M") for source in self.list: - if not source.file in already_backuped and os.path.exists(source.file): + if not source.file in already_backuped \ + and os.path.exists(source.file): shutil.copy(source.file, "%s%s" % (source.file, backup_ext)) return backup_ext @@ -356,9 +361,10 @@ class SourcesList: if len(self.list) == 0: path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"), apt_pkg.Config.Find("Dir::Etc::sourcelist")) - header = ("## See sources.list(5) for more information, especialy\n" - "# Remember that you can only use http, ftp or file URIs\n" - "# CDROMs are managed through the apt-cdrom tool.\n") + header = ( + "## See sources.list(5) for more information, especialy\n" + "# Remember that you can only use http, ftp or file URIs\n" + "# CDROMs are managed through the apt-cdrom tool.\n") open(path, "w").write(header) return for source in self.list: diff --git a/doc/examples/action.py b/doc/examples/action.py index 9277129e..7153292c 100644 --- a/doc/examples/action.py +++ b/doc/examples/action.py @@ -86,7 +86,8 @@ print "UsrSize: %s " % apt_pkg.SizeToStr(depcache.UsrSize) print "DebSize: %s " % apt_pkg.SizeToStr(depcache.DebSize) for pkg in cache.Packages: - if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) and depcache.IsUpgradable(pkg): + if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) \ + and depcache.IsUpgradable(pkg): print "Upgrade didn't upgrade (kept): %s" % pkg.Name print "\nPerforming DistUpgrade" diff --git a/doc/examples/all_deps.py b/doc/examples/all_deps.py index 37222463..2feeb125 100644 --- a/doc/examples/all_deps.py +++ b/doc/examples/all_deps.py @@ -14,9 +14,11 @@ def dependencies(cache, pkg, deps, key="Depends"): for depVerList in dependslist[key]: for dep in depVerList: if cache.has_key(dep.TargetPkg.Name): - if pkg.name != dep.TargetPkg.Name and not dep.TargetPkg.Name in deps: + if pkg.name != dep.TargetPkg.Name and \ + not dep.TargetPkg.Name in deps: deps.add(dep.TargetPkg.Name) - dependencies(cache, cache[dep.TargetPkg.Name], deps, key) + dependencies( + cache, cache[dep.TargetPkg.Name], deps, key) return deps diff --git a/doc/examples/config.py b/doc/examples/config.py index d0895690..cc1aae44 100755 --- a/doc/examples/config.py +++ b/doc/examples/config.py @@ -6,7 +6,8 @@ # config.py -no-h --no-help --help=no ; Turn off help # config.py -qqq -q=3 ; verbosity to 3 # config.py -c /etc/apt/apt.conf ; include that config file] -# config.py -o help=true ; Turn on help by giving a config file string +# config.py -o help=true ; Turn on help by giving a +# ; config file string # config.py -no-h -- -help ; Turn off help, specify the file '-help' # -c and -o are standard APT-program options. diff --git a/doc/examples/configisc.py b/doc/examples/configisc.py index 03fa2cad..1d5965f5 100755 --- a/doc/examples/configisc.py +++ b/doc/examples/configisc.py @@ -32,10 +32,13 @@ if Cnf.has_key("Zone"): for I in Cnf.List("zone"): SubCnf = Cnf.SubTree(I) if SubCnf.Find("type") == "slave": - print "Masters for %s: %s" % (SubCnf.MyTag(), SubCnf.ValueList("masters")) + print "Masters for %s: %s" % ( + SubCnf.MyTag(), SubCnf.ValueList("masters")) else: print "Tree definitions:" for I in Cnf.List("tree"): SubCnf = Cnf.SubTree(I) - # This could use Find which would eliminate the possibility of exceptions. - print "Subtree %s with sections '%s' and architectures '%s'" % (SubCnf.MyTag(), SubCnf["Sections"], SubCnf["Architectures"]) + # This could use Find which would eliminate the possibility of + # exceptions. + print "Subtree %s with sections '%s' and architectures '%s'" % ( + SubCnf.MyTag(), SubCnf["Sections"], SubCnf["Architectures"]) diff --git a/doc/examples/depcache.py b/doc/examples/depcache.py index 556c954b..ad884fe7 100644 --- a/doc/examples/depcache.py +++ b/doc/examples/depcache.py @@ -84,7 +84,8 @@ print "UsrSize: %s " % apt_pkg.SizeToStr(depcache.UsrSize) print "DebSize: %s " % apt_pkg.SizeToStr(depcache.DebSize) for pkg in cache.Packages: - if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) and depcache.IsUpgradable(pkg): + if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) \ + and depcache.IsUpgradable(pkg): print "Upgrade didn't upgrade (kept): %s" % pkg.Name diff --git a/doc/examples/progress.py b/doc/examples/progress.py index 70fc92f3..c56734b7 100644 --- a/doc/examples/progress.py +++ b/doc/examples/progress.py @@ -34,10 +34,13 @@ class TextFetchProgress(apt.FetchProgress): pass def updateStatus(self, uri, descr, shortDescr, status): - print "UpdateStatus: '%s' '%s' '%s' '%i'" % (uri, descr, shortDescr, status) + print "UpdateStatus: '%s' '%s' '%s' '%i'" % ( + uri, descr, shortDescr, status) def pulse(self): - print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (SizeToStr(self.currentCPS), SizeToStr(self.currentBytes), SizeToStr(self.totalBytes), self.currentItems, self.totalItems) + print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % ( + SizeToStr(self.currentCPS), SizeToStr(self.currentBytes), + SizeToStr(self.totalBytes), self.currentItems, self.totalItems) return True def mediaChange(self, medium, drive): diff --git a/doc/examples/records.py b/doc/examples/records.py index 9dfc460b..a7a87727 100755 --- a/doc/examples/records.py +++ b/doc/examples/records.py @@ -8,5 +8,6 @@ for pkg in cache: if not pkg.candidateRecord: continue if pkg.candidateRecord.has_key("Task"): - print "Pkg %s is part of '%s'" % (pkg.name, pkg.candidateRecord["Task"].split()) + print "Pkg %s is part of '%s'" % ( + pkg.name, pkg.candidateRecord["Task"].split()) #print pkg.candidateRecord diff --git a/doc/examples/sources.py b/doc/examples/sources.py index 8d807f4c..49652982 100644 --- a/doc/examples/sources.py +++ b/doc/examples/sources.py @@ -10,6 +10,7 @@ apt_pkg.init() sources = apt_pkg.GetPkgSrcRecords() sources.Restart() while sources.Lookup('hello'): - print sources.Package, sources.Version, sources.Maintainer, sources.Section, `sources.Binaries` + print sources.Package, sources.Version, sources.Maintainer, \ + sources.Section, `sources.Binaries` print sources.Files print sources.Index.ArchiveURI(sources.Files[0][2]) diff --git a/tests/depcache.py b/tests/depcache.py index 5ed54895..b199c812 100644 --- a/tests/depcache.py +++ b/tests/depcache.py @@ -31,7 +31,8 @@ def main(): if depcache.MarkedInstall(p): depcache.MarkKeep(p) if depcache.InstCount != 0: - print "Error undoing the selection for %s (InstCount: %s)" % (x, depcache.InstCount) + print "Error undoing the selection for %s (InstCount: %s)" % ( + x, depcache.InstCount) print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)), print diff --git a/tests/pkgrecords.py b/tests/pkgrecords.py index e128237b..5866847d 100644 --- a/tests/pkgrecords.py +++ b/tests/pkgrecords.py @@ -30,7 +30,9 @@ def main(): x = records.FileName y = records.LongDesc pass - print "\r%i/%i=%.3f%% " % (i, cache.PackageCount, (float(i) / float(cache.PackageCount) * 100)), + print "\r%i/%i=%.3f%% " % ( + i, cache.PackageCount, + (float(i) / float(cache.PackageCount) * 100)), if __name__ == "__main__": diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py index 6e78858b..77670540 100644 --- a/tests/pkgsrcrecords.py +++ b/tests/pkgsrcrecords.py @@ -19,7 +19,9 @@ def main(): if src.Lookup(x.Name): #print src.Package pass - print "\r%i/%i=%.3f%% " % (i, cache.PackageCount, (float(i) / float(cache.PackageCount) * 100)), + print "\r%i/%i=%.3f%% " % ( + i, cache.PackageCount, + (float(i) / float(cache.PackageCount) * 100)), if __name__ == "__main__": diff --git a/tests/test_aptsources.py b/tests/test_aptsources.py index 9019aa2d..3e2f7ac5 100644 --- a/tests/test_aptsources.py +++ b/tests/test_aptsources.py @@ -79,7 +79,8 @@ class TestAptSources(unittest.TestCase): self.assertEqual(found_universe, 1) def testDistribution(self): - apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list.testDistribution") + apt_pkg.Config.Set( + "Dir::Etc::sourcelist", "data/sources.list.testDistribution") sources = aptsources.SourcesList() distro = aptsources.Distribution() distro.get_sources(sources) @@ -89,7 +90,9 @@ class TestAptSources(unittest.TestCase): if s.template: dist_templates.add(s.template.name) #print dist_templates - for d in ["edgy", "edgy-security", "edgy-updates", "hoary", "breezy", "breezy-backports"]: + for d in [ + "edgy", "edgy-security", "edgy-updates", + "hoary", "breezy", "breezy-backports"]: self.assertTrue(d in dist_templates) # test enable comp = "restricted" -- cgit v1.2.3