1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-02 13:29:49 +00:00

Avoid unnecessary calls to keys() when iterating over dictionaries.

dict objects provide an __iter__ method for the iteration which gives you the
keys, so calling keys directly is unnecessary, and isn't really a best
practice.  The only time you really need to call the keys is if there's a
danger of the dict changing out from underneith you, either due to external
forces or due to modification of the iterable in the loop.  Iterations over
os.environ are apparently subject to such changes, so they must continue to
use keys().

As an aside, also switches a couple spots to using sorted() rather than
creating a temporary list with keys() and sorting that.

(Bitbake rev: 5b6ccb16c6e71e23dac6920cd2df994d67c2587b)

Signed-off-by: Chris Larson <clarson@mvista.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Chris Larson
2009-06-11 13:10:04 -07:00
committed by Richard Purdie
parent 9d9b47bae4
commit ada2a8494a
6 changed files with 21 additions and 30 deletions
+3 -6
View File
@@ -219,18 +219,15 @@ class BBCooker:
latest_versions = {} latest_versions = {}
# Sort by priority # Sort by priority
for pn in pkg_pn.keys(): for pn in pkg_pn:
(last_ver,last_file,pref_ver,pref_file) = bb.providers.findBestProvider(pn, self.configuration.data, self.status) (last_ver,last_file,pref_ver,pref_file) = bb.providers.findBestProvider(pn, self.configuration.data, self.status)
preferred_versions[pn] = (pref_ver, pref_file) preferred_versions[pn] = (pref_ver, pref_file)
latest_versions[pn] = (last_ver, last_file) latest_versions[pn] = (last_ver, last_file)
pkg_list = pkg_pn.keys()
pkg_list.sort()
bb.msg.plain("%-35s %25s %25s" % ("Package Name", "Latest Version", "Preferred Version")) bb.msg.plain("%-35s %25s %25s" % ("Package Name", "Latest Version", "Preferred Version"))
bb.msg.plain("%-35s %25s %25s\n" % ("============", "==============", "=================")) bb.msg.plain("%-35s %25s %25s\n" % ("============", "==============", "================="))
for p in pkg_list: for p in sorted(pkg_pn):
pref = preferred_versions[p] pref = preferred_versions[p]
latest = latest_versions[p] latest = latest_versions[p]
@@ -487,7 +484,7 @@ class BBCooker:
self.status.preferred[providee] = provider self.status.preferred[providee] = provider
# Calculate priorities for each file # Calculate priorities for each file
for p in self.status.pkg_fn.keys(): for p in self.status.pkg_fn:
self.status.bbfile_priority[p] = calc_bbfile_priority(p) self.status.bbfile_priority[p] = calc_bbfile_priority(p)
def buildWorldTargetList(self): def buildWorldTargetList(self):
+2 -2
View File
@@ -219,7 +219,7 @@ class DataSmart:
if not var in self.dict: if not var in self.dict:
self._makeShadowCopy(var) self._makeShadowCopy(var)
for i in flags.keys(): for i in flags:
if i == "content": if i == "content":
continue continue
self.dict[var][i] = flags[i] self.dict[var][i] = flags[i]
@@ -229,7 +229,7 @@ class DataSmart:
flags = {} flags = {}
if local_var: if local_var:
for i in local_var.keys(): for i in local_var:
if i == "content": if i == "content":
continue continue
flags[i] = local_var[i] flags[i] = local_var[i]
+2 -2
View File
@@ -139,7 +139,7 @@ def encodeurl(decoded):
url += "%s" % host url += "%s" % host
url += "%s" % path url += "%s" % path
if p: if p:
for parm in p.keys(): for parm in p:
url += ";%s=%s" % (parm, p[parm]) url += ";%s=%s" % (parm, p[parm])
return url return url
@@ -169,7 +169,7 @@ def uri_replace(uri, uri_find, uri_replace, d):
# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: no match") # bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: no match")
return uri return uri
# else: # else:
# for j in i.keys(): # for j in i:
# FIXME: apply replacements against options # FIXME: apply replacements against options
return bb.encodeurl(result_decoded) return bb.encodeurl(result_decoded)
+1 -1
View File
@@ -96,7 +96,7 @@ def mangle (func, line, d):
varmap["${datadir}"] = "${STAGING_DATADIR}" varmap["${datadir}"] = "${STAGING_DATADIR}"
matched = 0 matched = 0
for key in varmap.keys(): for key in varmap:
if dest.startswith(key): if dest.startswith(key):
dest = varmap[key] + "/" + dest[len(key):] dest = varmap[key] + "/" + dest[len(key):]
matched = 1 matched = 1
+5 -9
View File
@@ -50,14 +50,10 @@ def sortPriorities(pn, dataCache, pkg_pn = None):
if preference not in priorities[priority]: if preference not in priorities[priority]:
priorities[priority][preference] = [] priorities[priority][preference] = []
priorities[priority][preference].append(f) priorities[priority][preference].append(f)
pri_list = priorities.keys()
pri_list.sort(lambda a, b: a - b)
tmp_pn = [] tmp_pn = []
for pri in pri_list: for pri in sorted(priorities, lambda a, b: a - b):
pref_list = priorities[pri].keys()
pref_list.sort(lambda a, b: b - a)
tmp_pref = [] tmp_pref = []
for pref in pref_list: for pref in sorted(priorities[pri], lambda a, b: b - a):
tmp_pref.extend(priorities[pri][pref]) tmp_pref.extend(priorities[pri][pref])
tmp_pn = [tmp_pref] + tmp_pn tmp_pn = [tmp_pref] + tmp_pn
@@ -193,17 +189,17 @@ def _filterProviders(providers, item, cfgData, dataCache):
pkg_pn[pn] = [] pkg_pn[pn] = []
pkg_pn[pn].append(p) pkg_pn[pn].append(p)
bb.msg.debug(1, bb.msg.domain.Provider, "providers for %s are: %s" % (item, pkg_pn.keys())) bb.msg.debug(1, bb.msg.domain.Provider, "providers for %s are: %s" % (item, pkg_pn()))
# First add PREFERRED_VERSIONS # First add PREFERRED_VERSIONS
for pn in pkg_pn.keys(): for pn in pkg_pn():
sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn) sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn)
preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item) preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
if preferred_versions[pn][1]: if preferred_versions[pn][1]:
eligible.append(preferred_versions[pn][1]) eligible.append(preferred_versions[pn][1])
# Now add latest verisons # Now add latest verisons
for pn in sortpkg_pn.keys(): for pn in sortpkg_pn():
if pn in preferred_versions and preferred_versions[pn][1]: if pn in preferred_versions and preferred_versions[pn][1]:
continue continue
preferred_versions[pn] = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[pn][0]) preferred_versions[pn] = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[pn][0])
+8 -10
View File
@@ -147,7 +147,7 @@ class BitBakeShellCommands:
global last_exception global last_exception
globexpr = params[0] globexpr = params[0]
self._checkParsed() self._checkParsed()
names = globfilter( cooker.status.pkg_pn.keys(), globexpr ) names = globfilter( cooker.status.pkg_pn, globexpr )
if len( names ) == 0: names = [ globexpr ] if len( names ) == 0: names = [ globexpr ]
print "SHELL: Building %s" % ' '.join( names ) print "SHELL: Building %s" % ' '.join( names )
@@ -294,9 +294,7 @@ class BitBakeShellCommands:
def help( self, params ): def help( self, params ):
"""Show a comprehensive list of commands and their purpose""" """Show a comprehensive list of commands and their purpose"""
print "="*30, "Available Commands", "="*30 print "="*30, "Available Commands", "="*30
allcmds = cmds.keys() for cmd in sorted(cmds):
allcmds.sort()
for cmd in allcmds:
function,numparams,usage,helptext = cmds[cmd] function,numparams,usage,helptext = cmds[cmd]
print "| %s | %s" % (usage.ljust(30), helptext) print "| %s | %s" % (usage.ljust(30), helptext)
print "="*78 print "="*78
@@ -322,10 +320,10 @@ class BitBakeShellCommands:
what, globexpr = params what, globexpr = params
if what == "files": if what == "files":
self._checkParsed() self._checkParsed()
for key in globfilter( cooker.status.pkg_fn.keys(), globexpr ): print key for key in globfilter( cooker.status.pkg_fn, globexpr ): print key
elif what == "providers": elif what == "providers":
self._checkParsed() self._checkParsed()
for key in globfilter( cooker.status.pkg_pn.keys(), globexpr ): print key for key in globfilter( cooker.status.pkg_pn, globexpr ): print key
else: else:
print "Usage: match %s" % self.print_.usage print "Usage: match %s" % self.print_.usage
match.usage = "<files|providers> <glob>" match.usage = "<files|providers> <glob>"
@@ -473,10 +471,10 @@ SRC_URI = ""
what = params[0] what = params[0]
if what == "files": if what == "files":
self._checkParsed() self._checkParsed()
for key in cooker.status.pkg_fn.keys(): print key for key in cooker.status.pkg_fn: print key
elif what == "providers": elif what == "providers":
self._checkParsed() self._checkParsed()
for key in cooker.status.providers.keys(): print key for key in cooker.status.providers: print key
else: else:
print "Usage: print %s" % self.print_.usage print "Usage: print %s" % self.print_.usage
print_.usage = "<files|providers>" print_.usage = "<files|providers>"
@@ -571,7 +569,7 @@ def completeFilePath( bbfile ):
"""Get the complete bbfile path""" """Get the complete bbfile path"""
if not cooker.status: return bbfile if not cooker.status: return bbfile
if not cooker.status.pkg_fn: return bbfile if not cooker.status.pkg_fn: return bbfile
for key in cooker.status.pkg_fn.keys(): for key in cooker.status.pkg_fn:
if key.endswith( bbfile ): if key.endswith( bbfile ):
return key return key
return bbfile return bbfile
@@ -615,7 +613,7 @@ def completer( text, state ):
allmatches = cooker.configuration.data.keys() allmatches = cooker.configuration.data.keys()
elif u == "<bbfile>": elif u == "<bbfile>":
if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ] if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ]
else: allmatches = [ x.split("/")[-1] for x in cooker.status.pkg_fn.keys() ] else: allmatches = [ x.split("/")[-1] for x in cooker.status.pkg_fn ]
elif u == "<providee>": elif u == "<providee>":
if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ] if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ]
else: allmatches = cooker.status.providers.iterkeys() else: allmatches = cooker.status.providers.iterkeys()