diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-01-13 09:10:51 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2017-01-13 09:10:51 +0200 |
commit | 1e97cd7fb5d5776bf8bbf76bb4586d0b86833d45 (patch) | |
tree | 9d154c093e5f422d541ebd17596ae8484921eab2 | |
parent | 2146dbe89d873bf5661fd2cb18303aa9162d48fe (diff) | |
download | cpython-1e97cd7fb5d5776bf8bbf76bb4586d0b86833d45.tar.gz |
Issue #29193: A format string argument for string.Formatter.format()
is now positional-only.
-rw-r--r-- | Doc/library/string.rst | 6 | ||||
-rw-r--r-- | Doc/whatsnew/3.7.rst | 6 | ||||
-rw-r--r-- | Lib/string.py | 10 | ||||
-rw-r--r-- | Lib/test/test_string.py | 5 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
5 files changed, 16 insertions, 14 deletions
diff --git a/Doc/library/string.rst b/Doc/library/string.rst index a0977b6461..03eaf3b9cd 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -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) diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index a2e6422793..c4814e2706 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -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`.) diff --git a/Lib/string.py b/Lib/string.py index c902007643..bc9508c1e6 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -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): diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py index 70439f85c8..a7b8aad8ab 100644 --- a/Lib/test/test_string.py +++ b/Lib/test/test_string.py @@ -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() @@ -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. |