[TransWarp] is there a chance that SEF class-tree's will be pickle-able??

Phillip J. Eby pje at telecommunity.com
Thu Apr 4 09:24:09 EST 2002


At 03:31 PM 4/4/02 +0200, Ulrich Eck wrote:
>I tried Pyro first and it does not coop, because it relies on pickle.
>
>so i started inspecting what's the problem .. here what i found out:
>
>i have a simple test-app:
>-------------------------------------------------
>from TW.API import *
>
>class App(SEF.App):
>
>         title = 'PyroApp'
>
>         class MyService(SEF.Service):

There are two easy ways to fix this in the short term.  You can either copy 
"MyService" into the module namespace, e.g.:

MyService = App.MyService

Or define MyService in another module and then import it.  (This is the 
technique I'm more likely to use.)

The problem is that nested classes are inherently unpicklable, unless you 
do something about it.  Older TransWarp versions would make MyService have 
a class name of 'App.MyService' and copy them into the module dictionary 
for you.  It would probably be a good idea for me to put that capability 
into setupModule(), so that you don't need to worry about this sort of 
thing.  Until I do, though, you can work around it as I have described above.

You will run into another problem with pickling, by the way... 'Once' 
attributes should really not be included in a pickle, but I have not yet 
implemented an ActiveDescriptors.__getstate__ method that ensures this.



>Is there a chance that we can use Pyro with SEF/Transwarp (Class-Trees) 
>someday?

If pickling is the only problem, then yes.  I'm curious, however, why you 
would need to pickle an entire application for use with Pyro; it seems 
strange to me to send an entire application over-the-wire!


>p.s. have you had a look at the cvs-source of TWGUI ??

Nope; haven't had the time or inclination really, since I don't have any 
projects needing GUI's at present.




More information about the PEAK mailing list