[Zope] array module and pickleing ques

Aseem Mohanty aseem@neurobehavioralsystems.com
Tue, 09 Jul 2002 22:55:00 -0700


some more info: the error:

Error Type: UnpickleableError
Error Value: Cannot pickle objects

------------------------------------------------------------------------

Troubleshooting Suggestions

   * The URL may be incorrect.
   * The parameters passed to this resource may be incorrect.
   * A resource that this resource relies on may be encountering an error.

For more detailed information about the error, please refer to the HTML 
source for this page.

If the error persists please contact the site maintainer. Thank you for 
your patience.

Traceback (innermost last):
 File F:\KANDIN~1\lib\python\ZPublisher\Publish.py , line 150, in 
publish_module
 File F:\KANDIN~1\lib\python\ZPublisher\Publish.py , line 114, in publish
 File F:\KANDIN~1\lib\python\Zope\__init__.py , line 158, in 
zpublisher_exception_hook
 File F:\KANDIN~1\lib\python\ZPublisher\Publish.py , line 102, in publish
 File F:\KANDIN~1\lib\python\Zope\__init__.py , line 172, in commit
 File f:\kandinsky\lib\python\Products\TransactionAgents\__init__.py , 
line 54, in new_commit
 File F:\KANDIN~1\lib\python\ZODB\Transaction.py , line 233, in commit
 File F:\KANDIN~1\lib\python\ZODB\Connection.py , line 345, in commit
   (Info: (('Products.RC2.RC2', 'RC2'), '\x00\x00\x00\x00\x00\x00h\xe1', 
''))
UnpickleableError: (see above)


I also tried the following in the python console:

Python 2.1.2 (#31, Jan 15 2002, 17:28:11) [MSC 32 bit (Intel)] on win32
Type "copyright", "credits" or "license" for more information.
 >>> import pickle, array, os
 >>> f= open('test','w')
 >>> x = array.array('H')
 >>> pickle.dump(x,f)
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
 File "F:\KANDIN~1\bin\lib\pickle.py" , line 939, in dump
   Pickler(file, bin).dump(object)
 File "F:\KANDIN~1\bin\lib\pickle.py" , line 109, in dump
   self.save(object)
 File "F:\KANDIN~1\bin\lib\pickle.py" , line 171, in save
   raise PicklingError, \
pickle.PicklingError: can't pickle 'array' object: array('H')
 >>>

The problem is that I NEED that array sizes to be 1 or 2 bytes  and I 
dont know how to get around this problem without arrays.

Any help would be greatly appreciated.

TIA
AM

Aseem Mohanty wrote:

> why does a call to array.array() cause an unpickleable error??
>
> the pickle docs on the python site dont mention anything about arrays, 
> nor do the array docs mention about pickling.
>
> i have a feeling that it might be because of the fact that arrays are 
> dynamic data structures and thus the pickler doesnt really know about 
> its limits (of course I could be totally and miserably  wrong) i 
> couldnt find anything in the docs to support my 'feeling' and the 
> source is kind of above my current level of expertise in python
>
> any help would be appreciated or i am doomed to a major rewrite....
>
> the source in my product that causes the error :
>
> self.K=array.array('H')
> self.L=array.array('B')
> self.R=array.array('H')
>
> TIA
> AM
>

-- 
==================================================================
 Aseem Mohanty							   
 Neurobehavioral Systems Inc, 828 San Pablo Ave, Albany, CA 94706 
 (R) 510 7696011 (M) 510 3014871 (O) 510 5279231		  	
==================================================================								  	
 "I saw `cout' being shifted "Hello world" times to the left and  
  stopped right there!!"                        -- Steve Gonedes  
==================================================================