mirror of https://github.com/python/cpython.git
bpo-42151: don't set specified_attributes=1 in pure Python ElementTree (GH-22987)
This commit is contained in:
parent
b9fe16a027
commit
1f433406bd
|
@ -108,6 +108,19 @@
|
|||
<document>&entity;</document>
|
||||
"""
|
||||
|
||||
ATTLIST_XML = """\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE Foo [
|
||||
<!ELEMENT foo (bar*)>
|
||||
<!ELEMENT bar (#PCDATA)*>
|
||||
<!ATTLIST bar xml:lang CDATA "eng">
|
||||
<!ENTITY qux "quux">
|
||||
]>
|
||||
<foo>
|
||||
<bar>&qux;</bar>
|
||||
</foo>
|
||||
"""
|
||||
|
||||
def checkwarnings(*filters, quiet=False):
|
||||
def decorator(test):
|
||||
def newtest(*args, **kwargs):
|
||||
|
@ -1354,6 +1367,12 @@ def test_tree_write_attribute_order(self):
|
|||
self.assertEqual(serialize(root, method='html'),
|
||||
'<cirriculum status="public" company="example"></cirriculum>')
|
||||
|
||||
def test_attlist_default(self):
|
||||
# Test default attribute values; See BPO 42151.
|
||||
root = ET.fromstring(ATTLIST_XML)
|
||||
self.assertEqual(root[0].attrib,
|
||||
{'{http://www.w3.org/XML/1998/namespace}lang': 'eng'})
|
||||
|
||||
|
||||
class XMLPullParserTest(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -1560,7 +1560,6 @@ def __init__(self, *, target=None, encoding=None):
|
|||
# Configure pyexpat: buffering, new-style attribute handling.
|
||||
parser.buffer_text = 1
|
||||
parser.ordered_attributes = 1
|
||||
parser.specified_attributes = 1
|
||||
self._doctype = None
|
||||
self.entity = {}
|
||||
try:
|
||||
|
@ -1580,7 +1579,6 @@ def _setevents(self, events_queue, events_to_report):
|
|||
for event_name in events_to_report:
|
||||
if event_name == "start":
|
||||
parser.ordered_attributes = 1
|
||||
parser.specified_attributes = 1
|
||||
def handler(tag, attrib_in, event=event_name, append=append,
|
||||
start=self._start):
|
||||
append((event, start(tag, attrib_in)))
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Make the pure Python implementation of :mod:`xml.etree.ElementTree` behave
|
||||
the same as the C implementation (:mod:`_elementree`) regarding default
|
||||
attribute values (by not setting ``specified_attributes=1``).
|
Loading…
Reference in New Issue