-
-
Notifications
You must be signed in to change notification settings - Fork 704
Closed
Description
zodb only use the pickle protocol version 1. It is also not used in sage apart from one package that has been migrated away from it in #12205.
There is a zodb mailing list discussion related to the pickle protocol here: http://www.mail-archive.com/[email protected]/msg04628.html
In particular, pickle protocol 1 is hardcoded. But SageObjects/Cython objects must use protocol 2 in many cases:
sage: import cPickle
sage: F = factor(12)
sage: cPickle.dumps(F, protocol=0)
TypeError: can't pickle SageObject objects
sage: cPickle.dumps(F, protocol=1)
TypeError: can't pickle SageObject objects
sage: cPickle.dumps(F, protocol=2)
'\x80\x02csage.structure.factorization\nFactorization\nq\x01)\x81q\x02}q\x03(U\x12_Factorization__crq\x04\x89U\x14_Factorization__unitq\x05csage.rings.integer\nmake_integer\nq\x06U\x011\x85Rq\x07U\x18_Factorization__universeq\x08csage.rings.integer_ring\nIntegerRing\nq\t)Rq\nU\x11_Factorization__xq\x0b]q\x0c(h\x06U\x012\x85Rq\rK\x02\x86q\x0eh\x06U\x013\x85Rq\x0fK\x01\x86q\x10eub.'
See also the related ticket #10352.
The suggested option for this ticket is to remove zodb from sage.
- Apply attachment: trac10353-db-removal.patch to the sage library
- Apply attachment: trac10353-sage_root.patch to the sage root repository
- Remove the zodb package.
Depends on #12205
Depends on #13717
Depends on #13963
CC: @kini
Component: misc
Author: François Bissey
Reviewer: Jeroen Demeyer
Merged: sage-5.7.beta1
Issue created by migration from https://trac.sagemath.org/ticket/10353