From 7d1934b2609cdc021ed6b24c76c2d1cff560c127 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 21 Jun 2007 10:57:55 +0000 Subject: Remove lots of unnecessary list generation via dict.keys(). svn path=/main/trunk/; revision=6911 --- bin/fix-db.py | 4 ++-- bin/md5check.py | 8 ++++---- bin/portageq | 4 ++-- bin/repoman | 6 +++--- pym/emerge/__init__.py | 16 ++++++++-------- pym/portage/__init__.py | 35 ++++++++++++++++++++++------------- 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/bin/fix-db.py b/bin/fix-db.py index 19eb31425..d17347efb 100755 --- a/bin/fix-db.py +++ b/bin/fix-db.py @@ -136,7 +136,7 @@ for cat in os.listdir(vardbdir): actions = {} writemsg("\n\n") -for catpkg in bad.keys(): +for catpkg in bad: bad[catpkg].sort() mystr = "" @@ -155,7 +155,7 @@ for catpkg in bad.keys(): if (len(sys.argv) > 1) and (sys.argv[1] == "--fix"): writemsg("These are only directions, at the moment.") - for catpkg in actions.keys(): + for catpkg in actions: action = actions[catpkg] writemsg("We will now '%s' '%s'..." % (action, catpkg)) #if action == diff --git a/bin/md5check.py b/bin/md5check.py index 3525ea111..c625fad17 100755 --- a/bin/md5check.py +++ b/bin/md5check.py @@ -68,10 +68,10 @@ for mycpv in hugelist: else: continue - if mybn not in md5sums.keys(): + if mybn not in md5sums: portage.util.writemsg("Missing md5sum: %s in %s\n" % (mybn, mycpv)) else: - if mybn in md5_list.keys(): + if mybn in md5_list: if (md5_list[mybn]["MD5"] != md5sums[mybn]["MD5"]) or \ (md5_list[mybn]["size"] != md5sums[mybn]["size"]): @@ -89,12 +89,12 @@ for mycpv in hugelist: del md5sums[mybn] #portage.writemsg(str(bn_list)+"\n") - for x in md5sums.keys(): + for x in md5sums: if x not in bn_list: portage.writemsg("Extra md5sum: %s in %s\n" % (x, mycpv)) print col_list print -print str(len(md5_list.keys()))+" unique distfile md5s." +print str(len(md5_list))+" unique distfile md5s." print str(len(bn_list))+" unique distfile names." diff --git a/bin/portageq b/bin/portageq index b9260fed5..11ac316eb 100755 --- a/bin/portageq +++ b/bin/portageq @@ -305,7 +305,7 @@ def list_preserved_libs(argv): sys.exit(2) mylibs = portage.db[argv[0]]["vartree"].dbapi.plib_registry.getPreservedLibs() rValue = 0 - for cpv in mylibs.keys(): + for cpv in mylibs: for path in mylibs[cpv]: print "%s: %s" % (cpv, path) rValue = 1 @@ -328,7 +328,7 @@ def usage(argv): # Show our commands -- we do this by scanning the functions in this # file, and formatting each functions documentation. # - commands = [x for x in globals().keys() if x not in \ + commands = [x for x in globals() if x not in \ ("usage", "__doc__", "__name__", "main", "os", "portage", \ "sys", "__builtins__", "types", "string","exithandler")] commands.sort() diff --git a/bin/repoman b/bin/repoman index 6fcc2a1af..483eff4e5 100755 --- a/bin/repoman +++ b/bin/repoman @@ -351,9 +351,9 @@ myoptions=[] if len(sys.argv)>1: x=1 while x < len(sys.argv): - if sys.argv[x] in shortmodes.keys(): + if sys.argv[x] in shortmodes: sys.argv[x]=shortmodes[sys.argv[x]] - elif sys.argv[x] in repoman_shortoptions.keys(): + elif sys.argv[x] in repoman_shortoptions: sys.argv[x] = repoman_shortoptions[sys.argv[x]] if sys.argv[x] in modes: if mymode is None: @@ -1479,7 +1479,7 @@ def grouplist(mylist,seperator="/"): xs=x.split(seperator) if xs[0]==".": xs=xs[1:] - if xs[0] not in mygroups.keys(): + if xs[0] not in mygroups: mygroups[xs[0]]=[seperator.join(xs[1:])] else: mygroups[xs[0]]+=[seperator.join(xs[1:])] diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 031691be6..e62611e8e 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -441,7 +441,7 @@ class search(object): if self.searchre.search(full_desc): self.matches["desc"].append([full_package,masked]) self.mlen=0 - for mtype in self.matches.keys(): + for mtype in self.matches: self.matches[mtype].sort() self.mlen += len(self.matches[mtype]) @@ -450,7 +450,7 @@ class search(object): print "\b\b \n[ Results for search key : "+white(self.searchkey)+" ]" print "[ Applications found : "+white(str(self.mlen))+" ]" print " " - for mtype in self.matches.keys(): + for mtype in self.matches: for match,masked in self.matches[mtype]: if mtype=="pkg": catpack=match @@ -2214,7 +2214,7 @@ class depgraph(object): mylist = getlist(self.settings, "system") worlddict=genericdict(worldlist) - for x in worlddict.keys(): + for x in worlddict: if not portage.isvalidatom(x): world_problems = True continue @@ -2697,7 +2697,7 @@ class depgraph(object): if myfilesdict is None: myfilesdict="[empty/missing/bad digest]" else: - for myfetchfile in myfilesdict.keys(): + for myfetchfile in myfilesdict: if myfetchfile not in myfetchlist: mysize+=myfilesdict[myfetchfile] myfetchlist.append(myfetchfile) @@ -3612,7 +3612,7 @@ def unmerge(settings, myopts, vartree, unmerge_action, unmerge_files, if not slotmap.has_key(myslot): slotmap[myslot]={} slotmap[myslot][localtree.dbapi.cpv_counter(mypkg)]=mypkg - for myslot in slotmap.keys(): + for myslot in slotmap: counterkeys=slotmap[myslot].keys() counterkeys.sort() if not counterkeys: @@ -3639,7 +3639,7 @@ def unmerge(settings, myopts, vartree, unmerge_action, unmerge_files, finally: if vdb_lock: portage.locks.unlockdir(vdb_lock) - for x in pkgmap.keys(): + for x in pkgmap: for y in localtree.dep_match(x): if y not in pkgmap[x]["omitted"] and \ y not in pkgmap[x]["selected"] and \ @@ -3695,7 +3695,7 @@ def unmerge(settings, myopts, vartree, unmerge_action, unmerge_files, if not autoclean: countdown(int(settings["CLEAN_DELAY"]), ">>> Unmerging") - for x in pkgmap.keys(): + for x in pkgmap: for y in pkgmap[x]["selected"]: print ">>> Unmerging "+y+"..." emergelog(xterm_titles, "=== Unmerging... ("+y+")") @@ -3879,7 +3879,7 @@ def post_emerge(trees, mtimedb, retval): if vardbapi.plib_registry.hasEntries(): print colorize("WARN", "!!!") + " existing preserved libs:" plibdata = vardbapi.plib_registry.getPreservedLibs() - for cpv in plibdata.keys(): + for cpv in plibdata: print colorize("WARN", ">>>") + " package: %s" % cpv for f in plibdata[cpv]: print colorize("WARN", " * ") + " - %s" % f diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index d80a72d51..6e2d38781 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1644,9 +1644,8 @@ class config(object): def load_infodir(self,infodir): self.modifying() - if self.configdict.has_key("pkg"): - for x in self.configdict["pkg"].keys(): - del self.configdict["pkg"][x] + if "pkg" in self.configdict: + self.configdict["pkg"].clear() else: writemsg("No pkg setup for settings instance?\n", noiselevel=-1) @@ -2105,8 +2104,7 @@ class config(object): return self.virts_p virts = self.getvirtuals(myroot) if virts: - myvkeys = virts.keys() - for x in myvkeys: + for x in virts: vkeysplit = x.split("/") if not self.virts_p.has_key(vkeysplit[1]): self.virts_p[vkeysplit[1]] = virts[x] @@ -2227,7 +2225,16 @@ class config(object): return x def keys(self): - return unique_array(flatten([x.keys() for x in self.lookuplist])) + return list(self) + + def __iter__(self): + keys = set() + for d in self.lookuplist: + for k in d: + if k in keys: + continue + keys.add(k) + yield k def __setitem__(self,mykey,myvalue): "set a value; will be thrown away at reset() time" @@ -2240,7 +2247,7 @@ class config(object): def environ(self): "return our locally-maintained environment" mydict={} - for x in self.keys(): + for x in self: myvalue = self[x] if not isinstance(myvalue, basestring): writemsg("!!! Non-string value in config: %s=%s\n" % \ @@ -2639,7 +2646,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", noiselevel=-1) return 0 del distlocks_subdir - for myfile in filedict.keys(): + for myfile in filedict: """ fetched status 0 nonexistent @@ -2870,7 +2877,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", else: eout = portage.output.EOutput() eout.quiet = mysettings.get("PORTAGE_QUIET", None) == "1" - for x_key in mydigests[myfile].keys(): + for x_key in mydigests[myfile]: eout.ebegin("%s %s ;-)" % (myfile, x_key)) eout.eend(0) fetched=2 @@ -3126,7 +3133,7 @@ def digestcheck(myfiles, mysettings, strict=0, justmanifest=0): def spawnebuild(mydo,actionmap,mysettings,debug,alwaysdep=0,logfile=None): if alwaysdep or "noauto" not in mysettings.features: # process dependency first - if "dep" in actionmap[mydo].keys(): + if "dep" in actionmap[mydo]: retval=spawnebuild(actionmap[mydo]["dep"],actionmap,mysettings,debug,alwaysdep=alwaysdep,logfile=logfile) if retval: return retval @@ -3932,11 +3939,11 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, # merge the deps in so we have again a 'full' actionmap # be glad when this can die. - for x in actionmap.keys(): + for x in actionmap: if len(actionmap_deps.get(x, [])): actionmap[x]["dep"] = ' '.join(actionmap_deps[x]) - if mydo in actionmap.keys(): + if mydo in actionmap: retval = spawnebuild(mydo, actionmap, mysettings, debug, logfile=logfile) elif mydo=="qmerge": @@ -4942,9 +4949,11 @@ class FetchlistDict(UserDict.DictMixin): """Returns the complete fetch list for a given package.""" return self.portdb.getfetchlist(pkg_key, mysettings=self.settings, all=True, mytree=self.mytree)[1] + def __contains__(self): + return pkg_key in self.keys() def has_key(self, pkg_key): """Returns true if the given package exists within pkgdir.""" - return pkg_key in self.keys() + return pkg_key in self def keys(self): """Returns keys for all packages within pkgdir""" return self.portdb.cp_list(self.cp, mytree=self.mytree) -- cgit v1.2.3-1-g7c22