time.get_clock_info() uses a namespace instead of structseq
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index a80cb4b..d844bc3 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -1124,35 +1124,12 @@
 Process time for profiling: sum of the kernel and user-space CPU time.");
 
 
-static PyTypeObject ClockInfoType;
-
-PyDoc_STRVAR(ClockInfo_docstring,
-    "Clock information");
-
-static PyStructSequence_Field ClockInfo_fields[] = {
-    {"implementation", "name of the underlying C function "
-                       "used to get the clock value"},
-    {"monotonic", "True if the clock cannot go backward, False otherwise"},
-    {"adjusted", "True if the clock can be adjusted "
-                    "(e.g. by a NTP daemon), False otherwise"},
-    {"resolution", "resolution of the clock in seconds"},
-    {NULL, NULL}
-};
-
-static PyStructSequence_Desc ClockInfo_desc = {
-    "time.clock_info",
-    ClockInfo_docstring,
-    ClockInfo_fields,
-    4,
-};
-
 static PyObject *
 time_get_clock_info(PyObject *self, PyObject *args)
 {
     char *name;
-    PyObject *obj;
     _Py_clock_info_t info;
-    PyObject *result;
+    PyObject *obj = NULL, *dict, *ns;
 
     if (!PyArg_ParseTuple(args, "s:get_clock_info", &name))
         return NULL;
@@ -1191,39 +1168,50 @@
         return NULL;
     Py_DECREF(obj);
 
-    result = PyStructSequence_New(&ClockInfoType);
-    if (result == NULL)
+    dict = PyDict_New();
+    if (dict == NULL)
         return NULL;
 
     assert(info.implementation != NULL);
     obj = PyUnicode_FromString(info.implementation);
     if (obj == NULL)
         goto error;
-    PyStructSequence_SET_ITEM(result, 0, obj);
+    if (PyDict_SetItemString(dict, "implementation", obj) == -1)
+        goto error;
+    Py_CLEAR(obj);
 
     assert(info.monotonic != -1);
     obj = PyBool_FromLong(info.monotonic);
     if (obj == NULL)
         goto error;
-    PyStructSequence_SET_ITEM(result, 1, obj);
+    if (PyDict_SetItemString(dict, "monotonic", obj) == -1)
+        goto error;
+    Py_CLEAR(obj);
 
     assert(info.adjusted != -1);
     obj = PyBool_FromLong(info.adjusted);
     if (obj == NULL)
         goto error;
-    PyStructSequence_SET_ITEM(result, 2, obj);
+    if (PyDict_SetItemString(dict, "adjusted", obj) == -1)
+        goto error;
+    Py_CLEAR(obj);
 
     assert(info.resolution > 0.0);
     assert(info.resolution <= 1.0);
     obj = PyFloat_FromDouble(info.resolution);
     if (obj == NULL)
         goto error;
-    PyStructSequence_SET_ITEM(result, 3, obj);
+    if (PyDict_SetItemString(dict, "resolution", obj) == -1)
+        goto error;
+    Py_CLEAR(obj);
 
-    return result;
+    ns = _PyNamespace_New(dict);
+    Py_DECREF(dict);
+    return ns;
 
 error:
-    Py_DECREF(result);
+    Py_DECREF(dict);
+    Py_XDECREF(obj);
     return NULL;
 }
 
@@ -1451,11 +1439,6 @@
         PyStructSequence_InitType(&StructTimeType,
                                   &struct_time_type_desc);
 
-        /* initialize ClockInfoType */
-        PyStructSequence_InitType(&ClockInfoType, &ClockInfo_desc);
-        Py_INCREF(&ClockInfoType);
-        PyModule_AddObject(m, "clock_info", (PyObject*)&ClockInfoType);
-
 #ifdef MS_WINDOWS
         winver.dwOSVersionInfoSize = sizeof(winver);
         if (!GetVersionEx((OSVERSIONINFO*)&winver)) {