[yum-git] output.py yum/misc.py

James Antill james at linux.duke.edu
Thu Apr 10 20:30:48 UTC 2008


 output.py   |    9 +++------
 yum/misc.py |   11 +++++++++--
 2 files changed, 12 insertions(+), 8 deletions(-)

New commits:
commit 43c7e9c33da64c568e1ceca8765568ac631cc7af
Author: James Antill <james at and.org>
Date:   Thu Apr 10 16:30:43 2008 -0400

    Create unicode_maybe ... try and ignore errors ... so at least we don't crash

diff --git a/output.py b/output.py
index 697c456..061a1d4 100644
--- a/output.py
+++ b/output.py
@@ -29,7 +29,7 @@ import re # For YumTerm
 
 from urlgrabber.progress import TextMeter
 from urlgrabber.grabber import URLGrabError
-from yum.misc import sortPkgObj, prco_tuple_to_string, to_str, to_unicode
+from yum.misc import sortPkgObj, prco_tuple_to_string, to_str, to_unicode_maybe
 from rpmUtils.miscutils import checkSignals
 from yum.constants import *
 
@@ -747,7 +747,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
             fmt = self._makefmt(percent, ts_current, ts_total)
             msg = fmt % (process, pkgname)
             if msg != self.lastmsg:
-                sys.stdout.write(msg)
+                sys.stdout.write(to_unicode_maybe(msg))
                 sys.stdout.flush()
                 self.lastmsg = msg
             if te_current == te_total:
@@ -755,10 +755,7 @@ class YumCliRPMCallBack(RPMBaseCallback):
 
     def scriptout(self, package, msgs):
         if msgs:
-            if not sys.stdout.isatty():
-                sys.stdout.write(to_unicode(msgs))
-            else:
-                sys.stdout.write(msgs)
+            sys.stdout.write(to_unicode_maybe(msgs))
             sys.stdout.flush()
 
     def _makefmt(self, percent, ts_current, ts_total, progress = True):
diff --git a/yum/misc.py b/yum/misc.py
index c164e87..a275ee1 100644
--- a/yum/misc.py
+++ b/yum/misc.py
@@ -526,13 +526,20 @@ def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'):
     
     return to_complete_items
     
-def to_unicode(obj, encoding='utf-8'):
+def to_unicode(obj, encoding='utf-8', errors='strict'):
     ''' convert a 'str' to 'unicode' '''
     if isinstance(obj, basestring):
         if not isinstance(obj, unicode):
-            obj = unicode(obj, encoding)
+            obj = unicode(obj, encoding, errors)
     return obj
 
+def to_unicode_maybe(obj, encoding='utf-8', errors='replace'):
+    ''' Don't ask don't tell, only use when you must '''
+    try:
+        return to_unicode(obj, encoding, errors)
+    except UnicodeEncodeError:
+        return obj
+
 def to_str(obj):
     """ Convert something to a string, if it isn't one. """
     # NOTE: unicode counts as a string just fine. We just want objects to call



More information about the Yum-cvs-commits mailing list