[Python-checkins] cpython: Close issue #8931: Make alternate formatting for 'c' raise an exception. Patch

eric.smith python-checkins at python.org
Wed Apr 16 04:38:07 CEST 2014


http://hg.python.org/cpython/rev/b1aba042b36c
changeset:   90350:b1aba042b36c
user:        Eric V. Smith <eric at trueblade.com>
date:        Tue Apr 15 22:37:55 2014 -0400
summary:
  Close issue #8931: Make alternate formatting for 'c' raise an exception. Patch by Torsten Landschoff.

files:
  Lib/test/test_types.py     |  2 ++
  Misc/NEWS                  |  4 ++++
  Python/formatter_unicode.c |  7 +++++++
  3 files changed, 13 insertions(+), 0 deletions(-)


diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -343,6 +343,8 @@
         self.assertRaises(ValueError, 3 .__format__, ",n")
         # can't have ',' with 'c'
         self.assertRaises(ValueError, 3 .__format__, ",c")
+        # can't have '#' with 'c'
+        self.assertRaises(ValueError, 3 .__format__, "#c")
 
         # ensure that only int and float type specifiers work
         for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -43,6 +43,10 @@
   replacement fields. It now matches the behavior of str.format() in
   this regard. Patches by Phil Elson and Ramchandra Apte.
 
+- Issue #8931: Make alternate formatting ('#') for type 'c' raise an
+  exception. In versions prior to 3.5, '#' with 'c' had no effect. Now
+  specifying it is an error.  Patch by Torsten Landschoff.
+
 Library
 -------
 
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -846,6 +846,13 @@
                             " format specifier 'c'");
             goto done;
         }
+        /* error to request alternate format */
+        if (format->alternate) {
+            PyErr_SetString(PyExc_ValueError,
+                            "Alternate form (#) not allowed with integer"
+                            " format specifier 'c'");
+            goto done;
+        }
 
         /* taken from unicodeobject.c formatchar() */
         /* Integer input truncated to a character */

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list