[yum-cvs] cli.py output.py rpmUtils/updates.py shell.py yum/comps.py yum/__init__.py yum/mdparser.py yum/packageSack.py yum/packages.py yum/rpmsack.py yum/sqlitesack.py yum/yumRepo.py

James Antill james at linux.duke.edu
Fri Dec 21 16:12:13 UTC 2007


 cli.py              |   12 ++++++------
 output.py           |   22 +++++++++++-----------
 rpmUtils/updates.py |   27 +++++++++++++--------------
 shell.py            |    2 +-
 yum/__init__.py     |   34 +++++++++++++++++-----------------
 yum/comps.py        |   22 +++++++++++-----------
 yum/mdparser.py     |    2 +-
 yum/packageSack.py  |    6 +++---
 yum/packages.py     |    6 +++---
 yum/rpmsack.py      |    2 +-
 yum/sqlitesack.py   |    2 +-
 yum/yumRepo.py      |    9 ++++-----
 12 files changed, 72 insertions(+), 74 deletions(-)

New commits:
commit 91e4b9cd5ff71296e2eced1b0343531828aae589
Author: James Antill <james at and.org>
Date:   Fri Dec 21 11:07:36 2007 -0500

     Change:
    
      if mydict.keys():            => if mydict:
      for x in mydict.keys()       => for x in mydict: # If no del mydict in there
      len(mydict.keys())           => len(mydict)
      mylist.extend(mydict.keys()) => mylist.extend(mydict)
      if x in mydict.keys()        => if x in mydict:
    
    ...to stop creating temporary lists.

diff --git a/cli.py b/cli.py
index 07d14f7..6a9385b 100644
--- a/cli.py
+++ b/cli.py
@@ -251,9 +251,9 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
             if disk[m.group(2)] < int(m.group(1)):
                 disk[m.group(2)] = int(m.group(1))
                 
-        if disk.keys():
+        if disk:
            summary += 'Disk Requirements:\n'
-           for k in disk.keys():
+           for k in disk:
               summary += '  At least %dMB needed on the %s filesystem.\n' % (disk[k], k)
 
         # TODO: simplify the dependency errors?
@@ -335,10 +335,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
             'Downloading Packages:')
         problems = self.downloadPkgs(downloadpkgs) 
 
-        if len(problems.keys()) > 0:
+        if len(problems) > 0:
             errstring = ''
             errstring += 'Error Downloading Packages:\n'
-            for key in problems.keys():
+            for key in problems:
                 errors = yum.misc.unique(problems[key])
                 for error in errors:
                     errstring += '  %s: %s\n' % (key, error)
@@ -562,7 +562,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         # this is where I could catch the installs of compat and multilib 
         # arches on a single yum install command. 
         pkglist = []
-        for name in toBeInstalled.keys():
+        for name in toBeInstalled:
             pkglist.extend(self.bestPackagesFromList(toBeInstalled[name]))
             
         # This is where we need to do a lookup to find out if this install
@@ -816,7 +816,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         
         matching = self.searchPackageProvides(args, callback=self.matchcallback)
         
-        if len(matching.keys()) == 0:
+        if len(matching) == 0:
             return 0, ['No Matches found']
         
         return 0, []
diff --git a/output.py b/output.py
index f7edc73..8f81873 100644
--- a/output.py
+++ b/output.py
@@ -148,7 +148,7 @@ class YumTerm:
         self.lines   = curses.tigetnum('lines')
         
         # Look up string capabilities.
-        for cap_name in self.MODE.keys():
+        for cap_name in self.MODE:
             mode = cap_name
             if cap_name in self.__cap_names:
                 cap_name = self.__cap_names[cap_name]
@@ -332,22 +332,22 @@ class YumOutput:
         print '\nGroup: %s' % group.name
         if group.description != "":
             print ' Description: %s' % group.description.encode("UTF-8")
-        if len(group.mandatory_packages.keys()) > 0:
+        if len(group.mandatory_packages) > 0:
             print ' Mandatory Packages:'
-            for item in group.mandatory_packages.keys():
+            for item in group.mandatory_packages:
                 print '   %s' % item
 
-        if len(group.default_packages.keys()) > 0:
+        if len(group.default_packages) > 0:
             print ' Default Packages:'
-            for item in group.default_packages.keys():
+            for item in group.default_packages:
                 print '   %s' % item
         
-        if len(group.optional_packages.keys()) > 0:
+        if len(group.optional_packages) > 0:
             print ' Optional Packages:'
-            for item in group.optional_packages.keys():
+            for item in group.optional_packages:
                 print '   %s' % item
 
