[yum-commits] 2 commits - yum/packages.py

zpavlas at osuosl.org zpavlas at osuosl.org
Thu Dec 6 11:18:59 UTC 2012


 yum/packages.py |  100 ++++++++++++++++++++++++--------------------------------
 1 file changed, 43 insertions(+), 57 deletions(-)

New commits:
commit 5a6928232055cd20bcf99e2fd4fc9802e15d06b6
Author: Zdeněk Pavlas <zpavlas at redhat.com>
Date:   Fri Nov 23 13:22:35 2012 +0100

    xml_dump_{primary,filelists,other}_metadata() cleanup
    
    Fix indent of some elements, remove some insignificant newlines.
    Always put a single \n between </package> and next <package> tags.
    Save few strcats.

diff --git a/yum/packages.py b/yum/packages.py
index 323af76..62f989f 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -1203,25 +1203,14 @@ class YumAvailablePackage(PackageObject, RpmBase):
         return msg
     
     def _dump_files(self, primary=False):
-        msg ="\n"
-        if not primary:
-            files = self.returnFileEntries('file')
-            dirs = self.returnFileEntries('dir')
-            ghosts = self.returnFileEntries('ghost')
-        else:
-            files = self.returnFileEntries('file', primary_only=True)
-            dirs = self.returnFileEntries('dir', primary_only=True)
-            ghosts = self.returnFileEntries('ghost', primary_only=True)
-                
-        for fn in sorted(files):
-            msg += """    <file>%s</file>\n""" % misc.to_xml(fn)
-        for fn in sorted(dirs):
-            msg += """    <file type="dir">%s</file>\n""" % misc.to_xml(fn)
-        for fn in sorted(ghosts):
-            msg += """    <file type="ghost">%s</file>\n""" % misc.to_xml(fn)
-        
-        return msg
-
+        msg = []
+        for fn in sorted(self.returnFileEntries('file', primary)):
+            msg.append('\n  <file>%s</file>' % misc.to_xml(fn))
+        for fn in sorted(self.returnFileEntries('dir', primary)):
+            msg.append('\n  <file type="dir">%s</file>' % misc.to_xml(fn))
+        for fn in sorted(self.returnFileEntries('ghost', primary)):
+            msg.append('\n  <file type="ghost">%s</file>' % misc.to_xml(fn))
+        return ''.join(msg)
 
     def _requires_with_pre(self):
         raise NotImplementedError()
@@ -1284,7 +1273,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
     def _dump_changelog(self, clog_limit):
         if not self.changelog:
             return ""
-        msg = "\n"
+        msg = []
         # We need to output them "backwards", so the oldest is first
         if not clog_limit:
             clogs = self.changelog
@@ -1299,10 +1288,10 @@ class YumAvailablePackage(PackageObject, RpmBase):
                 hack_ts += 1
             last_ts = ts
             ts += hack_ts
-            msg += """<changelog author="%s" date="%s">%s</changelog>\n""" % (
+            msg.append('\n  <changelog author="%s" date="%s">%s</changelog>' % (
                         misc.to_xml(author, attrib=True), misc.to_xml(str(ts)), 
-                        misc.to_xml(content))
-        return msg
+                        misc.to_xml(content)))
+        return ''.join(msg)
 
     def xml_dump_primary_metadata(self):
         msg = """\n<package type="rpm">"""
@@ -1313,23 +1302,25 @@ class YumAvailablePackage(PackageObject, RpmBase):
         return msg
 
     def xml_dump_filelists_metadata(self):
-        msg = """\n<package pkgid="%s" name="%s" arch="%s">
-    <version epoch="%s" ver="%s" rel="%s"/>\n""" % (self.checksum, self.name, 
-                                     self.arch, self.epoch, self.ver, self.rel)
-        msg += self._dump_files()
-        msg += "</package>\n"
+        msg = """
+<package pkgid="%s" name="%s" arch="%s">
+  <version epoch="%s" ver="%s" rel="%s"/>%s
+</package>""" % (self.checksum, self.name, self.arch,
+                 self.epoch, self.ver, self.rel,
+                 self._dump_files())
         assert type(msg) is str
         return msg
 
     def xml_dump_other_metadata(self, clog_limit=0):
-        msg = """\n<package pkgid="%s" name="%s" arch="%s">
-    <version epoch="%s" ver="%s" rel="%s"/>\n""" % (self.checksum, self.name, 
-                                     self.arch, self.epoch, self.ver, self.rel)
-        msg += "%s\n</package>\n" % self._dump_changelog(clog_limit)
+        msg = """
+<package pkgid="%s" name="%s" arch="%s">
+  <version epoch="%s" ver="%s" rel="%s"/>%s
+</package>""" % (self.checksum, self.name, self.arch,
+                 self.epoch, self.ver, self.rel,
+                 self._dump_changelog(clog_limit))
         assert type(msg) is str
         return msg
 
-
 # HACK: This is completely retarded. Don't blame me, someone just fix
 #       rpm-python already. This is almost certainly not all of the problems,
 #       but w/e.
@@ -2196,11 +2187,11 @@ class YumLocalPackage(YumHeaderPackage):
             relpath = self.localpath
 
         if self._baseurl:
