gh-82665 Mention that HTMLParser.handle_starttag value can be None (#134312)

* Specify boolean attribute behavior in parser

* Tweak wording and example

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>

* Fix backticks

---------

Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Micah Najacht
2026-04-27 01:27:05 -05:00
committed by GitHub
parent f27e91e372
commit 804c213c89
+13 -1
View File
@@ -141,7 +141,7 @@ implementations do nothing (except for :meth:`~HTMLParser.handle_startendtag`):
argument is a list of ``(name, value)`` pairs containing the attributes found
inside the tag's ``<>`` brackets. The *name* will be translated to lower case,
and quotes in the *value* have been removed, and character and entity references
have been replaced.
have been replaced. For empty attributes, *value* is ``None``.
For instance, for the tag ``<A HREF="https://www.cwi.nl/">``, this method
would be called as ``handle_starttag('a', [('href', 'https://www.cwi.nl/')])``.
@@ -317,6 +317,18 @@ without further parsing:
Data : alert("<strong>hello! &#9786;</strong>");
End tag : script
Attribute names are converted to lowercase, quotes from attribute values removed,
and ``None`` is returned as *value* for empty attributes (such as ``checked``):
.. doctest::
>>> parser.feed("<input TYPE='checkbox' checked required='' disabled=disabled>")
Start tag: input
attr: ('type', 'checkbox')
attr: ('checked', None)
attr: ('required', '')
attr: ('disabled', 'disabled')
Parsing comments:
.. doctest::