-        if len(group.conditional_packages.keys()) > 0:
+        if len(group.conditional_packages) > 0:
             print ' Conditional Packages:'
             for item, cond in group.conditional_packages.iteritems():
                 print '   %s' % (item,)
@@ -355,13 +355,13 @@ class YumOutput:
     def depListOutput(self, results):
         """take a list of findDeps results and 'pretty print' the output"""
         
-        for pkg in results.keys():
+        for pkg in results:
             print "package: %s" % pkg.compactPrint()
-            if len(results[pkg].keys()) == 0:
+            if len(results[pkg]) == 0:
                 print "  No dependencies for this package"
                 continue
 
-            for req in results[pkg].keys():
+            for req in results[pkg]:
                 reqlist = results[pkg][req] 
                 print "  dependency: %s" % prco_tuple_to_string(req)
                 if not reqlist:
diff --git a/rpmUtils/updates.py b/rpmUtils/updates.py
index 967e698..b5ccc72 100644
--- a/rpmUtils/updates.py
+++ b/rpmUtils/updates.py
@@ -125,7 +125,7 @@ class Updates:
     def condenseUpdates(self):
         """remove any accidental duplicates in updates"""
         
-        for tup in self.updatesdict.keys():
+        for tup in self.updatesdict:
             if len(self.updatesdict[tup]) > 1:
                 mylist = self.updatesdict[tup]
                 self.updatesdict[tup] = rpmUtils.miscutils.unique(mylist)
@@ -179,12 +179,12 @@ class Updates:
         # if you find it look for the packages they obsolete
         # 
         obs_arches = {}
-        for (n, a, e, v, r) in self.rawobsoletes.keys():
+        for (n, a, e, v, r) in self.rawobsoletes:
             if not obs_arches.has_key(n):
                 obs_arches[n] = []
             obs_arches[n].append(a)
 
-        for pkgtup in self.rawobsoletes.keys():
+        for pkgtup in self.rawobsoletes:
             (name, arch, epoch, ver, rel) = pkgtup
             for (obs_n, flag, (obs_e, obs_v, obs_r)) in self.rawobsoletes[(pkgtup)]:
                 if self.installdict.has_key((obs_n, None)):
@@ -215,7 +215,7 @@ class Updates:
            is to make it easier to look up what package obsoletes what item in 
            the rpmdb"""
         self.obsoleted_dict = {}
-        for new in self.obsoletes.keys():
+        for new in self.obsoletes:
             for old in self.obsoletes[new]:
                 if not self.obsoleted_dict.has_key(old):
                     self.obsoleted_dict[old] = []
@@ -270,7 +270,7 @@ class Updates:
 
         # remove the older stuff - if we're doing an update we only want the
         # newest evrs                
-        for (n, a) in newpkgs.keys():
+        for (n, a) in newpkgs:
             if a is None:
                 continue
 
@@ -280,7 +280,7 @@ class Updates:
                     newpkgs[(n, a)].remove((e, v, r))
 
                 
-        for (n, a) in newpkgs.keys():
+        for (n, a) in newpkgs:
             if a is None: # the None archs are only for lookups
                 continue
            
@@ -307,7 +307,7 @@ class Updates:
 
         # ok at this point our newpkgs list should be thinned, we should have only
         # the newest e,v,r's and only archs we can actually use
-        for (n, a) in newpkgs.keys():
+        for (n, a) in newpkgs:
             if a is None: # the None archs are only for lookups
                 continue
     
@@ -424,9 +424,9 @@ class Updates:
                     # is more than one arch updating with the highest ver
                     instarchs = []
                     availarchs = []
-                    for (n,a) in hipdict.keys():
+                    for (n,a) in hipdict:
                         instarchs.append(a)
-                    for (n,a) in hapdict.keys():
+                    for (n,a) in hapdict:
                         availarchs.append(a)
                     
                     rpm_a = rpmUtils.arch.getBestArchFromList(instarchs, myarch=self.myarch)
@@ -452,7 +452,7 @@ class Updates:
            is to make it easier to look up what package  will be updating what
            in the rpmdb"""
         self.updating_dict = {}
-        for old in self.updatesdict.keys():
+        for old in self.updatesdict:
             for new in self.updatesdict[old]:
                 if not self.updating_dict.has_key(new):
                     self.updating_dict[new] = []
@@ -482,8 +482,7 @@ class Updates:
         """returns updates for packages in a list of tuples of:
           (updating naevr, installed naevr)"""
         returnlist = []
-        for oldtup in self.updatesdict.keys():
-            (old_n, old_a, old_e, old_v, old_r) = oldtup
+        for oldtup in self.updatesdict:
             for newtup in self.updatesdict[oldtup]:
                 returnlist.append((newtup, oldtup))
         
