]> granicus.if.org Git - python/commitdiff
Issue #29193: A format string argument for string.Formatter.format()
authorSerhiy Storchaka <storchaka@gmail.com>
Fri, 13 Jan 2017 07:10:51 +0000 (09:10 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Fri, 13 Jan 2017 07:10:51 +0000 (09:10 +0200)
is now positional-only.

Doc/library/string.rst
Doc/whatsnew/3.7.rst
Lib/string.py
Lib/test/test_string.py
Misc/NEWS

index a0977b6461339429952926be9a2054a2c7440a88..03eaf3b9cd331291beeaf03a57f15b16213b2c64 100644 (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)
 
index a2e642279301fec8dc7172c43776350922315374..c4814e270688dbbcb8fd55eb856fcd09995406c2 100644 (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`.)
index c9020076437e999c23829caec193b4b9aa7bfb88..bc9508c1e6ee85f17b2b17defbd79751841394e5 100644 (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):
index 70439f85c89555ef08dca3d7c566f896f2b967cb..a7b8aad8abab9b1ee2d0d36001a0e61a68d8ae35 100644 (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()
index 1f05889c881a9f6758bca4e0ec59d4bc688d41a1..484ee8551759efb9999cd1b1e80c7ccbe816dcdb 100644 (file)
--- 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.