]> code.ossystems Code Review - openembedded-core.git/commitdiff
Avoid unnecessary calls to keys() when iterating over dictionaries.
authorChris Larson <clarson@mvista.com>
Thu, 11 Jun 2009 20:10:04 +0000 (13:10 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Mon, 22 Mar 2010 15:01:59 +0000 (15:01 +0000)
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>
bitbake/lib/bb/cooker.py
bitbake/lib/bb/data_smart.py
bitbake/lib/bb/fetch/__init__.py
bitbake/lib/bb/manifest.py
bitbake/lib/bb/providers.py
bitbake/lib/bb/shell.py

index 5f9becccac2db363ba92dfcdab6fcc16103d7fbe..938bdeaaea55cca44522833398dd5d076b9d1dbf 100644 (file)
@@ -219,18 +219,15 @@ class BBCooker:
         latest_versions = {}
 
         # 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)
             preferred_versions[pn] = (pref_ver, pref_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\n" % ("============", "==============", "================="))
 
-        for p in pkg_list:
+        for p in sorted(pkg_pn):
             pref = preferred_versions[p]
             latest = latest_versions[p]
 
@@ -487,7 +484,7 @@ class BBCooker:
             self.status.preferred[providee] = provider
 
         # 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)
 
     def buildWorldTargetList(self):
index 988d5c3578fb0a631355486a981781c72f3308d4..dac7fb705e7a1fa3304cc5d6c38d0fd5909f1d8a 100644 (file)
@@ -219,7 +219,7 @@ class DataSmart:
         if not var in self.dict:
             self._makeShadowCopy(var)
 
-        for i in flags.keys():
+        for i in flags:
             if i == "content":
                 continue
             self.dict[var][i] = flags[i]
@@ -229,7 +229,7 @@ class DataSmart:
         flags = {}
 
         if local_var:
-            for i in local_var.keys():
+            for i in local_var:
                 if i == "content":
                     continue
                 flags[i] = local_var[i]
index 435c02683c77e08be248860ad1b01c61ce1a474c..d181eea71b5c54dd895583d98eaebfda2b75354b 100644 (file)
@@ -139,7 +139,7 @@ def encodeurl(decoded):
         url += "%s" % host
     url += "%s" % path
     if p:
-        for parm in p.keys():
+        for parm in p:
             url += ";%s=%s" % (parm, p[parm])
 
     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")
                 return uri
 #           else:
-#               for j in i.keys():
+#               for j in i:
 #                   FIXME: apply replacements against options
     return bb.encodeurl(result_decoded)
 
index 4e4b7d98eca7eba2d20b079df0bbd0eb0b4e7a32..418367759f02070c59eac5f062a50a929b9ab87b 100644 (file)
@@ -96,7 +96,7 @@ def mangle (func, line, d):
         varmap["${datadir}"] = "${STAGING_DATADIR}"
 
         matched = 0
-        for key in varmap.keys():
+        for key in varmap:
             if dest.startswith(key):
                 dest = varmap[key] + "/" + dest[len(key):]
                 matched = 1
index 8617251ca3ce3e54eaa424489f964ffba518164f..c9fe7c7d7fb15ba99c65ed0345806d4a0e860053 100644 (file)
@@ -50,14 +50,10 @@ def sortPriorities(pn, dataCache, pkg_pn = None):
         if preference not in priorities[priority]:
             priorities[priority][preference] = []
         priorities[priority][preference].append(f)
-    pri_list = priorities.keys()
-    pri_list.sort(lambda a, b: a - b)
     tmp_pn = []
-    for pri in pri_list:
-        pref_list = priorities[pri].keys()
-        pref_list.sort(lambda a, b: b - a)
+    for pri in sorted(priorities, lambda a, b: a - b):
         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_pn = [tmp_pref] + tmp_pn
 
@@ -193,17 +189,17 @@ def _filterProviders(providers, item, cfgData, dataCache):
             pkg_pn[pn] = []
         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
-    for pn in pkg_pn.keys():
+    for pn in pkg_pn():
         sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn)
         preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
         if preferred_versions[pn][1]:
             eligible.append(preferred_versions[pn][1])
 
     # 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]:
             continue
         preferred_versions[pn] = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[pn][0])
index 66e51719a48159717169281caf471289b1c3ab94..7abea0f1268712c314843bf72add4a10cea14b47 100644 (file)
@@ -147,7 +147,7 @@ class BitBakeShellCommands:
         global last_exception
         globexpr = params[0]
         self._checkParsed()
-        names = globfilter( cooker.status.pkg_pn.keys(), globexpr )
+        names = globfilter( cooker.status.pkg_pn, globexpr )
         if len( names ) == 0: names = [ globexpr ]
         print "SHELL: Building %s" % ' '.join( names )
 
@@ -294,9 +294,7 @@ class BitBakeShellCommands:
     def help( self, params ):
         """Show a comprehensive list of commands and their purpose"""
         print "="*30, "Available Commands", "="*30
-        allcmds = cmds.keys()
-        allcmds.sort()
-        for cmd in allcmds:
+        for cmd in sorted(cmds):
             function,numparams,usage,helptext = cmds[cmd]
             print "| %s | %s" % (usage.ljust(30), helptext)
         print "="*78
@@ -322,10 +320,10 @@ class BitBakeShellCommands:
         what, globexpr = params
         if what == "files":
             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":
             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:
             print "Usage: match %s" % self.print_.usage
     match.usage = "<files|providers> <glob>"
@@ -473,10 +471,10 @@ SRC_URI = ""
         what = params[0]
         if what == "files":
             self._checkParsed()
-            for key in cooker.status.pkg_fn.keys(): print key
+            for key in cooker.status.pkg_fn: print key
         elif what == "providers":
             self._checkParsed()
-            for key in cooker.status.providers.keys(): print key
+            for key in cooker.status.providers: print key
         else:
             print "Usage: print %s" % self.print_.usage
     print_.usage = "<files|providers>"
@@ -571,7 +569,7 @@ def completeFilePath( bbfile ):
     """Get the complete bbfile path"""
     if not cooker.status: 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 ):
             return key
     return bbfile
@@ -615,7 +613,7 @@ def completer( text, state ):
                     allmatches = cooker.configuration.data.keys()
                 elif u == "<bbfile>":
                     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>":
                     if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ]
                     else: allmatches = cooker.status.providers.iterkeys()