diff options
author | Georg Brandl <georg@python.org> | 2008-06-11 18:37:52 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-06-11 18:37:52 (GMT) |
commit | 559e5d7f4d1155e95fb6f925c927a263f9196935 (patch) | |
tree | 4688423e81e9ffed7a5b2c87c50b55419e8e885a /Python | |
parent | ea6d58d9d3033436b52e84960b9571525a4f5412 (diff) | |
download | cpython-559e5d7f4d1155e95fb6f925c927a263f9196935.zip cpython-559e5d7f4d1155e95fb6f925c927a263f9196935.tar.gz cpython-559e5d7f4d1155e95fb6f925c927a263f9196935.tar.bz2 |
#2630: Implement PEP 3138.
The repr() of a string now contains printable Unicode characters unescaped.
The new ascii() builtin can be used to get a repr() with only ASCII characters in it.
PEP and patch were written by Atsuo Ishimoto.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/bltinmodule.c | 15 | ||||
-rw-r--r-- | Python/pythonrun.c | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 73a95a6..35ba781 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -265,6 +265,20 @@ PyDoc_STRVAR(any_doc, \n\ Return True if bool(x) is True for any x in the iterable."); +static PyObject * +builtin_ascii(PyObject *self, PyObject *v) +{ + return PyObject_ASCII(v); +} + +PyDoc_STRVAR(ascii_doc, +"ascii(object) -> string\n\ +\n\ +As repr(), return a string containing a printable representation of an\n\ +object, but escape the non-ASCII characters in the string returned by\n\ +repr() using \\x, \\u or \\U escapes. This generates a string similar\n\ +to that returned by repr() in Python 2."); + static PyObject * builtin_bin(PyObject *self, PyObject *v) @@ -2188,6 +2202,7 @@ static PyMethodDef builtin_methods[] = { {"abs", builtin_abs, METH_O, abs_doc}, {"all", builtin_all, METH_O, all_doc}, {"any", builtin_any, METH_O, any_doc}, + {"ascii", builtin_ascii, METH_O, ascii_doc}, {"bin", builtin_bin, METH_O, bin_doc}, {"chr", builtin_chr, METH_VARARGS, chr_doc}, {"cmp", builtin_cmp, METH_VARARGS, cmp_doc}, diff --git a/Python/pythonrun.c b/Python/pythonrun.c index ae5856a..c46e9f4 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -793,7 +793,7 @@ initstdio(void) } else { if (!(std = PyFile_FromFd(fd, "<stderr>", "w", -1, encoding, - errors, "\n", 0))) { + "backslashreplace", "\n", 0))) { goto error; } } /* if (fd < 0) */ |