[Python-checkins] cpython (merge 3.2 -> default): (merge 3.2) Issue #12451: The XInclude default loader of xml.etree now decodes

victor.stinner python-checkins at python.org
Thu Jun 30 18:11:26 CEST 2011


http://hg.python.org/cpython/rev/e8eea84a90dc
changeset:   71096:e8eea84a90dc
parent:      71094:77c589b27e90
parent:      71095:45e3dafb3dbe
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Thu Jun 30 18:11:18 2011 +0200
summary:
  (merge 3.2) Issue #12451: The XInclude default loader of xml.etree now decodes
files from UTF-8 instead of the locale encoding if the encoding is not
specified. It now also opens XML files for the parser in binary mode instead of
the text mode to avoid encoding issues.

files:
  Lib/xml/etree/ElementInclude.py |  9 +++++----
  Misc/NEWS                       |  5 +++++
  2 files changed, 10 insertions(+), 4 deletions(-)


diff --git a/Lib/xml/etree/ElementInclude.py b/Lib/xml/etree/ElementInclude.py
--- a/Lib/xml/etree/ElementInclude.py
+++ b/Lib/xml/etree/ElementInclude.py
@@ -67,7 +67,7 @@
 #
 # @param href Resource reference.
 # @param parse Parse mode.  Either "xml" or "text".
-# @param encoding Optional text encoding.
+# @param encoding Optional text encoding (UTF-8 by default for "text").
 # @return The expanded resource.  If the parse mode is "xml", this
 #    is an ElementTree instance.  If the parse mode is "text", this
 #    is a Unicode string.  If the loader fails, it can return None
@@ -75,13 +75,14 @@
 # @throws IOError If the loader fails to load the resource.
 
 def default_loader(href, parse, encoding=None):
-    file = open(href)
     if parse == "xml":
+        file = open(href, 'rb')
         data = ElementTree.parse(file).getroot()
     else:
+        if not encoding:
+            encoding = 'UTF-8'
+        file = open(href, 'r', encoding=encoding)
         data = file.read()
-        if encoding:
-            data = data.decode(encoding)
     file.close()
     return data
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -200,6 +200,11 @@
 Library
 -------
 
+- Issue #12451: The XInclude default loader of xml.etree now decodes files from
+  UTF-8 instead of the locale encoding if the encoding is not specified. It now
+  also opens XML files for the parser in binary mode instead of the text mode
+  to avoid encoding issues.
+
 - Issue #12451: doctest.debug_script() doesn't create a temporary file
   anymore to avoid encoding issues.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list