mirror of https://github.com/python/cpython
Close issue23467: add %r compatibility to bytes and bytearray
This commit is contained in:
parent
6dd20c2d52
commit
62e977f1b6
|
@ -3165,7 +3165,7 @@ The conversion types are:
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
| ``'o'`` | Signed octal value. | \(1) |
|
| ``'o'`` | Signed octal value. | \(1) |
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
| ``'u'`` | Obsolete type -- it is identical to ``'d'``. | \(7) |
|
| ``'u'`` | Obsolete type -- it is identical to ``'d'``. | \(8) |
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
| ``'x'`` | Signed hexadecimal (lowercase). | \(2) |
|
| ``'x'`` | Signed hexadecimal (lowercase). | \(2) |
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
|
@ -3200,6 +3200,9 @@ The conversion types are:
|
||||||
| ``'a'`` | Bytes (converts any Python object using | \(5) |
|
| ``'a'`` | Bytes (converts any Python object using | \(5) |
|
||||||
| | ``repr(obj).encode('ascii','backslashreplace)``). | |
|
| | ``repr(obj).encode('ascii','backslashreplace)``). | |
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
|
| ``'r'`` | ``'r'`` is an alias for ``'a'`` and should only | \(7) |
|
||||||
|
| | be used for Python2/3 code bases. | |
|
||||||
|
+------------+-----------------------------------------------------+-------+
|
||||||
| ``'%'`` | No argument is converted, results in a ``'%'`` | |
|
| ``'%'`` | No argument is converted, results in a ``'%'`` | |
|
||||||
| | character in the result. | |
|
| | character in the result. | |
|
||||||
+------------+-----------------------------------------------------+-------+
|
+------------+-----------------------------------------------------+-------+
|
||||||
|
@ -3238,6 +3241,9 @@ Notes:
|
||||||
``b'%s'`` is deprecated, but will not be removed during the 3.x series.
|
``b'%s'`` is deprecated, but will not be removed during the 3.x series.
|
||||||
|
|
||||||
(7)
|
(7)
|
||||||
|
``b'%r'`` is deprecated, but will not be removed during the 3.x series.
|
||||||
|
|
||||||
|
(8)
|
||||||
See :pep:`237`.
|
See :pep:`237`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
|
@ -310,6 +310,11 @@ class FormatTest(unittest.TestCase):
|
||||||
testcommon(b"%a", b"ghi", b"b'ghi'")
|
testcommon(b"%a", b"ghi", b"b'ghi'")
|
||||||
testcommon(b"%a", "jkl", b"'jkl'")
|
testcommon(b"%a", "jkl", b"'jkl'")
|
||||||
testcommon(b"%a", "\u0544", b"'\\u0544'")
|
testcommon(b"%a", "\u0544", b"'\\u0544'")
|
||||||
|
# %r is an alias for %a
|
||||||
|
testcommon(b"%r", 3.14, b"3.14")
|
||||||
|
testcommon(b"%r", b"ghi", b"b'ghi'")
|
||||||
|
testcommon(b"%r", "jkl", b"'jkl'")
|
||||||
|
testcommon(b"%r", "\u0544", b"'\\u0544'")
|
||||||
|
|
||||||
# Test exception for unknown format characters, etc.
|
# Test exception for unknown format characters, etc.
|
||||||
if verbose:
|
if verbose:
|
||||||
|
|
|
@ -720,6 +720,8 @@ _PyBytes_Format(PyObject *format, PyObject *args)
|
||||||
pbuf = "%";
|
pbuf = "%";
|
||||||
len = 1;
|
len = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
// %r is only for 2/3 code; 3 only code should use %a
|
||||||
case 'a':
|
case 'a':
|
||||||
temp = PyObject_ASCII(v);
|
temp = PyObject_ASCII(v);
|
||||||
if (temp == NULL)
|
if (temp == NULL)
|
||||||
|
|
Loading…
Reference in New Issue