summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-01-13 09:10:51 +0200
committerSerhiy Storchaka <storchaka@gmail.com>2017-01-13 09:10:51 +0200
commit1e97cd7fb5d5776bf8bbf76bb4586d0b86833d45 (patch)
tree9d154c093e5f422d541ebd17596ae8484921eab2
parent2146dbe89d873bf5661fd2cb18303aa9162d48fe (diff)
downloadcpython-1e97cd7fb5d5776bf8bbf76bb4586d0b86833d45.tar.gz
Issue #29193: A format string argument for string.Formatter.format()
is now positional-only.
-rw-r--r--Doc/library/string.rst6
-rw-r--r--Doc/whatsnew/3.7.rst6
-rw-r--r--Lib/string.py10
-rw-r--r--Lib/test/test_string.py5
-rw-r--r--Misc/NEWS3
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()
diff --git a/Misc/NEWS b/Misc/NEWS
index 1f05889c88..484ee85517 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.