merge with 3.3

This commit is contained in:
Georg Brandl 2013-05-12 12:08:05 +02:00
commit 2665f21866
3 changed files with 45 additions and 0 deletions

View File

@ -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)

View File

@ -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

View File

@ -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.