@@ -509,7 +508,7 @@ class Updates:
         """returns updating packages in a list of (naevr) tuples"""
         returnlist = []
 
-        for oldtup in self.updatesdict.keys():
+        for oldtup in self.updatesdict:
             for newtup in self.updatesdict[oldtup]:
                 returnlist.append(newtup)
         
@@ -569,7 +568,7 @@ class Updates:
     def getObsoletedList(self, newest=0, name=None):
         """returns a list of pkgtuples obsoleting the package in name"""
         returnlist = []
-        for new in self.obsoletes.keys():
+        for new in self.obsoletes:
             for obstup in self.obsoletes[new]:
                 (n, a, e, v, r) = obstup
                 if n == name:
diff --git a/shell.py b/shell.py
index b2aab23..b21c402 100644
--- a/shell.py
+++ b/shell.py
@@ -105,7 +105,7 @@ class YumShell(cmd.Cmd):
 
     def completenames(self, text, line, begidx, endidx):
         ret = cmd.Cmd.completenames(self, text, line, begidx, endidx)
-        for command in self.base.yum_cli_commands.keys():
+        for command in self.base.yum_cli_commands:
             if command.startswith(text) and command != "shell":
                 ret.append(command)
         return ret
diff --git a/yum/__init__.py b/yum/__init__.py
index 8ff038d..5bd6fa0 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -557,7 +557,7 @@ class YumBase(depsolve.Depsolve):
         # first or the below does nothing so...
         if self.pkgSack:
             for repo in self.repos.listEnabled():
-                if repo in repo.sack.added.keys():
+                if repo in repo.sack.added:
                     if 'filelists' in repo.sack.added[repo]:
                         continue
                     else:
@@ -625,12 +625,12 @@ class YumBase(depsolve.Depsolve):
         ''' create a dictionary with po -> deps and dep -> pos references '''
         depTree = {}
         for txmbr in self.tsInfo:
-            if not txmbr.po in depTree.keys():
+            if not txmbr.po in depTree:
                 depTree[txmbr.po] = set()
-            for po in (txmbr.updates + txmbr.obsoletes+txmbr.depends_on):
+            for po in (txmbr.updates + txmbr.obsoletes + txmbr.depends_on):
                 # Add po -> dep reference
                 depTree[txmbr.po].add(po)
-                if not po in depTree.keys():
+                if not po in depTree:
                     depTree[po] = set()
                 # Add dep -> reference
                 depTree[po].add(txmbr.po)
@@ -682,7 +682,7 @@ class YumBase(depsolve.Depsolve):
         for r in self.repos.listEnabled():
             costs[r.cost] = 1
 
-        if len(costs.keys()) <= 1: # if all of our costs are the same then return
+        if len(costs) <= 1: # if all of our costs are the same then return
             return
             
         def _sort_by_cost(a, b):
@@ -1283,7 +1283,7 @@ class YumBase(depsolve.Depsolve):
                     else:
                         ftimehash[ftime].append(po)
 
-            for sometime in ftimehash.keys():
+            for sometime in ftimehash:
                 for po in ftimehash[sometime]:
                     recent.append(po)
         
@@ -1393,14 +1393,14 @@ class YumBase(depsolve.Depsolve):
                     matched_values[po] = tmpvalues
                     my_sets[s].append(po)
         
-        for pkg in matched_values.keys():
+        for pkg in matched_values:
             if scores.has_key(pkg):
                 continue
             count = 0
             
-            for this_set in my_sets.values():
+            for this_set in my_sets.itervalues():
                 if pkg in this_set:
-                    count+=1
+                    count += 1
             
             scores[pkg] = count
 
@@ -1637,11 +1637,11 @@ class YumBase(depsolve.Depsolve):
         
         pkgs = []
         if 'mandatory' in self.conf.group_package_types:
-            pkgs.extend(thisgroup.mandatory_packages.keys())
+            pkgs.extend(thisgroup.mandatory_packages)
         if 'default' in self.conf.group_package_types:
-            pkgs.extend(thisgroup.default_packages.keys())
+            pkgs.extend(thisgroup.default_packages)
         if 'optional' in self.conf.group_package_types:
