[Python-checkins] bpo-34421 avoid unicode error in distutils logging (GH-8799)

Miss Islington (bot) webhook-mailer at python.org
Sat Sep 8 16:44:24 EDT 2018


https://github.com/python/cpython/commit/3b36642924a51e6bceb7033916c3049764817166
commit: 3b36642924a51e6bceb7033916c3049764817166
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-09-08T13:44:20-07:00
summary:

bpo-34421 avoid unicode error in distutils logging (GH-8799)


This caused installation errors in some cases on Windows.
Patch by Julien Malard.
(cherry picked from commit 0afada163c7ef25c3a9d46ed445481fb69f2ecaf)

Co-authored-by: Julien Malard <julien.malard at mail.mcgill.ca>

files:
A Misc/NEWS.d/next/Library/2018-09-07-10-57-00.bpo-34421.AKJISD.rst
M Lib/distutils/log.py

diff --git a/Lib/distutils/log.py b/Lib/distutils/log.py
index b301a8338c20..3a6602bc8b8e 100644
--- a/Lib/distutils/log.py
+++ b/Lib/distutils/log.py
@@ -31,7 +31,10 @@ def _log(self, level, msg, args):
                 # emulate backslashreplace error handler
                 encoding = stream.encoding
                 msg = msg.encode(encoding, "backslashreplace").decode(encoding)
-            stream.write('%s\n' % msg)
+            try:
+                stream.write('%s\n' % msg)
+            except UnicodeEncodeError:
+                stream.write('%s\n' % msg.encode('unicode-escape').decode('ascii'))
             stream.flush()
 
     def log(self, level, msg, *args):
diff --git a/Misc/NEWS.d/next/Library/2018-09-07-10-57-00.bpo-34421.AKJISD.rst b/Misc/NEWS.d/next/Library/2018-09-07-10-57-00.bpo-34421.AKJISD.rst
new file mode 100644
index 000000000000..cc1db086f0c4
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-09-07-10-57-00.bpo-34421.AKJISD.rst
@@ -0,0 +1 @@
+Fix distutils logging for non-ASCII strings.  This caused installation issues on Windows.



More information about the Python-checkins mailing list