Bug #252840 - Fix TypeError which is triggered by a broken override of
authorZac Medico <zmedico@gentoo.org>
Mon, 29 Dec 2008 02:44:38 +0000 (02:44 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 29 Dec 2008 02:44:38 +0000 (02:44 -0000)
varnings.formatwarning(). Override warnings.showwarning() instead since
the api docs say it may be overriden while they do not say this about
formatwarning().

svn path=/main/trunk/; revision=12363

pym/portage_compat_namespace.py

index 07f22a95ec08a8d643d8925fe573c532ef119547..6956ec2b31ab4ad833706bbec5f47113e602aebe 100644 (file)
@@ -31,10 +31,15 @@ try:
 except (ImportError, AttributeError):
        raise ImportError("No module named %s" % __oldname)
 
-def _formatwarning(message, category, filename, lineno):
-       return "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
-
-warnings.formatwarning = _formatwarning
+def _showwarning(message, category, filename, lineno, file=None, line=None):
+       if file is None:
+               file = sys.stderr
+       try:
+               file.write("%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message))
+       except IOError:
+               pass
+
+warnings.showwarning = _showwarning
 
 warnings.warn("DEPRECATION NOTICE: The %s module was replaced by %s" % (__oldname, __newname), DeprecationWarning)
 sys.modules[__oldname] = __realmodule