From 9cb30d50ae16531e4f08ed5e44c881e6497851a2 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 10:23:22 -0400 Subject: [PATCH 1/9] Fix: add missing self._localName assignment in `xml.dom.minidom.Attr` X-Ref: https://github.com/python/typeshed/pull/8590#discussion_r951473977 This adds a missing assignment to `_localName` --- Lib/xml/dom/minidom.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py index d09ef5e7d0371a..ef8a159833bbc0 100644 --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -358,6 +358,8 @@ def __init__(self, qName, namespaceURI=EMPTY_NAMESPACE, localName=None, self._name = qName self.namespaceURI = namespaceURI self._prefix = prefix + if localName is not None: + self._localName = localName self.childNodes = NodeList() # Add the single child node that represents the value of the attr From 70a82e145c0efc0775a12368dbf738146b77662e Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 13:50:03 -0400 Subject: [PATCH 2/9] fix: add missing unit test --- Lib/test/test_minidom.py | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index 97620258d82f6b..9ef3100ad5f28f 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -77,6 +77,51 @@ def testParseFromTextFile(self): dom.unlink() self.confirm(isinstance(dom, Document)) + def testAttrModeSetsParamsAsAttrs(self): + attr = Attr("qName", "namespaceURI", "localName", "prefix") + self.assertEqual( + attr._name, + "qName", + "testAttrModeSetsParamsAsAttrs -- qName parameter does not match", + ) + self.assertEqual( + attr.namespaceURI, + "namespaceURI", + "testAttrModeSetsParamsAsAttrs -- namespaceURI parameter does not match", + ) + self.assertEqual( + attr._prefix, + "prefix", + "testAttrModeSetsParamsAsAttrs -- prefix parameter does not match", + ) + self.assertEqual( + attr._localName, + "localName", + "testAttrModeSetsParamsAsAttrs -- localName parameter does not match", + ) + + def testAttrModeSetsNonOptionalAttrs(self): + attr = Attr("qName", "namespaceURI", None, "prefix") + self.assertEqual( + attr._name, + "qName", + "testAttrModeSetsParamsAsAttrs -- qName parameter does not match", + ) + self.assertEqual( + attr.namespaceURI, + "namespaceURI", + "testAttrModeSetsParamsAsAttrs -- namespaceURI parameter does not match", + ) + self.assertEqual( + attr._prefix, + "prefix", + "testAttrModeSetsParamsAsAttrs -- prefix parameter does not match", + ) + self.assertFalse( + hasattr(attr, "_localName"), + "testAttrModeSetsParamsAsAttrs -- localName parameter set when None", + ) + def testGetElementsByTagName(self): dom = parse(tstfile) self.confirm(dom.getElementsByTagName("LI") == \ From c97a7fa11b3e8b085bc416e47be54d4de72ca851 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 13:50:25 -0400 Subject: [PATCH 3/9] fix: add missing import --- Lib/test/test_minidom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index 9ef3100ad5f28f..2171abca35eedd 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -9,7 +9,7 @@ import pyexpat import xml.dom.minidom -from xml.dom.minidom import parse, Node, Document, parseString +from xml.dom.minidom import parse, Attr, Node, Document, parseString from xml.dom.minidom import getDOMImplementation from xml.parsers.expat import ExpatError From fb8c871c9bd4042e687f6e4ae0c308b5863eb46c Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 13:54:26 -0400 Subject: [PATCH 4/9] fix: add blurb --- .../next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst diff --git a/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst new file mode 100644 index 00000000000000..f716482a774deb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst @@ -0,0 +1 @@ +Fix unused `localName` parameter in `Attr` minidom node. From d2eec5717d863bf91834a2627abc7f84201b4c26 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 13:56:31 -0400 Subject: [PATCH 5/9] fix: use of default role in rst --- .../next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst index f716482a774deb..cbcb8513aa1320 100644 --- a/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst +++ b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst @@ -1 +1 @@ -Fix unused `localName` parameter in `Attr` minidom node. +Fix unused ``localName`` parameter in ``Attr`` minidom node. From fcbe67a04cde640c9b3a2b0ddbe99f2b02809750 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 20:34:42 -0400 Subject: [PATCH 6/9] Use requested NEWS format Co-authored-by: Jelle Zijlstra --- .../next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst index cbcb8513aa1320..c34eff22b3d456 100644 --- a/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst +++ b/Misc/NEWS.d/next/Library/2022-08-22-13-54-20.gh-issue-96175.bH7zGU.rst @@ -1 +1 @@ -Fix unused ``localName`` parameter in ``Attr`` minidom node. +Fix unused ``localName`` parameter in the ``Attr`` class in :mod:`xml.dom.minidom`. From dee21ce02d1228fb84aafc513e8a4199ef72ff45 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 20:34:18 -0400 Subject: [PATCH 7/9] fix: remove undesired unit test error messages --- Lib/test/test_minidom.py | 47 +++++++--------------------------------- 1 file changed, 8 insertions(+), 39 deletions(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index 2171abca35eedd..145b7e14703227 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -79,48 +79,17 @@ def testParseFromTextFile(self): def testAttrModeSetsParamsAsAttrs(self): attr = Attr("qName", "namespaceURI", "localName", "prefix") - self.assertEqual( - attr._name, - "qName", - "testAttrModeSetsParamsAsAttrs -- qName parameter does not match", - ) - self.assertEqual( - attr.namespaceURI, - "namespaceURI", - "testAttrModeSetsParamsAsAttrs -- namespaceURI parameter does not match", - ) - self.assertEqual( - attr._prefix, - "prefix", - "testAttrModeSetsParamsAsAttrs -- prefix parameter does not match", - ) - self.assertEqual( - attr._localName, - "localName", - "testAttrModeSetsParamsAsAttrs -- localName parameter does not match", - ) + self.assertEqual(attr._name, "qName") + self.assertEqual(attr.namespaceURI, "namespaceURI") + self.assertEqual(attr._prefix, "prefix") + self.assertEqual(attr._localName, "localName") def testAttrModeSetsNonOptionalAttrs(self): attr = Attr("qName", "namespaceURI", None, "prefix") - self.assertEqual( - attr._name, - "qName", - "testAttrModeSetsParamsAsAttrs -- qName parameter does not match", - ) - self.assertEqual( - attr.namespaceURI, - "namespaceURI", - "testAttrModeSetsParamsAsAttrs -- namespaceURI parameter does not match", - ) - self.assertEqual( - attr._prefix, - "prefix", - "testAttrModeSetsParamsAsAttrs -- prefix parameter does not match", - ) - self.assertFalse( - hasattr(attr, "_localName"), - "testAttrModeSetsParamsAsAttrs -- localName parameter set when None", - ) + self.assertEqual(attr._name, "qName") + self.assertEqual(attr.namespaceURI, "namespaceURI") + self.assertEqual(attr._prefix, "prefix") + self.assertFalse(hasattr(attr, "_localName")) def testGetElementsByTagName(self): dom = parse(tstfile) From 8910ca9c735919210ddf3829402acb6266979581 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 22 Aug 2022 22:18:55 -0400 Subject: [PATCH 8/9] use Jelles preferred testing style --- Lib/test/test_minidom.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index 145b7e14703227..b0baa03fbbba8e 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -79,16 +79,16 @@ def testParseFromTextFile(self): def testAttrModeSetsParamsAsAttrs(self): attr = Attr("qName", "namespaceURI", "localName", "prefix") - self.assertEqual(attr._name, "qName") + self.assertEqual(attr.name, "qName") self.assertEqual(attr.namespaceURI, "namespaceURI") - self.assertEqual(attr._prefix, "prefix") - self.assertEqual(attr._localName, "localName") + self.assertEqual(attr.prefix, "prefix") + self.assertEqual(attr.localName, "localName") def testAttrModeSetsNonOptionalAttrs(self): attr = Attr("qName", "namespaceURI", None, "prefix") - self.assertEqual(attr._name, "qName") + self.assertEqual(attr.name, "qName") self.assertEqual(attr.namespaceURI, "namespaceURI") - self.assertEqual(attr._prefix, "prefix") + self.assertEqual(attr.prefix, "prefix") self.assertFalse(hasattr(attr, "_localName")) def testGetElementsByTagName(self): From 19fbcc4af1a1105ce27da8935bcd26ed0bb9829e Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Tue, 23 Aug 2022 07:36:53 -0400 Subject: [PATCH 9/9] refactor: update tests to verify that _get_name falls back to qName --- Lib/test/test_minidom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index b0baa03fbbba8e..ef38c362103fc6 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -89,7 +89,7 @@ def testAttrModeSetsNonOptionalAttrs(self): self.assertEqual(attr.name, "qName") self.assertEqual(attr.namespaceURI, "namespaceURI") self.assertEqual(attr.prefix, "prefix") - self.assertFalse(hasattr(attr, "_localName")) + self.assertEqual(attr.localName, attr.name) def testGetElementsByTagName(self): dom = parse(tstfile)