Nick Garcia wrote:
Brian Lloyd wrote:
So, I'm getting this error when trying to use one of my Products under Zope 2.2b1:
Error Type: UnpickleableError Error Value: Cannot pickle <type 'StringO'> objects
What exactly is a StringO object, and why can't it be pickled/unpickled? It worked fine under 2.1, so I'm assuming there have been changes to the pickling routines that haven't been completely cleaned up yet?
There shouldn't be any changes at all happening to any of the pickling machinery... A 'StringO' object is what you get when you use cStringIO.StringIO. Is your product using cStringIO for anything? If not, it would be best to trace this in the debugger to see what is trying to pickle a StringO...
The product isn't using cStringIO. I didn't even know it existed until now ;) I stepped through the code, and in lib/python/ZODB/Connection.py in the commit() function, when it gets to the line dump(state) on line 347 where state is (apparently) all the correct information for my object, it gets the UnpickleableError. I noticed in the Collector that bug #383 was about Unpickleable errors with SQL methods. The object that's trying to get pickled in this case contains SQL methods. Granted, bug 383 was from around this time last year, but it's the best lead I've got so far. I don't use cStringIO anywhere in my product.
Well.... since my product *does* use the SQL class, and the SQL class uses the DA class, and the DA class uses cStringIO, I guess *technically* I am using it. We create SQL methods then store them as properties of the class. This may be what it's choking on. -- Nick Garcia | ngarcia@codeit.com CodeIt Computing | http://codeit.com