diff --git a/Misc/NEWS.d/next/C_API/2024-10-01-14-53-55.gh-issue-112636.t4WJjC.rst b/Misc/NEWS.d/next/C_API/2024-10-01-14-53-55.gh-issue-112636.t4WJjC.rst new file mode 100644 index 00000000000000..90cf9557b36039 --- /dev/null +++ b/Misc/NEWS.d/next/C_API/2024-10-01-14-53-55.gh-issue-112636.t4WJjC.rst @@ -0,0 +1,4 @@ +:c:func:`PyNumber_Float` doesn't fallback anymore to +``PyFloat_FromDouble(PyFloat_AS_DOUBLE(obj))`` if a :class:`float` subtype resets +:c:member:`~PyNumberMethods.nb_float` to ``NULL``. A :exc:`TypeError` +exception is raised instead. diff --git a/Objects/abstract.c b/Objects/abstract.c index 7cca81464cd112..4167037023b7bc 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -1638,10 +1638,6 @@ PyNumber_Float(PyObject *o) return PyFloat_FromDouble(val); } - /* A float subclass with nb_float == NULL */ - if (PyFloat_Check(o)) { - return PyFloat_FromDouble(PyFloat_AS_DOUBLE(o)); - } return PyFloat_FromString(o); }