Commit 097cd072 authored by Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

#6428: py3k requires that __bool__ return a bool (and not an int)

Fix the error message and the documentation.
parent dd07ebb4
...@@ -1254,11 +1254,11 @@ Basic customization ...@@ -1254,11 +1254,11 @@ Basic customization
.. index:: single: __len__() (mapping object method) .. index:: single: __len__() (mapping object method)
Called to implement truth value testing and the built-in operation Called to implement truth value testing and the built-in operation
``bool()``; should return ``False`` or ``True``, or their integer equivalents ``bool()``; should return ``False`` or ``True``. When this method is not
``0`` or ``1``. When this method is not defined, :meth:`__len__` is called, defined, :meth:`__len__` is called, if it is defined, and the object is
if it is defined, and the object is considered true if its result is nonzero. considered true if its result is nonzero. If a class defines neither
If a class defines neither :meth:`__len__` nor :meth:`__bool__`, all its :meth:`__len__` nor :meth:`__bool__`, all its instances are considered
instances are considered true. true.
.. _attribute-access: .. _attribute-access:
......
...@@ -12,6 +12,10 @@ What's New in Python 3.2 Alpha 1? ...@@ -12,6 +12,10 @@ What's New in Python 3.2 Alpha 1?
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #6428: Since Python 3.0, the __bool__ method must return a bool
object, and not an int. Fix the corresponding error message, and the
documentation.
- The deprecated PyCObject has been removed. - The deprecated PyCObject has been removed.
- Issue #6347: Include inttypes.h as well as stdint.h in pyport.h. - Issue #6347: Include inttypes.h as well as stdint.h in pyport.h.
......
...@@ -4807,10 +4807,8 @@ slot_nb_bool(PyObject *self) ...@@ -4807,10 +4807,8 @@ slot_nb_bool(PyObject *self)
} }
else { else {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%s should return " "__bool__ should return "
"bool or int, returned %s", "bool, returned %s",
(using_len ? "__len__"
: "__bool__"),
Py_TYPE(temp)->tp_name); Py_TYPE(temp)->tp_name);
result = -1; result = -1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment