From 2b64f99a919c85c26b9ade6bc667201795b8c4c4 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Fri, 29 Jan 2010 13:56:18 -0800 Subject: [PATCH] Use setdefault to populate dicts Should be faster than an if has_key else dance. --- yum/packageSack.py | 22 +++++++++------------- 1 files changed, 9 insertions(+), 13 deletions(-) diff --git a/yum/packageSack.py b/yum/packageSack.py index bad2e62..262cef3 100644 --- a/yum/packageSack.py +++ b/yum/packageSack.py @@ -691,11 +691,7 @@ class PackageSack(PackageSackBase): repoid = obj.repoid (name, arch, epoch, ver, rel) = obj.pkgtup - if self.compatarchs: - if self.compatarchs.has_key(arch): - self._addToDictAsList(self.pkgsByRepo, repoid, obj) - else: - self._addToDictAsList(self.pkgsByRepo, repoid, obj) + self.pkgsByRepo.setdefault(repoid, []).append(obj) if self.indexesBuilt: self._addPackageToIndex(obj) @@ -728,20 +724,20 @@ class PackageSack(PackageSackBase): # store the things provided just on name, not the whole require+version # this lets us reduce the set of pkgs to search when we're trying to depSolve for (n, fl, (e,v,r)) in obj.returnPrco('obsoletes'): - self._addToDictAsList(self.obsoletes, n, obj) + self.obsoletes.setdefault(n, []).append(obj) for (n, fl, (e,v,r)) in obj.returnPrco('requires'): - self._addToDictAsList(self.requires, n, obj) + self.requires.setdefault(n, []).append(obj) for (n, fl, (e,v,r)) in obj.returnPrco('provides'): - self._addToDictAsList(self.provides, n, obj) + self.provides.setdefault(n, []).append(obj) for (n, fl, (e,v,r)) in obj.returnPrco('conflicts'): - self._addToDictAsList(self.conflicts, n, obj) + self.conflicts.setdefault(n, []).append(obj) for ftype in obj.returnFileTypes(): for file in obj.returnFileEntries(ftype): - self._addToDictAsList(self.filenames, file, obj) - self._addToDictAsList(self.pkgsByID, obj.id, obj) + self.filenames.setdefault(file, []).append(obj) + self.pkgsByID.setdefault(obj.id, []).append(obj) (name, arch, epoch, ver, rel) = obj.pkgtup - self._addToDictAsList(self.nevra, (name, epoch, ver, rel, arch), obj) - self._addToDictAsList(self.nevra, (name, None, None, None, None), obj) + self.nevra.setdefault((name, epoch, ver, rel, arch), []).append(obj) + self.nevra.setdefault((name, None, None, None, None), []).append(obj) def _delPackageFromIndex(self, obj): for (n, fl, (e,v,r)) in obj.returnPrco('obsoletes'): -- 1.6.6