Issue #29193: A format string argument for string.Formatter.format()

is now positional-only.
This commit is contained in:
Serhiy Storchaka 2017-01-13 09:10:51 +02:00
parent b37f3f6e6b
commit 009b0a1fac
5 changed files with 16 additions and 14 deletions

View File

@ -95,9 +95,9 @@ implementation as the built-in :meth:`~str.format` method.
an arbitrary set of positional and keyword arguments.
It is just a wrapper that calls :meth:`vformat`.
.. deprecated:: 3.5
Passing a format string as keyword argument *format_string* has been
deprecated.
.. versionchanged:: 3.7
A format string argument is now :ref:`positional-only
<positional-only_parameter>`.
.. method:: vformat(format_string, args, kwargs)

View File

@ -147,3 +147,9 @@ This section lists previously described changes and other bugfixes
that may require changes to your code.
Changes in the Python API
-------------------------
* A format string argument for :meth:`string.Formatter.format`
is now :ref:`positional-only <positional-only_parameter>`.
(Contributed by Serhiy Storchaka in :issue:`29193`.)

View File

@ -175,14 +175,8 @@ class Formatter:
try:
format_string, *args = args # allow the "format_string" keyword be passed
except ValueError:
if 'format_string' in kwargs:
format_string = kwargs.pop('format_string')
import warnings
warnings.warn("Passing 'format_string' as keyword argument is "
"deprecated", DeprecationWarning, stacklevel=2)
else:
raise TypeError("format() missing 1 required positional "
"argument: 'format_string'") from None
raise TypeError("format() missing 1 required positional "
"argument: 'format_string'") from None
return self.vformat(format_string, args, kwargs)
def vformat(self, format_string, args, kwargs):

View File

@ -48,9 +48,8 @@ class ModuleTest(unittest.TestCase):
self.assertEqual(fmt.format("-{format_string}-", format_string='test'),
'-test-')
self.assertRaises(KeyError, fmt.format, "-{format_string}-")
with self.assertWarnsRegex(DeprecationWarning, "format_string"):
self.assertEqual(fmt.format(arg='test', format_string="-{arg}-"),
'-test-')
with self.assertRaisesRegex(TypeError, "format_string"):
fmt.format(format_string="-{arg}-", arg='test')
def test_auto_numbering(self):
fmt = string.Formatter()

View File

@ -212,6 +212,9 @@ Core and Builtins
Library
-------
- Issue #29193: A format string argument for string.Formatter.format()
is now positional-only.
- Issue #29195: Removed support of deprecated undocumented keyword arguments
in methods of regular expression objects.