summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-06-11 18:37:52 (GMT)
committerGeorg Brandl <georg@python.org>2008-06-11 18:37:52 (GMT)
commit559e5d7f4d1155e95fb6f925c927a263f9196935 (patch)
tree4688423e81e9ffed7a5b2c87c50b55419e8e885a /Python
parentea6d58d9d3033436b52e84960b9571525a4f5412 (diff)
downloadcpython-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.c15
-rw-r--r--Python/pythonrun.c2
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) */