Issue #17915: Fix interoperability of xml.sax with file objects returned by
codecs.open().
diff --git a/Lib/xml/sax/saxutils.py b/Lib/xml/sax/saxutils.py
index a62183a..0798ecd 100644
--- a/Lib/xml/sax/saxutils.py
+++ b/Lib/xml/sax/saxutils.py
@@ -5,6 +5,7 @@
import os, urllib.parse, urllib.request
import io
+import codecs
from . import handler
from . import xmlreader
@@ -77,6 +78,10 @@
# use a text writer as is
return out
+ if isinstance(out, (codecs.StreamWriter, codecs.StreamReaderWriter)):
+ # use a codecs stream writer as is
+ return out
+
# wrap a binary writer with TextIOWrapper
if isinstance(out, io.RawIOBase):
# Keep the original file open when the TextIOWrapper is