-            pkgs.extend(thisgroup.optional_packages.keys())
+            pkgs.extend(thisgroup.optional_packages)
 
         for pkg in pkgs:
             self.verbose_logger.log(logginglevels.DEBUG_2,
@@ -1945,7 +1945,7 @@ class YumBase(depsolve.Depsolve):
                 raise Errors.InstallError, 'Package Object was not a package object instance'
             
         else:
-            if not kwargs.keys():
+            if not kwargs:
                 raise Errors.InstallError, 'Nothing specified to install'
 
             if kwargs.has_key('pattern'):
@@ -2060,7 +2060,7 @@ class YumBase(depsolve.Depsolve):
             obsoletes = []
 
         tx_return = []
-        if not po and not kwargs.keys(): # update everything (the easy case)
+        if not po and not kwargs: # update everything (the easy case)
             self.verbose_logger.log(logginglevels.DEBUG_2, 'Updating Everything')
             for (obsoleting, installed) in obsoletes:
                 obsoleting_pkg = self.getPackageObject(obsoleting)
@@ -2169,7 +2169,7 @@ class YumBase(depsolve.Depsolve):
             will be marked for removal.
             if no po then look at kwargs, if neither then raise an exception"""
 
-        if not po and not kwargs.keys():
+        if not po and not kwargs:
             raise Errors.RemoveError, 'Nothing specified to remove'
         
         tx_return = []
@@ -2490,9 +2490,9 @@ class YumBase(depsolve.Depsolve):
 
         except IndexError:
             raise Errors.YumBaseError, ["Unable to find a suitable mirror."]
-        if len(probs.keys()) > 0:
+        if len(probs) > 0:
             errstr = ["Errors were encountered while downloading packages."]
-            for key in probs.keys():
+            for key in probs:
                 errors = misc.unique(probs[key])
                 for error in errors:
                     errstr.append("%s: %s" %(key, error))
diff --git a/yum/comps.py b/yum/comps.py
index 054c733..3441469 100755
--- a/yum/comps.py
+++ b/yum/comps.py
@@ -62,6 +62,7 @@ class Group(object):
         return self.name
     
     def _packageiter(self):
+        # Gah, FIXME: real iterator/class
         lst = self.mandatory_packages.keys() + \
               self.optional_packages.keys() + \
               self.default_packages.keys() + \
@@ -164,13 +165,13 @@ class Group(object):
         # we only need package lists and any translation that we don't already
         # have
         
-        for pkg in obj.mandatory_packages.keys():
+        for pkg in obj.mandatory_packages:
             self.mandatory_packages[pkg] = 1
-        for pkg in obj.default_packages.keys():
+        for pkg in obj.default_packages:
             self.default_packages[pkg] = 1
-        for pkg in obj.optional_packages.keys():
+        for pkg in obj.optional_packages:
             self.optional_packages[pkg] = 1
-        for pkg in obj.conditional_packages.keys():
+        for pkg in obj.conditional_packages:
             self.conditional_packages[pkg] = obj.conditional_packages[pkg]
         
         # Handle cases where a comps.xml without name & decription tags
@@ -184,11 +185,11 @@ class Group(object):
             self.description = obj.description
             
         # name and description translations
-        for lang in obj.translated_name.keys():
+        for lang in obj.translated_name:
             if not self.translated_name.has_key(lang):
                 self.translated_name[lang] = obj.translated_name[lang]
         
-        for lang in obj.translated_description.keys():
+        for lang in obj.translated_description:
             if not self.translated_description.has_key(lang):
                 self.translated_description[lang] = obj.translated_description[lang]
         
@@ -266,11 +267,11 @@ class Category(object):
             self._groups[grp] = 1
         
         # name and description translations
-        for lang in obj.translated_name.keys():
+        for lang in obj.translated_name:
             if not self.translated_name.has_key(lang):
                 self.translated_name[lang] = obj.translated_name[lang]
         
-        for lang in obj.translated_description.keys():
+        for lang in obj.translated_description:
             if not self.translated_description.has_key(lang):
                 self.translated_description[lang] = obj.translated_description[lang]
 
@@ -383,10 +384,9 @@ class Comps(object):
             # if there are mandatory packages in the group, then make sure
             # they're all installed.  if any are missing, then the group
             # isn't installed.
-            if len(group.mandatory_packages.keys()) > 0:
-                check_pkgs = group.mandatory_packages.keys()
+            if len(group.mandatory_packages) > 0:
                 group.installed = True
-                for pkgname in check_pkgs:
+                for pkgname in group.mandatory_packages:
                     if not inst_pkg_names.has_key(pkgname):
                         group.installed = False
                         break
diff --git a/yum/mdparser.py b/yum/mdparser.py
index 47ec21a..e668744 100644
--- a/yum/mdparser.py
+++ b/yum/mdparser.py
@@ -96,7 +96,7 @@ class BaseEntry:
         
     def _prefixprops(self, elem, prefix):
         ret = {}
-        for key in elem.attrib.keys():
+        for key in elem.attrib:
             ret[prefix + '_' + self._bn(key)] = elem.attrib[key]
         return ret
 
diff --git a/yum/packageSack.py b/yum/packageSack.py
index d2b2d4b..b5d3aa8 100644
--- a/yum/packageSack.py
+++ b/yum/packageSack.py
@@ -441,7 +441,7 @@ class PackageSack(PackageSackBase):
         
     def __len__(self):
         ret = 0
-        for repo in self.pkgsByRepo.keys():
+        for repo in self.pkgsByRepo:
             ret += len(self.pkgsByRepo[repo])
         return ret
     
@@ -620,7 +620,7 @@ class PackageSack(PackageSackBase):
 
         self.clearIndexes()
         
-        for repoid in self.pkgsByRepo.keys():
+        for repoid in self.pkgsByRepo:
             for obj in self.pkgsByRepo[repoid]:
                 self._addPackageToIndex(obj)
         self.indexesBuilt = 1
@@ -684,7 +684,7 @@ class PackageSack(PackageSackBase):
         """return list of all packages, takes optional repoid"""
         returnList = []
         if repoid is None:
-            for repo in self.pkgsByRepo.keys():
+            for repo in self.pkgsByRepo:
                 returnList.extend(self.pkgsByRepo[repo])
         else:
             try:
diff --git a/yum/packages.py b/yum/packages.py
index 86a7d3e..504c0e1 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -586,14 +586,14 @@ class YumAvailablePackage(PackageObject, RpmBase):
             self.licenses.append(pkgdict.info['license'])
         
         if hasattr(pkgdict, 'files'):
-            for fn in pkgdict.files.keys():
+            for fn in pkgdict.files:
                 ftype = pkgdict.files[fn]
                 if not self.files.has_key(ftype):
                     self.files[ftype] = []
                 self.files[ftype].append(fn)
         
         if hasattr(pkgdict, 'prco'):
-            for rtype in pkgdict.prco.keys():
+            for rtype in pkgdict.prco:
                 for rdict in pkgdict.prco[rtype]:
                     name = rdict['name']
                     f = e = v = r  = None
@@ -671,7 +671,7 @@ class YumHeaderPackage(YumAvailablePackage):
                      "CONFLICT": "conflicts",
                      "REQUIRE": "requires",
                      "PROVIDE": "provides" }
-        for tag in tag2prco.keys():
+        for tag in tag2prco:
             name = self.hdr[getattr(rpm, 'RPMTAG_%sNAME' % tag)]
 
             lst = self.hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index ad2cfd3..9e049c6 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -62,7 +62,7 @@ class RPMDBPackageSack(PackageSackBase):
         '''Getter for the pkglist property. 
         Returns a list of package tuples.
         '''
-        if len(self._header_dict.keys()) == 0 :
+        if len(self._header_dict) == 0 :
             self._make_header_dict()
 
         return self._header_dict.keys()
diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index ed75d94..d5e2b0a 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -354,7 +354,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
             name = name[:-1]
        
         pkgs = []
-        if len(self.filelistsdb.keys()) == 0:
+        if len(self.filelistsdb) == 0:
             # grab repo object from primarydb and force filelists population in this sack using repo
             # sack.populate(repo, mdtype, callback, cacheonly)
             for (repo,cache) in self.primarydb.items():
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index 42b2fde..e78f7fc 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -60,10 +60,10 @@ class YumPackageSack(packageSack.PackageSack):
             if datatype in self.added[repo]:
                 return
 
-        total = len(dataobj.keys())
+        total = len(dataobj)
         if datatype == 'metadata':
             current = 0
-            for pkgid in dataobj.keys():
+            for pkgid in dataobj:
                 current += 1
                 if callback: callback.progressbar(current, total, repo)
                 pkgdict = dataobj[pkgid]
@@ -84,7 +84,7 @@ class YumPackageSack(packageSack.PackageSack):
                     raise Errors.RepoError, '%s md for %s imported before primary' \
                            % (datatype, repo.id)
             current = 0
-            for pkgid in dataobj.keys():
+            for pkgid in dataobj:
                 current += 1
                 if callback: callback.progressbar(current, total, repo)
                 pkgdict = dataobj[pkgid]
@@ -390,8 +390,7 @@ class YumRepository(Repository, config.RepoConf):
         """Convert our dict of headers to a list of 2-tuples for urlgrabber."""
         headers = []
 
-        keys = self.http_headers.keys()
-        for key in keys:
+        for key in self.http_headers:
             headers.append((key, self.http_headers[key]))
 
         return headers



More information about the Yum-cvs-commits mailing list