mirror of https://github.com/python/cpython
whatsnew: object.__format__ raises TypeError on non-empty string.
See issues #7994 and #9856. I also modified with wording of the format doc entry to better match what really happens, and added a versionchanged to the datamodel object.__format__ section.
This commit is contained in:
parent
13b493e8a7
commit
d630e79cc7
|
@ -540,12 +540,13 @@ are always available. They are listed here in alphabetical order.
|
||||||
A call to ``format(value, format_spec)`` is translated to
|
A call to ``format(value, format_spec)`` is translated to
|
||||||
``type(value).__format__(format_spec)`` which bypasses the instance
|
``type(value).__format__(format_spec)`` which bypasses the instance
|
||||||
dictionary when searching for the value's :meth:`__format__` method. A
|
dictionary when searching for the value's :meth:`__format__` method. A
|
||||||
:exc:`TypeError` exception is raised if the method is not found or if either
|
:exc:`TypeError` exception is raised if the method search reaches
|
||||||
the *format_spec* or the return value are not strings.
|
:mod:`object` and the *format_spec* is non-empty, or if either the
|
||||||
|
*format_spec* or the return value are not strings.
|
||||||
|
|
||||||
.. versionadded:: 3.4
|
.. versionchanged:: 3.4
|
||||||
``object().__format__(format_spec)`` raises :exc:`TypeError`
|
``object().__format__(format_spec)`` raises :exc:`TypeError`
|
||||||
if *format_spec* is not empty string.
|
if *format_spec* is not an empty string.
|
||||||
|
|
||||||
|
|
||||||
.. _func-frozenset:
|
.. _func-frozenset:
|
||||||
|
|
|
@ -1226,6 +1226,10 @@ Basic customization
|
||||||
|
|
||||||
The return value must be a string object.
|
The return value must be a string object.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.4
|
||||||
|
The __format__ method of ``object`` itself raises a :exc:`TypeError`
|
||||||
|
if passed any non-empty string.
|
||||||
|
|
||||||
|
|
||||||
.. _richcmpfuncs:
|
.. _richcmpfuncs:
|
||||||
.. method:: object.__lt__(self, other)
|
.. method:: object.__lt__(self, other)
|
||||||
|
|
|
@ -1600,6 +1600,15 @@ removed:
|
||||||
* :class:`inspect.Signature`: positional-only parameters are now required
|
* :class:`inspect.Signature`: positional-only parameters are now required
|
||||||
to have a valid name.
|
to have a valid name.
|
||||||
|
|
||||||
|
* :meth:`object.__format__` no longer accepts non-empty format strings, it now
|
||||||
|
raises a :exc:`TypeError` instead. Using a non-empty string has been
|
||||||
|
deprecated since Python 3.2. This change has been made to prevent a
|
||||||
|
situation where previously working (but incorrect) code would start failing
|
||||||
|
if an object gained a __format__ method, which means that your code may now
|
||||||
|
raise a :exc:`TypeError` if you are using an ``'s'`` format code with objects
|
||||||
|
that do not have a __format__ method that handles it. See :issue:`7994` for
|
||||||
|
background.
|
||||||
|
|
||||||
|
|
||||||
Code Cleanups
|
Code Cleanups
|
||||||
-------------
|
-------------
|
||||||
|
|
Loading…
Reference in New Issue