-            msg = """<location xml:base="%s" href="%s"/>\n""" % (
+            msg = """  <location xml:base="%s" href="%s"/>\n""" % (
                                      misc.to_xml(self._baseurl, attrib=True),
                                      misc.to_xml(relpath, attrib=True))
         else:
-            msg = """<location href="%s"/>\n""" % misc.to_xml(relpath, attrib=True)
+            msg = """  <location href="%s"/>\n""" % misc.to_xml(relpath, attrib=True)
 
         return msg
 
commit 72febef86c0f1238baac3a7232c97152132fe55a
Author: Zdeněk Pavlas <zpavlas at redhat.com>
Date:   Fri Nov 23 10:29:06 2012 +0100

    Avoid converting to unicode and back in dump_xml_*.  BZ 716235.
    
    Some speedup in createpo (from 2 to 6 percent)

diff --git a/yum/packages.py b/yum/packages.py
index 1ce45f4..323af76 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -857,22 +857,14 @@ class YumAvailablePackage(PackageObject, RpmBase):
         if hasattr(self, '_committer_ret'):
             return self._committer_ret
 
-        def _nf2ascii(x):
-            """ does .encode("ascii", "replace") but it never fails. """
-            ret = []
-            for val in x:
-                if ord(val) >= 128:
-                    val = '?'
-                ret.append(val)
-            return "".join(ret)
-
         if not len(self.changelog): # Empty changelog is _possible_ I guess
             self._committer_ret = self.packager
             return self._committer_ret
         val = self.changelog[0][1]
         # Chagnelog data is in multiple locale's, so we convert to ascii
         # ignoring "bad" chars.
-        val = _nf2ascii(val)
+        val = misc.to_unicode(val, errors='replace')
+        val = val.encode('ascii', 'replace')
         # Hacky way to get rid of version numbers...
         ix = val.find('> ')
         if ix != -1:
@@ -1123,10 +1115,10 @@ class YumAvailablePackage(PackageObject, RpmBase):
         
         packager = url = ''
         if self.packager:
-            packager = misc.to_unicode(misc.to_xml(self.packager))
+            packager = misc.to_xml(self.packager)
         
         if self.url:
-            url = misc.to_unicode(misc.to_xml(self.url))
+            url = misc.to_xml(self.url)
         (csum_type, csum, csumid) = self.checksums[0]
         msg = """
   <name>%s</name>
@@ -1140,8 +1132,8 @@ class YumAvailablePackage(PackageObject, RpmBase):
   <time file="%s" build="%s"/>
   <size package="%s" installed="%s" archive="%s"/>\n""" % (self.name, 
          self.arch, self.epoch, self.ver, self.rel, csum_type, csum, 
-         misc.to_unicode(misc.to_xml(self.summary)), 
-         misc.to_unicode(misc.to_xml(self.description)), 
+         misc.to_xml(self.summary),
+         misc.to_xml(self.description),
          packager, url, self.filetime, 
          self.buildtime, self.packagesize, self.installedsize, self.archivesize)
         
@@ -1314,25 +1306,28 @@ class YumAvailablePackage(PackageObject, RpmBase):
 
     def xml_dump_primary_metadata(self):
         msg = """\n<package type="rpm">"""
-        msg += misc.to_unicode(self._dump_base_items())
-        msg += misc.to_unicode(self._dump_format_items())
+        msg += self._dump_base_items()
+        msg += self._dump_format_items()
         msg += """\n</package>"""
-        return misc.to_utf8(msg)
+        assert type(msg) is str
+        return msg
 
     def xml_dump_filelists_metadata(self):
         msg = """\n<package pkgid="%s" name="%s" arch="%s">
     <version epoch="%s" ver="%s" rel="%s"/>\n""" % (self.checksum, self.name, 
                                      self.arch, self.epoch, self.ver, self.rel)
-        msg += misc.to_unicode(self._dump_files())
+        msg += self._dump_files()
         msg += "</package>\n"
-        return misc.to_utf8(msg)
+        assert type(msg) is str
+        return msg
 
     def xml_dump_other_metadata(self, clog_limit=0):
         msg = """\n<package pkgid="%s" name="%s" arch="%s">
     <version epoch="%s" ver="%s" rel="%s"/>\n""" % (self.checksum, self.name, 
                                      self.arch, self.epoch, self.ver, self.rel)
-        msg += "%s\n</package>\n" % misc.to_unicode(self._dump_changelog(clog_limit))
-        return misc.to_utf8(msg)
+        msg += "%s\n</package>\n" % self._dump_changelog(clog_limit)
+        assert type(msg) is str
+        return msg
 
 
 # HACK: This is completely retarded. Don't blame me, someone just fix
@@ -1519,9 +1514,9 @@ class YumHeaderPackage(YumAvailablePackage):
         # then create a _loadChangelog() method to put them into the 
         # self._changelog attr
         if len(self.hdr['changelogname']) > 0:
-            return zip(misc.to_unicode(self.hdr['changelogtime'], errors='replace'),
-                       misc.to_unicode(self.hdr['changelogname'], errors='replace'),
-                       misc.to_unicode(self.hdr['changelogtext'], errors='replace'))
+            return zip(self.hdr['changelogtime'],
+                       self.hdr['changelogname'],
+                       self.hdr['changelogtext'])
         return []
 
     def returnChecksums(self):


More information about the Yum-commits mailing list