SAGE_PICKLE_JAR, untar the pickle jar and copy the new pickles in, and tar the jar up again.I certainly was not aware that old pickles (which are essentially being deprecated) should not be removed.
It would help if there was some good (or even bad) documentation available which described how to update the pickle jar. As far as I am aware this is not covered in the developers guide, or anywhere else. I did search for documentation to complement the notes that I was given but I only found an oblique reference to occasionally needing to update the pickle jar in Here is my vote: You may add stuff to the pickle jar. But please do not
remove stuff from the pickle jar.
If I understand correctly, we are talking here about "modifying" in the
sense of "removing stuff". IMHO, it would be totally
against the purpose of the pickle jar, if we would encourage (or just
explain how) to remove stuff from the pickle jar.
If the pickle jar doc tests break then I think it is *not* the pickle
jar that needs to be updated. Instead, it is the unpickling methods that
need to be fixed.
Hi Simon,
If I understand correctly, we are talking here about "modifying" in the
sense of "removing stuff". IMHO, it would be totally
against the purpose of the pickle jar, if we would encourage (or just
explain how) to remove stuff from the pickle jar.
If the pickle jar doc tests break then I think it is *not* the pickle
jar that needs to be updated. Instead, it is the unpickling methods that
need to be fixed.
Actually, I think that you and I are talking about two different things: I am happy to maintain the pickle_jar whenever possible in the way the sage community wishes but I would really like this to be documented properly by the people who how know how it is supposed to work.
I also agree it may not be a sensible choice to remove old pickles (the point is to be sure they can still be loaded! so removing them to pass doctests is a bad fix in my opinion), nor to keep the ones from sage 0.4 whose class got deprecated in sage 1.1.
I'm confused here, the workflow should be deprecate -> wait one year -> remove deprecated functionality. But you are saying you want to remove the pickles at the beginning of the deprecation period? That sounds wrong.
I have tried to fix the unpickling of Tableau_class using
register_unpickle_override('sage.combinat.tableau', 'Tableau_class', Tableau)
but this does not work. My guess is that it is not possible to unpickle the deprecated Tableau_class objects using the new Tableau class objects because the underlying classes are too different.
If some one can see how to do this please let me know.
AndrewFailed: _class__sage_combinat_crystals_affine_AffineCrystalFromClassicalAndPromotion_with_category_element_class__.sobj _class__sage_combinat_crystals_tensor_product_CrystalOfTableaux_with_category_element_class__.sobj _class__sage_combinat_crystals_tensor_product_TensorProductOfCrystalsWithGenerators_with_category__.sobj _class__sage_combinat_tableau_Tableau_class__.sobj -------------------------------------------------- ** This error is probably due to an old pickle failing to unpickle. ** See sage.structure.sage_object.register_unpickle_override for ** how to override the default unpickling methods for (old) pickles. ** NOTE: pickles should never be removed from the pickle_jar! -------------------------------------------------- Successfully unpickled 583 objects. Failed to unpickle 4 objects.
}}}
It also adds more examples to the `register_unpickle_override` documentation about how to fix broken pickles.