]> granicus.if.org Git - python/commitdiff
bpo-30399: Get rid of trailing comma in the repr of BaseException. (#1650)
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 15 Nov 2017 15:53:28 +0000 (17:53 +0200)
committerGitHub <noreply@github.com>
Wed, 15 Nov 2017 15:53:28 +0000 (17:53 +0200)
Lib/test/test_baseexception.py
Lib/test/test_httplib.py
Lib/test/test_yield_from.py
Misc/NEWS.d/next/Core and Builtins/2017-10-12-22-21-01.bpo-30399.45f1gv.rst [new file with mode: 0644]
Objects/exceptions.c

index 27d514fe2ee517d3badf582a066fa21188ea5a1b..c055ee3d83c347fd6a964501f550daf976cd0143 100644 (file)
@@ -92,7 +92,7 @@ class ExceptionClassTests(unittest.TestCase):
         exc = Exception(arg)
         results = ([len(exc.args), 1], [exc.args[0], arg],
                    [str(exc), str(arg)],
-            [repr(exc), exc.__class__.__name__ + repr(exc.args)])
+            [repr(exc), '%s(%r)' % (exc.__class__.__name__, arg)])
         self.interface_test_driver(results)
 
     def test_interface_multi_arg(self):
index 0d79cae5096cdeeab5460e8c2d74a9c6fe5030cb..a3f8194dc44fcf157c6c00f4ab29163591b1772c 100644 (file)
@@ -497,7 +497,7 @@ class BasicTest(TestCase):
 
     def test_bad_status_repr(self):
         exc = client.BadStatusLine('')
-        self.assertEqual(repr(exc), '''BadStatusLine("\'\'",)''')
+        self.assertEqual(repr(exc), '''BadStatusLine("''")''')
 
     def test_partial_reads(self):
         # if we have Content-Length, HTTPResponse knows when to close itself,
index d1da838ac715f9d61b543e36190b332b53c2ccba..ce21c3df814037fb9da0f08250a1833722b3a02e 100644 (file)
@@ -418,7 +418,7 @@ class TestPEP380Operation(unittest.TestCase):
             "Yielded g2 spam",
             "Yielded g2 more spam",
             "Finishing g2",
-            "g2 returned StopIteration(3,)",
+            "g2 returned StopIteration(3)",
             "Yielded g1 eggs",
             "Finishing g1",
         ])
@@ -696,15 +696,15 @@ class TestPEP380Operation(unittest.TestCase):
             "g starting",
             "f resuming g",
             "g returning 1",
-            "f caught StopIteration(1,)",
+            "f caught StopIteration(1)",
             "g starting",
             "f resuming g",
             "g returning (2,)",
-            "f caught StopIteration((2,),)",
+            "f caught StopIteration((2,))",
             "g starting",
             "f resuming g",
-            "g returning StopIteration(3,)",
-            "f caught StopIteration(StopIteration(3,),)",
+            "g returning StopIteration(3)",
+            "f caught StopIteration(StopIteration(3))",
         ])
 
     def test_send_and_return_with_value(self):
@@ -741,17 +741,17 @@ class TestPEP380Operation(unittest.TestCase):
             "f sending spam to g",
             "g received 'spam'",
             "g returning 1",
-            'f caught StopIteration(1,)',
+            'f caught StopIteration(1)',
             'g starting',
             'f sending spam to g',
             "g received 'spam'",
             'g returning (2,)',
-            'f caught StopIteration((2,),)',
+            'f caught StopIteration((2,))',
             'g starting',
             'f sending spam to g',
             "g received 'spam'",
-            'g returning StopIteration(3,)',
-            'f caught StopIteration(StopIteration(3,),)'
+            'g returning StopIteration(3)',
+            'f caught StopIteration(StopIteration(3))'
         ])
 
     def test_catching_exception_from_subgen_and_returning(self):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-10-12-22-21-01.bpo-30399.45f1gv.rst b/Misc/NEWS.d/next/Core and Builtins/2017-10-12-22-21-01.bpo-30399.45f1gv.rst
new file mode 100644 (file)
index 0000000..ccd1575
--- /dev/null
@@ -0,0 +1,2 @@
+Standard repr() of BaseException with a single argument no longer contains
+redundant trailing comma.
index 637d7660d357e34948b36afc839db97374bb7d17..4901eb1cc3c56079626561603d7376e6d2795efb 100644 (file)
@@ -117,7 +117,11 @@ static PyObject *
 BaseException_repr(PyBaseExceptionObject *self)
 {
     const char *name = _PyType_Name(Py_TYPE(self));
-    return PyUnicode_FromFormat("%s%R", name, self->args);
+    if (PyTuple_GET_SIZE(self->args) == 1)
+        return PyUnicode_FromFormat("%s(%R)", name,
+                                    PyTuple_GET_ITEM(self->args, 0));
+    else
+        return PyUnicode_FromFormat("%s%R", name, self->args);
 }
 
 /* Pickling support */