[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