I'd be really surprised if pickling point adapters worked. At the very  
least, you'd have to pickle the object they wrap too, and that starts  
to get beyond their scope. They are really only about temporarily  
wrapping other long-lived objects. Pickle their context and then re- 
wrap as needed.

Sean

On May 18, 2009, at 4:27 PM, Douglas Mayle wrote:

> Also, I don't know if you addressed the serialization as well.  I  
> added:
>
>     def __reduce__(self):
>         return (self.__class__, (self.context,), self.to_wkb())
>
> to the PointAdapter class, which seems to take care of the issue...
> (I tested this by checking out 1.0.12)
>
> Douglas Mayle
>
> On May 18, 2009, at 6:03 PM, Sean Gillies wrote:
>
>> I've just fixed this bug and upload a4 eggs to my index. Care to try
>> again?
>>
>> More notes at http://sgillies.net/blog/900/diving-into-shapely-1-1.
>>
>> Cheers,
>> Sean
>>
>> On May 18, 2009, at 3:09 PM, Douglas Mayle wrote:
>>
>>> Hi all,
>>>     I'm having some trouble pickling shapely geometry objects.  After
>>> saving a shapely geometry object in my beaker session (which pickles
>>> the object, I am unable to reload it from the database)  This is the
>>> error I'm getting:
>>>
>>>>>> import cPickle
>>>>>>
>>> cPickle
>>> .loads("(dp1\nS'session'\np2\n(dp3\nS'media'\np4\n(lp5\nccopy_reg
>>> \n_reconstructor\np6\n(ccommunityalmanac.model.almanac\nStory
>>> \np7\nc__builtin__\nobject\np8\nNtRp9\n(dp10\nS'text'\np11\nVsadfsfd
>>> \np12\nsS'_sa_instance_state'\np13\ng6\n(csqlalchemy.orm.identity
>>> \nIdentityManagedState
>>> \np14\ng8\nNtRp15\n(dp16\nS'modified'\np17\nI01\nsS'committed_state'\np18\n(dp19\ng11\ncsqlalchemy.util\nsymbol\np20\n(S'NO_VALUE'\np21\ntRp22\nsS'order'\np23\ng22\nssS'instance'\np24\ng9\nsS'callables'\np25\n(dp26\nsS'parents'\np27\n(dp28\nsS'key'\np29\nNsS'expired_attributes'\np30\nc__builtin__\nfrozenset\np31\n((ltRp32\nsS'expired'\np33\nI00\nsS'pending'\np34\n(dp35\nsbsg23\nI0\nsS'id'\np36\nNsbag6\n(ccommunityalmanac.model.almanac\nMap\np37\ng8\nNtRp38\n(dp39\nS'_sa_instance_state'\np40\ng6\n(g14\ng8\nNtRp41\n(dp42\ng17\nI01\nsg18\n(dp43\nS'location'\np44\ng22\nsS'order'\np45\ng22\nssg24\ng38\nsg25\n(dp46\nsg27\n(dp47\nsg29\nNsg30\ng32\nsg33\nI00\nsg34\n(dp48\nsbsg44\ncshapely.geometry.point\nPointAdapter\np49\n(tRp50\nS'\\x01\\x01\\x00\\x00\\x00\\x00\\xa8\\xb2\\x91\\x1ex_\\xc1I\\x8d%\\xb10\\xf0RA'\nbsg45\nI1\nsbasS'_accessed_time'\np51\nF1242679546.0185621\nsS'_creation_time'\np52\nF1242679454.1160531\nss."
>>> ... )
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> TypeError: ('__init__() takes exactly 2 arguments (1 given)', <class
>>> 'shapely.geometry.point.PointAdapter'>, ())
>>>>>>
>>>
>>> I wanted to check to see if it was just fixed in trunk, but I'm
>>> unable
>>> to run trunk because util seems to have disappeared:
>>> Launching server process
>>> /Users/douglas/Projects/almanacpylons/lib/python2.5/site-packages/
>>> Shapely-1.1a3-py2.5.egg/shapely/implementation.py:40:
>>> ImplementationWarning: no installed plugin package matches
>>> requirements shapely.geos>=1.0a3
>>> warn("no installed plugin package matches requirements %s" %
>>> str(e), ImplementationWarning)
>>> Traceback (most recent call last):
>>> File "/Users/douglas/Projects/almanacpylons/bin/ca", line 22, in
>>> <module>
>>>   main()
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/commands.py", line 184, in main
>>>   from communityalmanac.config.middleware import make_app
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/config/middleware.py", line 31, in <module>
>>>   from communityalmanac.config.environment import load_environment
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/config/environment.py", line 29, in <module>
>>>   import communityalmanac.lib.helpers
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/lib/helpers.py", line 25, in <module>
>>>   from communityalmanac.lib.base import render
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/lib/base.py", line 27, in <module>
>>>   from communityalmanac.model import meta
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/model/__init__.py", line 38, in <module>
>>>   from communityalmanac.model.almanac import Almanac, Page, User,
>>> Media, PDF, Sound, Image, Story, Map, Comment
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/model/almanac.py", line 25, in <module>
>>>   from sqlgeotypes import POINT
>>> File "/Users/douglas/Projects/almanacpylons/src/communityalmanac/
>>> communityalmanac/model/sqlgeotypes.py", line 3, in <module>
>>>   from shapely import geometry, wkb
>>> File "/Users/douglas/Projects/almanacpylons/lib/python2.5/site-
>>> packages/Shapely-1.1a3-py2.5.egg/shapely/geometry/__init__.py", line
>>> 20, in <module>
>>>   from point import Point, asPoint
>>> File "/Users/douglas/Projects/almanacpylons/lib/python2.5/site-
>>> packages/Shapely-1.1a3-py2.5.egg/shapely/geometry/point.py", line  
>>> 10,
>>> in <module>
>>>   from shapely.geometry.utils import coord_seq
>>> ImportError: No module named utils
>>>
>>> Thanks,
>>> Douglas Mayle
>>>
>>>
>>> _______________________________________________
>>> Community mailing list
>>> [email protected]
>>> http://lists.gispython.org/mailman/listinfo/community
>>
>> _______________________________________________
>> Community mailing list
>> [email protected]
>> http://lists.gispython.org/mailman/listinfo/community
>
> _______________________________________________
> Community mailing list
> [email protected]
> http://lists.gispython.org/mailman/listinfo/community

_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community

Reply via email to