#leaf-per-repo import yum from sets import Set def returnLeafNodes(repoid=None): """returns a list of package tuples (n,a,e,v,r) that are not required by any other package in this repository""" req = {} orphan = [] for po in my.pkgSack.returnPackages(repoid=repoid): if not po.requires_names: continue for r in po.requires_names: if not req.has_key(r): req[r] = Set() req[r].add(po) for po in my.pkgSack.returnPackages(repoid=repoid): preq = 0 for p in po.provides_names + po.filelist + po.dirlist + po.ghostlist: if req.has_key(p): # Don't count a package that provides its require s = req[p] if len(s) > 1 or po not in s: preq = preq + 1 if preq == 0: orphan.append(po) return orphan my = yum.YumBase() for i in returnLeafNodes(): print i