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.handler import feature_namespaces from xml.sax.handler import feature_namespaces
from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl
from io import BytesIO, StringIO from io import BytesIO, StringIO
import codecs
import os.path import os.path
import shutil import shutil
from test import support from test import support
@ -538,6 +539,34 @@ def tell(self):
def getvalue(self): def getvalue(self):
return b''.join(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' start = b'<?xml version="1.0" encoding="iso-8859-1"?>\n'
@ -946,6 +975,8 @@ def test_main():
StringXmlgenTest, StringXmlgenTest,
BytesXmlgenTest, BytesXmlgenTest,
WriterXmlgenTest, WriterXmlgenTest,
StreamWriterXmlgenTest,
StreamReaderWriterXmlgenTest,
ExpatReaderTest, ExpatReaderTest,
ErrorReportingTest, ErrorReportingTest,
XmlReaderTest) XmlReaderTest)

View File

@ -5,6 +5,7 @@
import os, urllib.parse, urllib.request import os, urllib.parse, urllib.request
import io import io
import codecs
from . import handler from . import handler
from . import xmlreader from . import xmlreader
@ -77,6 +78,10 @@ def _gettextwriter(out, encoding):
# use a text writer as is # use a text writer as is
return out return out
if isinstance(out, (codecs.StreamWriter, codecs.StreamReaderWriter)):
# use a codecs stream writer as is
return out
# wrap a binary writer with TextIOWrapper # wrap a binary writer with TextIOWrapper
if isinstance(out, io.RawIOBase): if isinstance(out, io.RawIOBase):
# Keep the original file open when the TextIOWrapper is # Keep the original file open when the TextIOWrapper is

View File

@ -91,6 +91,9 @@ Core and Builtins
Library 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 - Issue #16601: Restarting iteration over tarfile no more continues from where
it left off. Patch by Michael Birtwell. it left off. Patch by Michael Birtwell.
@ -280,6 +283,12 @@ Tests
- Issue #17692: test_sqlite now works with unittest test discovery. - Issue #17692: test_sqlite now works with unittest test discovery.
Patch by Zachary Ware. Patch by Zachary Ware.
Documentation
-------------
- Issue #15940: Specify effect of locale on time functions.
- Issue #6696: add documentation for the Profile objects, and improve - Issue #6696: add documentation for the Profile objects, and improve
profile/cProfile docs. Patch by Tom Pinckney. profile/cProfile docs. Patch by Tom Pinckney.