Today if you run the attached test script, you will get this output.

[EMAIL PROTECTED] yum]$ sudo python ~/yum-repr-test.py
[<yum.packages.YumInstalledPackage object at 0xb73c56c>]
[<yum.sqlitesack.YumAvailablePackageSqlite object at 0xb73dbcc>]

after adding the attached patch you will get this output.

[EMAIL PROTECTED] yum]$ cp ~/yum-repr-test.py .
[EMAIL PROTECTED] yum]$ sudo python ./yum-repr-test.py
[<Installed Package : yumex-2.0.3-2.fc8.noarch >]
[<Available Package : yumex-2.0.3-2.fc8.noarch (updates) >]

much more informative, very useful wen debugging yum and running in the interactive python console.

Anybody have any objections to adding this patch.

Tim
>From 724690d2e6adb88dc8c7240c35588a1607c0a85b Mon Sep 17 00:00:00 2001
From: Tim Lauridsen <[EMAIL PROTECTED]>
Date: Sun, 3 Feb 2008 14:11:23 +0100
Subject: [PATCH] * make package object show some useful info when printed.
 * make print str(po) look the same for installed and available packages.

---
 yum/packages.py   |    7 +++++--
 yum/sqlitesack.py |    3 +++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/yum/packages.py b/yum/packages.py
index 3c8e712..18ccbed 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -706,10 +706,10 @@ class YumHeaderPackage(YumAvailablePackage):
         
     def __str__(self):
         if self.epoch == '0':
-            val = '%s - %s-%s.%s' % (self.name, self.version, self.release, 
+            val = '%s-%s-%s.%s' % (self.name, self.version, self.release, 
                                         self.arch)
         else:
-            val = '%s - %s:%s-%s.%s' % (self.name, self.epoch, self.version,
+            val = '%s:%s-%s-%s.%s' % (self.epoch,self.name, self.version,
                                            self.release, self.arch)
         return val
 
@@ -822,6 +822,9 @@ class YumInstalledPackage(YumHeaderPackage):
         fakerepo = _installed_repo
         YumHeaderPackage.__init__(self, fakerepo, hdr)
 
+    def __repr__(self):
+        return "<Installed Package : %s >" % (str(self))
+
     def verify(self, patterns=[]):
         """verify that the installed files match the packaged checksum
            optionally verify they match only if they are in the 'pattern' list
diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 0c53da9..a4ee7fd 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -68,6 +68,9 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
         self._hash = None
 
     files = property(fget=lambda self: self._loadFiles())
+    
+    def __repr__(self):
+        return "<Available Package : %s (%s) >" % (str(self),self.repo.id)
         
     def _read_db_obj(self, db_obj, item=None):
         """read the db obj. If asked for a specific item, return it.
-- 
1.5.3.8

import yum
yb = yum.YumBase()
yb.doConfigSetup()
ipo = yb.rpmdb.returnNewestByName(name='yumex')
apo = yb.pkgSack.returnNewestByName(name='yumex')
print ipo
print apo

_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to