Make Package __str__ and __unicode__ methods more like DependencyArg.
authorZac Medico <zmedico@gentoo.org>
Thu, 16 Sep 2010 11:32:31 +0000 (04:32 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 16 Sep 2010 11:32:31 +0000 (04:32 -0700)
pym/_emerge/Package.py
pym/_emerge/Scheduler.py

index 0db16fb2f9d9d9bc720ec4319d9c65be441991cd..66ac7ff672da95228d6acac23d6929125f49ad3e 100644 (file)
@@ -4,7 +4,7 @@
 import sys
 from itertools import chain
 import portage
-from portage import _unicode_decode
+from portage import _encodings, _unicode_decode, _unicode_encode
 from portage.cache.mappings import slot_dict_class
 from portage.const import EBUILD_PHASES
 from portage.dep import Atom, check_required_use, use_reduce, \
@@ -298,6 +298,14 @@ class Package(Task):
                s += ")"
                return s
 
+       if sys.hexversion < 0x3000000:
+
+               __unicode__ = __str__
+
+               def __str__(self):
+                       return _unicode_encode(self.__unicode__(),
+                               encoding=_encodings['content'])
+
        class _use_class(object):
 
                __slots__ = ("__weakref__", "enabled")
index d45f26d9faca5b6a85a5f224db4f31682be2b0ec..4b6b80f766a50d22481da4bdf9638271456d44c8 100644 (file)
@@ -19,7 +19,7 @@ import portage
 from portage import StringIO
 from portage import os
 from portage import _encodings
-from portage import _unicode_encode
+from portage import _unicode_decode, _unicode_encode
 from portage.cache.mappings import slot_dict_class
 from portage.const import LIBC_PACKAGE_ATOM
 from portage.elog.messages import eerror
@@ -1203,7 +1203,9 @@ class Scheduler(PollScheduler):
                                printer.eerror(line)
                        printer.eerror("")
                        for failed_pkg in self._failed_pkgs_all:
-                               msg = " %s" % (colorize('INFORM', failed_pkg.pkg.__str__()),)
+                               # Use _unicode_decode() to force unicode format string so
+                               # that Package.__unicode__() is called in python2.
+                               msg = _unicode_decode(" %s") % (failed_pkg.pkg,)
                                log_path = self._locate_failure_log(failed_pkg)
                                if log_path is not None:
                                        msg += ", Log file:"