Issue #22915: SAX parser now supports files opened with file descriptor or

bytes path.
This commit is contained in:
Serhiy Storchaka 2014-11-27 22:13:16 +02:00
parent 7a6915e17d
commit fc8e9b0e72
3 changed files with 28 additions and 1 deletions

View File

@ -648,6 +648,30 @@ class ExpatReaderTest(XmlTestBase):
self.assertEqual(result.getvalue(), xml_test_out)
def test_expat_binary_file_bytes_name(self):
fname = os.fsencode(TEST_XMLFILE)
parser = create_parser()
result = BytesIO()
xmlgen = XMLGenerator(result)
parser.setContentHandler(xmlgen)
with open(fname, 'rb') as f:
parser.parse(f)
self.assertEqual(result.getvalue(), xml_test_out)
def test_expat_binary_file_int_name(self):
parser = create_parser()
result = BytesIO()
xmlgen = XMLGenerator(result)
parser.setContentHandler(xmlgen)
with open(TEST_XMLFILE, 'rb') as f:
with open(f.fileno(), 'rb', closefd=False) as f2:
parser.parse(f2)
self.assertEqual(result.getvalue(), xml_test_out)
# ===== DTDHandler support
class TestDTDHandler:

View File

@ -346,7 +346,7 @@ def prepare_input_source(source, base=""):
f = source
source = xmlreader.InputSource()
source.setByteStream(f)
if hasattr(f, "name"):
if hasattr(f, "name") and isinstance(f.name, str):
source.setSystemId(f.name)
if source.getByteStream() is None:

View File

@ -36,6 +36,9 @@ Core and Builtins
Library
-------
- Issue #22915: SAX parser now supports files opened with file descriptor or
bytes path.
- Issue #22609: Constructors and update methods of mapping classes in the
collections module now accept the self keyword argument.