diff --git a/Doc/library/html.parser.rst b/Doc/library/html.parser.rst
index 341a8337ba2ceb..11f851d4f6c4b7 100644
--- a/Doc/library/html.parser.rst
+++ b/Doc/library/html.parser.rst
@@ -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 ````, this method
would be called as ``handle_starttag('a', [('href', 'https://www.cwi.nl/')])``.
@@ -317,6 +317,18 @@ without further parsing:
Data : alert("hello! ☺");
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("")
+ Start tag: input
+ attr: ('type', 'checkbox')
+ attr: ('checked', None)
+ attr: ('required', '')
+ attr: ('disabled', 'disabled')
+
Parsing comments:
.. doctest::
diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py
index 389a3fa0e0a1eb..a986fd6b892bd2 100644
--- a/Lib/test/test_cmath.py
+++ b/Lib/test/test_cmath.py
@@ -516,6 +516,7 @@ def test_isinf(self):
self.assertFalse(cmath.isinf(1j))
self.assertFalse(cmath.isinf(NAN))
self.assertTrue(cmath.isinf(INF))
+ self.assertTrue(cmath.isinf(-INF))
self.assertTrue(cmath.isinf(complex(INF, 0)))
self.assertTrue(cmath.isinf(complex(0, INF)))
self.assertTrue(cmath.isinf(complex(INF, INF)))
diff --git a/Python/ceval.c b/Python/ceval.c
index 506ea591c385c0..0d7f8a62e246ae 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3409,7 +3409,7 @@ _PyEval_FormatKwargsError(PyThreadState *tstate, PyObject *func, PyObject *kwarg
_PyErr_Format(
tstate, PyExc_TypeError,
"%V got multiple values for keyword argument '%S'",
- funcstr, "finction", dupkey);
+ funcstr, "function", dupkey);
Py_XDECREF(funcstr);
return;
}