summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_struct.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 606ae5e..4da6542 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -2165,6 +2165,19 @@ s_sizeof(PyStructObject *self, void *unused)
return PyLong_FromSize_t(size);
}
+static PyObject *
+s_repr(PyStructObject *self)
+{
+ PyObject* fmt = PyUnicode_FromStringAndSize(
+ PyBytes_AS_STRING(self->s_format), PyBytes_GET_SIZE(self->s_format));
+ if (fmt == NULL) {
+ return NULL;
+ }
+ PyObject* s = PyUnicode_FromFormat("%s(%R)", _PyType_Name(Py_TYPE(self)), fmt);
+ Py_DECREF(fmt);
+ return s;
+}
+
/* List of functions */
static struct PyMethodDef s_methods[] = {
@@ -2197,6 +2210,7 @@ static PyType_Slot PyStructType_slots[] = {
{Py_tp_dealloc, s_dealloc},
{Py_tp_getattro, PyObject_GenericGetAttr},
{Py_tp_setattro, PyObject_GenericSetAttr},
+ {Py_tp_repr, s_repr},
{Py_tp_doc, (void*)s__doc__},
{Py_tp_traverse, s_traverse},
{Py_tp_clear, s_clear},