summaryrefslogtreecommitdiffstats
path: root/Objects/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/object.c')
-rw-r--r--Objects/object.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/Objects/object.c b/Objects/object.c
index 46cfdfe..85bb850 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -425,6 +425,33 @@ PyObject_Str(PyObject *v)
return res;
}
+PyObject *
+PyObject_ASCII(PyObject *v)
+{
+ PyObject *repr, *ascii, *res;
+
+ repr = PyObject_Repr(v);
+ if (repr == NULL)
+ return NULL;
+
+ /* repr is guaranteed to be a PyUnicode object by PyObject_Repr */
+ ascii = PyUnicode_EncodeASCII(
+ PyUnicode_AS_UNICODE(repr),
+ PyUnicode_GET_SIZE(repr),
+ "backslashreplace");
+
+ Py_DECREF(repr);
+ if (ascii == NULL)
+ return NULL;
+
+ res = PyUnicode_DecodeASCII(
+ PyBytes_AS_STRING(ascii),
+ PyBytes_GET_SIZE(ascii),
+ NULL);
+
+ Py_DECREF(ascii);
+ return res;
+}
/* The new comparison philosophy is: we completely separate three-way
comparison from rich comparison. That is, PyObject_Compare() and