See :exc:`NotImplementedError` for details on when to use it.
.. versionchanged:: 3.9
- Evaluating :data:`!NotImplemented` in a boolean context is deprecated. While
- it currently evaluates as true, it will emit a :exc:`DeprecationWarning`.
- It will raise a :exc:`TypeError` in a future version of Python.
+ Evaluating :data:`!NotImplemented` in a boolean context was deprecated.
.. versionchanged:: 3.14
Evaluating :data:`!NotImplemented` in a boolean context now raises a :exc:`TypeError`.
+ It previously evaluated to :const:`True` and emitted a :exc:`DeprecationWarning`
+ since Python 3.9.
.. index:: single: ...; ellipsis literal
for more details.
.. versionchanged:: 3.9
- Evaluating :data:`NotImplemented` in a boolean context is deprecated. While
- it currently evaluates as true, it will emit a :exc:`DeprecationWarning`.
- It will raise a :exc:`TypeError` in a future version of Python.
+ Evaluating :data:`NotImplemented` in a boolean context was deprecated.
.. versionchanged:: 3.14
Evaluating :data:`NotImplemented` in a boolean context now raises a :exc:`TypeError`.
+ It previously evaluated to :const:`True` and emitted a :exc:`DeprecationWarning`
+ since Python 3.9.
Ellipsis
self.assertRaises(TypeError, tp, 1, 2)
self.assertRaises(TypeError, tp, a=1, b=2)
- def test_warning_notimplemented(self):
- # Issue #35712: NotImplemented is a sentinel value that should never
+ def test_bool_notimplemented(self):
+ # GH-79893: NotImplemented is a sentinel value that should never
# be evaluated in a boolean context (virtually all such use cases
# are a result of accidental misuse implementing rich comparison
# operations in terms of one another).
- self.assertRaises(TypeError, bool, NotImplemented)
- with self.assertRaises(TypeError):
- self.assertTrue(NotImplemented)
- with self.assertRaises(TypeError):
+ msg = "NotImplemented should not be used in a boolean context"
+ self.assertRaisesRegex(TypeError, msg, bool, NotImplemented)
+ with self.assertRaisesRegex(TypeError, msg):
+ if NotImplemented:
+ pass
+ with self.assertRaisesRegex(TypeError, msg):
not NotImplemented