On Wed, Nov 05, 2008 at 03:59:07PM +0100, Christian Theune wrote: > On Wed, 2008-11-05 at 16:00 +0200, Marius Gedminas wrote: > > On Wed, Nov 05, 2008 at 11:48:35AM +0100, Christian Theune wrote: > > > On Wed, 2008-11-05 at 11:31 +0100, Laurence Rowe wrote: > > > > Broken objects occur when the class for a pickled object cannot be > > > > imported. To change the location of a class, you need to provide an > > > > alias at the old location so that the object can be unpickled, i.e. > > > > MyOldClassName = MyNewClassName. You can only remove MyOldClassName > > > > after you have updated all of the pickles (with your code below). > > > > > > Note: We made a relatively good experience by removing those symbols > > > from their original modules and provide a generation which first sets up > > > dummies, then runs migration code to remove/rebase those objects and > > > then remove the dummies again. > > > > How do you do that? Monkey-patching? > > Yes. Monkey-patching *and* monkey-unpatching.
Thought so. By the way, this has a potential failure mode when you need to evolve more than one generation, and a previous generation script needs to access those objects in the old location before your new generation script sets up the dummies. Marius Gedminas -- What can I do with Python that I can't do with C#? You can go home on time at the end of the day. -- Daniel Klein
Description: Digital signature
_______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev