I tried this code:
static PyObject *
frozendict_reduce(PyFrozenDictObject* mp, PyObject *Py_UNUSED(ignored))
{
PyObject* args = PyTuple_New(1);
if (args == NULL) {
return NULL;
}
PyTuple_SET_ITEM(args, 0, (PyObject *)mp);
PyObject *d = PyObject_Call((PyObject *)&PyDict_Type, args, NULL);
Py_INCREF(mp);
return Py_BuildValue("O(N)", Py_TYPE(mp), d);
}
but I get:
_pickle.PicklingError: Can't pickle <class 'frozendict'>: attribute lookup
frozendict on builtins failed
The identical (?) Python code works:
def __reduce__(self, *args, **kwargs):
return (self.__class__, (dict(self), ))
--
https://mail.python.org/mailman/listinfo/python-list