diff options
author | Georg Brandl <georg@python.org> | 2013-05-12 10:08:05 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2013-05-12 10:08:05 (GMT) |
commit | 2665f218668dbf40b2bbabd4aa40b51f06fcd5f7 (patch) | |
tree | cb6537de4ab5f4efbe9ed9ed2523d2e7b25951d7 | |
parent | d1ef30fa60405d55faf104f257b98c2bde4f0e45 (diff) | |
parent | 64949fa20e4845e92a1d42f581a47b559a9acd25 (diff) | |
download | cpython-2665f218668dbf40b2bbabd4aa40b51f06fcd5f7.zip cpython-2665f218668dbf40b2bbabd4aa40b51f06fcd5f7.tar.gz cpython-2665f218668dbf40b2bbabd4aa40b51f06fcd5f7.tar.bz2 |
merge with 3.3
-rw-r--r-- | Lib/test/test_sax.py | 31 | ||||
-rw-r--r-- | Lib/xml/sax/saxutils.py | 5 | ||||
-rw-r--r-- | Misc/NEWS | 9 |
3 files changed, 45 insertions, 0 deletions
diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index e235a0b..0261c6a 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -15,6 +15,7 @@ from xml.sax.expatreader import create_parser from xml.sax.handler import feature_namespaces from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl from io import BytesIO, StringIO +import codecs import os.path import shutil from test import support @@ -538,6 +539,34 @@ class WriterXmlgenTest(BytesXmlgenTest): def getvalue(self): return b''.join(self) +class StreamWriterXmlgenTest(XmlgenTest, unittest.TestCase): + def ioclass(self): + raw = BytesIO() + writer = codecs.getwriter('ascii')(raw, 'xmlcharrefreplace') + writer.getvalue = raw.getvalue + return writer + + def xml(self, doc, encoding='iso-8859-1'): + return ('<?xml version="1.0" encoding="%s"?>\n%s' % + (encoding, doc)).encode('ascii', 'xmlcharrefreplace') + +class StreamReaderWriterXmlgenTest(XmlgenTest, unittest.TestCase): + fname = support.TESTFN + '-codecs' + + def ioclass(self): + writer = codecs.open(self.fname, 'w', encoding='ascii', + errors='xmlcharrefreplace', buffering=0) + self.addCleanup(support.unlink, self.fname) + writer.getvalue = self.getvalue + return writer + + def getvalue(self): + with open(self.fname, 'rb') as f: + return f.read() + + def xml(self, doc, encoding='iso-8859-1'): + return ('<?xml version="1.0" encoding="%s"?>\n%s' % + (encoding, doc)).encode('ascii', 'xmlcharrefreplace') start = b'<?xml version="1.0" encoding="iso-8859-1"?>\n' @@ -946,6 +975,8 @@ def test_main(): StringXmlgenTest, BytesXmlgenTest, WriterXmlgenTest, + StreamWriterXmlgenTest, + StreamReaderWriterXmlgenTest, ExpatReaderTest, ErrorReportingTest, XmlReaderTest) 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 @@ convenience of application and driver writers. import os, urllib.parse, urllib.request import io +import codecs from . import handler from . import xmlreader @@ -77,6 +78,10 @@ def _gettextwriter(out, encoding): # 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 @@ -91,6 +91,9 @@ Core and Builtins Library ------- +- Issue #17915: Fix interoperability of xml.sax with file objects returned by + codecs.open(). + - Issue #16601: Restarting iteration over tarfile no more continues from where it left off. Patch by Michael Birtwell. @@ -280,6 +283,12 @@ Tests - Issue #17692: test_sqlite now works with unittest test discovery. Patch by Zachary Ware. + +Documentation +------------- + +- Issue #15940: Specify effect of locale on time functions. + - Issue #6696: add documentation for the Profile objects, and improve profile/cProfile docs. Patch by Tom Pinckney. |