From 89f48876a25d753f2888f8ec4a5dba7c0ef90bf2 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Wed, 11 Jun 2008 18:55:38 +0000 Subject: [PATCH] Add future_builtins.ascii(). --- Doc/library/future_builtins.rst | 8 ++++++++ Misc/NEWS | 2 ++ Modules/future_builtins.c | 14 ++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/Doc/library/future_builtins.rst b/Doc/library/future_builtins.rst index d25aff780ba..6a1fdab5c57 100644 --- a/Doc/library/future_builtins.rst +++ b/Doc/library/future_builtins.rst @@ -28,6 +28,14 @@ this usage and leave the new builtins alone. Available builtins are: +.. function:: ascii(object) + + Returns the same as :func:`repr`. In Python 3, :func:`repr` will return + printable Unicode characters unescaped, while :func:`ascii` will always + backslash-escape them. Using :func:`future_builtins.ascii` instead of + :func:`repr` in 2.6 code makes it clear that you need a pure ASCII return + value. + .. function:: filter(function, iterable) Works like :func:`itertools.ifilter`. diff --git a/Misc/NEWS b/Misc/NEWS index 06b8b45a1a2..02c6cff0f88 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.6 beta 1? Core and Builtins ----------------- +- Add future_builtins.ascii(). + - Several set methods now accept multiple arguments: update(), union(), intersection(), intersection_update(), difference(), and difference_update(). diff --git a/Modules/future_builtins.c b/Modules/future_builtins.c index 5baaa6051dd..4c840fb161e 100644 --- a/Modules/future_builtins.c +++ b/Modules/future_builtins.c @@ -45,11 +45,25 @@ PyDoc_STRVAR(oct_doc, Return the octal representation of an integer or long integer."); +static PyObject * +builtin_ascii(PyObject *self, PyObject *v) +{ + return PyObject_Repr(v); +} + +PyDoc_STRVAR(ascii_doc, +"ascii(object) -> string\n\ +\n\ +Return the same as repr(). In Python 3.x, the repr() result will\n\ +contain printable characters unescaped, while the ascii() result\n\ +will have such characters backslash-escaped."); + /* List of functions exported by this module */ static PyMethodDef module_functions[] = { {"hex", builtin_hex, METH_O, hex_doc}, {"oct", builtin_oct, METH_O, oct_doc}, + {"ascii", builtin_ascii, METH_O, ascii_doc}, {NULL, NULL} /* Sentinel */ };