Given the persistent id code a shot at a class before calling save_global().

Some persistent picklers (well, probably, the *only* persistent
pickler) would like to pickle some classes in a special way.
This commit is contained in:
Jeremy Hylton 2002-07-16 19:47:43 +00:00
parent 719841e2fb
commit 39c6116483
2 changed files with 10 additions and 10 deletions

View File

@ -213,6 +213,11 @@ class Pickler:
try:
f = self.dispatch[t]
except KeyError:
pid = self.inst_persistent_id(object)
if pid is not None:
self.save_pers(pid)
return
try:
issc = issubclass(t, TypeType)
except TypeError: # t is not a class
@ -221,11 +226,6 @@ class Pickler:
self.save_global(object)
return
pid = self.inst_persistent_id(object)
if pid is not None:
self.save_pers(pid)
return
try:
reduce = dispatch_table[t]
except KeyError:

View File

@ -2015,11 +2015,6 @@ save(Picklerobject *self, PyObject *args, int pers_save)
}
}
if (PyType_IsSubtype(type, &PyType_Type)) {
res = save_global(self, args, NULL);
goto finally;
}
if (!pers_save && self->inst_pers_func) {
if ((tmp = save_pers(self, args, self->inst_pers_func)) != 0) {
res = tmp;
@ -2027,6 +2022,11 @@ save(Picklerobject *self, PyObject *args, int pers_save)
}
}
if (PyType_IsSubtype(type, &PyType_Type)) {
res = save_global(self, args, NULL);
goto finally;
}
if ((__reduce__ = PyDict_GetItem(dispatch_table, (PyObject *)type))) {
Py_INCREF(__reduce__);