Jeremy Katz wrote:
On Tue, 2007-06-05 at 13:22 +0200, Florian Festi wrote:
   * TransactionData.relatedto and .depends_on converted to sets

Should be fine.  This is the sort of thing that becomes a lot easier to
integrate with separated out patchsets :)

Jeremy

Ok, this also contains a small speed up for .getMembers() but it should be a bit smaller than the original patch...

Florian
Index: yum/depsolve.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.166
diff -u -r1.166 depsolve.py
--- yum/depsolve.py	5 Jun 2007 15:27:20 -0000	1.166
+++ yum/depsolve.py	6 Jun 2007 09:06:17 -0000
@@ -957,13 +957,7 @@
                 member = self.bestPackagesFromList(pkgs)[0]
 
                 #Add relationship
-                found = False
-                for dependspo in txmbr.depends_on:
-                    if member.po == dependspo:
-                        found = True
-                        break
-                if not found:
-                    member.setAsDep(txmbr.po)
+                member.setAsDep(txmbr.po)
 
         for conflict in txmbr.po.returnPrco('conflicts'):
             (r, f, v) = conflict
Index: yum/transactioninfo.py
===================================================================
RCS file: /cvsroot/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.40
diff -u -r1.40 transactioninfo.py
--- yum/transactioninfo.py	17 Apr 2007 20:54:03 -0000	1.40
+++ yum/transactioninfo.py	6 Jun 2007 09:06:18 -0000
@@ -73,13 +73,11 @@
         returnlist = []
 
         if pkgtup is None:
-            for key in self.pkgdict.keys():
-                for p in self.pkgdict[key]:
-                    returnlist.append(p)
+            for members in self.pkgdict.itervalues():
+                returnlist.extend(members)
 
         elif self.pkgdict.has_key(pkgtup):
-            for p in self.pkgdict[pkgtup]:
-                returnlist.append(p)
+            returnlist.extend(self.pkgdict[pkgtup])
 
         return returnlist
             
@@ -291,7 +289,7 @@
         txmbr.po.state = TS_UPDATE        
         txmbr.ts_state = 'u'
         if oldpo:
-            txmbr.relatedto.append((oldpo.pkgtup, 'updates'))
+            txmbr.relatedto.add((oldpo.pkgtup, 'updates'))
             txmbr.updates.append(oldpo)
             self.addUpdated(oldpo, po)
         self.add(txmbr)
@@ -306,7 +304,7 @@
         txmbr.output_state =  TS_UPDATED
         txmbr.po.state = TS_UPDATED
         txmbr.ts_state = None
-        txmbr.relatedto.append((updating_po, 'updatedby'))
+        txmbr.relatedto.add((updating_po, 'updatedby'))
         txmbr.updated_by.append(updating_po)
         self.add(txmbr)
         return txmbr
@@ -320,7 +318,7 @@
         txmbr.output_state = TS_OBSOLETING
         txmbr.po.state = TS_OBSOLETING
         txmbr.ts_state = 'u'
-        txmbr.relatedto.append((oldpo, 'obsoletes'))
+        txmbr.relatedto.add((oldpo, 'obsoletes'))
         txmbr.obsoletes.append(oldpo)
         self.add(txmbr)
         return txmbr
@@ -334,7 +332,7 @@
         txmbr.output_state =  TS_OBSOLETED
         txmbr.po.state = TS_OBSOLETED
         txmbr.ts_state = None
-        txmbr.relatedto.append((obsoleting_po, 'obsoletedby'))
+        txmbr.relatedto.add((obsoleting_po, 'obsoletedby'))
         txmbr.obsoleted_by.append(obsoleting_po)
         self.add(txmbr)
         return txmbr
@@ -410,8 +408,8 @@
         self.isDep = 0
         self.reason = 'user' # reason for it to be in the transaction set
         self.process = None # 
-        self.relatedto = [] # ([relatedpkgtup, relationship)]
-        self.depends_on = []
+        self.relatedto = set() # ([relatedpkgtup, relationship)]
+        self.depends_on = set()
         self.obsoletes = []
         self.obsoleted_by = []
         self.updates = []
@@ -430,8 +428,8 @@
         
         self.isDep = 1
         if po:
-            self.relatedto.append((po.pkgtup, 'dependson'))
-            self.depends_on.append(po)
+            self.relatedto.add((po.pkgtup, 'dependson'))
+            self.depends_on.add(po)
 
     def __cmp__(self, other):
         if self.name > other.name:
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to