[Piuparts-commits] [SCM] piuparts git repository branch, develop, updated. 0.53-11-g891122c

Holger Levsen holger at layer-acht.org
Mon Jun 17 15:55:58 UTC 2013


The following commit has been merged in the develop branch:
commit 5518d2adcf808a97ada2b11f124a88cf84d97d63
Author: David Steele <dsteele at gmail.com>
Date:   Wed Feb 27 19:07:09 2013 -0500

    packagesdb - Refactor out get_rdep_dict() from calc_rrdep_counts().
    
    Also, cache the dictionary for performance.

diff --git a/piupartslib/packagesdb.py b/piupartslib/packagesdb.py
index 187b966..c2f1fa6 100644
--- a/piupartslib/packagesdb.py
+++ b/piupartslib/packagesdb.py
@@ -320,6 +320,7 @@ class PackagesDB:
         self._dependency_databases = []
         self._recycle_mode = False
         self._candidates_for_testing = None
+        self._rdeps = None
         self.set_subdirs(ok="pass", fail="fail", evil="untestable",
                          reserved="reserved", morefail=["bugged", "affected"],
                          recycle="recycle")
@@ -758,25 +759,31 @@ class PackagesDB:
         else:
             raise LogfileExists(self._evil, package, version)
 
+    def _get_rdep_dict(self):
+        """Return dict of one-level reverse dependencies by package"""
+
+        if self._rdeps is None:
+            self._find_all_packages()       # populate _packages
+
+            self._rdeps = {}
+            for pkg_name in self._packages.keys():
+                # use the Packages dependencies() method for a conservative count
+                for dep in self._packages[pkg_name].dependencies():
+                    if dep in self._rdeps:
+                        self._rdeps[dep].append( pkg_name )
+                    else:
+                        self._rdeps[dep] = [pkg_name]
+
+        return( self._rdeps )
+
     def calc_rrdep_counts(self):
         """Calculate recursive reverse dependency counts for Packages"""
 
-        self._find_all_packages()       # populate _packages
         self._compute_package_states()  # populate _package_state
         error_states = self.get_error_states()
         waiting_states = self.get_waiting_states()
 
-        # create a reverse dependency dictionary.
-        # entries consist of a one-level list of reverse dependency package names,
-        # by package name
-        rdeps = {}
-        for pkg_name in self._packages.keys():
-            # use the Packages dependencies() method for a conservative count
-            for dep in self._packages[pkg_name].dependencies():
-                if dep in rdeps:
-                    rdeps[dep].append(pkg_name)
-                else:
-                    rdeps[dep] = [pkg_name]
+        rdeps = self._get_rdep_dict()
 
         def recurse_rdeps(pkg_name, rdeps, rrdep_dict):
             """ Recurse through the reverse dep arrays to determine the recursive

-- 
piuparts git repository



More information about the Piuparts-commits mailing list