Jonathan,

This looks good, and I'm looking forward to testing it. Can I ask you  
to try a different diff format?

"diff -ruB"

would be ideal for me. And please attach it to a ticket at

   http://trac.gispython.org/lab/newticket

after registering on the wiki.

Tests: if you get the Shapely-1.0 branch source like

   svn co http://svn.gispython.org/svn/gispy/Shapely/branches/1.0  
Shapely-1.0

and copy the GEOS DLLs to Shapely-1.0/DLLs, you should able to run  
tests from that location:

   $ python setup.py test

Cheers,

On Aug 26, 2009, at 4:12 PM, Jonathan Hartley wrote:

> I don't really know what I'm doing here, but I have a patch that  
> fixes my problem (attached.) I'm groping my way through this, so  
> presumably I need to do a bunch of other things before this is  
> actually done.
>
> I don't know whether the Shapely source code repositories are  
> public. Or should I be using the PyPI 'setup.py develop' to get the  
> source and tests? For now, I'm working on the source download I got  
> from http://pypi.python.org/pypi/Shapely
>
> The source changes I made in the attached patch are:
> Instead of geos.py running ctypes_declarations.py using execfile, it  
> now calls a function defined in that module, passing the lgeos  
> object upon which attributes should be defined. I don't pretend to  
> understand why it used execfile in the first place, so I may have  
> made an atrocious mistake here.
>
> This change makes py2exe work happily with Shapely, using only the  
> 'data_files' entry in setup.py that I described earlier. My program  
> still appears to execute correctly on Windows XP. This is the only  
> testing I have done. Does Shapely have tests suites somewhere that I  
> could run?
>
> I created the patch using:
>   diff -crB Shapely-1.0.12 Shapely-1.0.12-new > no_more_execfile.patch
> Is there a more appropriate way I should have done this?
>
> Thanks for any guidance,
>
>   Jonathan
>
>
> Jonathan Hartley wrote:
>> Fair enough. I don't know how Shapely works - so I can only vaguely  
>> infer what you mean. However, with that caveat I'll take a look at  
>> the code and get back to the list when I understand enough to have  
>> questions.
>>
>> It crosses my mind that if you are doing what I think you're doing  
>> (ie. manually reading the contents of ctypes_declarations.py and  
>> eval'ing it) then a hackaround solution might be for me to copy  
>> ctypes_declarations.py into my py2exe output without putting it  
>> into library.zip. I'll try that out too.
>>
>> Thanks,
>>
>>   Jonathan
>>
>> Sean Gillies wrote:
>>> Hi Jonathan,
>>>
>>> I've no experience with py2exe, but I'm not surprised that the   
>>> declarations are causing you problems. A better way might be to  
>>> write  a function, that when passed _lgeos, does the prototyping.  
>>> We'd then  call that function instead of eval'ing  
>>> ctypes_declarations.py. Is a  working patch along these lines  
>>> something you might be interested in  contributing? If so, I'd be  
>>> happy to push for a Shapely 1.0.13 release.
>>>
>>> Cheers,
>>> Sean
>>>
>>> On Aug 26, 2009, at 12:35 PM, Jonathan Hartley wrote:
>>>
>>>
>>>> Hi all,
>>>>
>>>> I'm trying to package my Python program up into an executable using
>>>> py2exe, so that users can run the exe without having to install  
>>>> (or  know
>>>> anything about) Python.
>>>>
>>>> I'm stumbling over shapely\ctypes_declarations.py, which just isn't
>>>> included in the py2exe distribution, causing a runtime error when I
>>>> execute my .exe:
>>>>
>>>> IOError: [Errno 2] No such file or directory: 'C:\\Documents and
>>>> Settings\\jhartley\\My
>>>> Dropbox\\projects\\solescion\\dist\\SoleScion-win-binary-0.2.6-svn 
>>>> \ \exe\\library.zip\\shapely\\ctypes_declarations.py'
>>>> Traceback (most recent call last):
>>>> File "main.py", line 5, in <module>
>>>> File "solescion\controller\application.pyo", line 6, in <module>
>>>> File "solescion\controller\gameloop.pyo", line 10, in <module>
>>>> File "solescion\controller\graphics.pyo", line 5, in <module>
>>>> File "solescion\geom\svgload\svg_parser.pyo", line 4, in <module>
>>>> File "shapely\geometry\__init__.pyo", line 1, in <module>
>>>> File "shapely\geometry\geo.pyo", line 5, in <module>
>>>> File "shapely\geometry\point.pyo", line 10, in <module>
>>>> File "shapely\geos.pyo", line 56, in <module>
>>>> IOError: [Errno 2] No such file or directory: 'C:\\Documents and
>>>> Settings\\jhartley\\My
>>>> Dropbox\\projects\\solescion\\dist\\SoleScion-win-binary-0.2.6-svn 
>>>> \ \exe\\library.zip\\shapely\\ctypes_declarations.py'
>>>>
>>>> I tried manually copying /ctypes_declaration.py/ from Shapely   
>>>> directory
>>>> into py2exe's library.zip, but I still get the same error on  
>>>> running,
>>>> much to my puzzlement. Presumably I could tweak my /setup.py/ to   
>>>> include
>>>> ctypes_declaration.py automatically, (and I will try this) but I  
>>>> don't
>>>> see how that will help if the manual copy has had no effect.
>>>>
>>>> Am I doing it very wrong? Does anyone have a recipe or working  
>>>> example
>>>> of using Shapely with py2exe?
>>>>
>>>> Sorry if this is covered somewhere, I've been Googling but to no   
>>>> avail.
>>>>
>>>> Shapely is installed in a virtualenv (which is active) and the
>>>> libgeos.dll is included in the py2exe executable by adding the   
>>>> following
>>>> to my setup.py:
>>>>
>>>>       data_files = [
>>>>           ('', ['solescion/lib/geos.dll']),
>>>>           ('', ['solescion/lib/libgeos-3-0-0.dll']),
>>>>       ],
>>>>
>>>> Thanks for any pointers,
>>>>
>>>>   Jonathan
>>>>
>>>> -- 
>>>> Jonathan Hartley      Made of meat.      http://tartley.com
>>>> [email protected]   +44 7737 062 225   twitter/skype: tartley
>>>>
>>>>
>>>> _______________________________________________
>>>> Community mailing list
>>>> [email protected]
>>>> http://lists.gispython.org/mailman/listinfo/community
>>>>
>>>
>>> -- 
>>> Sean
>>>
>>> _______________________________________________
>>> Community mailing list
>>> [email protected]
>>> http://lists.gispython.org/mailman/listinfo/community
>>>
>>>
>>
>
> -- 
> Jonathan Hartley      Made of meat.      http://tartley.com
> [email protected]   +44 7737 062 225   twitter/skype: tartley
>
>
> diff -crB Shapely-1.0.12/shapely/ctypes_declarations.py  
> Shapely-1.0.12-new/shapely/ctypes_declarations.py
> *** Shapely-1.0.12/shapely/ctypes_declarations.py     Thu Apr  9  
> 21:18:43 2009
> --- Shapely-1.0.12-new/shapely/ctypes_declarations.py Wed Aug 26  
> 14:50:39 2009
> ***************
> *** 1,204 ****
>  import ctypes
>
> ! lgeos = lgeos   # reduce pyflakes complaints
>
> ! lgeos.initGEOS.restype = None
>
> ! lgeos.finishGEOS.restype = None
>
> ! lgeos.GEOSversion.restype = ctypes.c_char_p
>
> ! lgeos.GEOSGeomFromWKT.restype = ctypes.c_void_p
> ! lgeos.GEOSGeomFromWKT.argtypes = [ctypes.c_char_p]
>
> ! lgeos.GEOSGeomToWKT.restype = ctypes.c_char_p
> ! lgeos.GEOSGeomToWKT.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOS_setWKBOutputDims.restype = ctypes.c_int
> ! lgeos.GEOS_setWKBOutputDims.argtypes = [ctypes.c_int]
>
> ! lgeos.GEOSGeomFromWKB_buf.restype = ctypes.c_void_p
> ! lgeos.GEOSGeomFromWKB_buf.argtypes = [ctypes.c_void_p,  
> ctypes.c_size_t]
>
> ! lgeos.GEOSCoordSeq_create.restype = ctypes.c_void_p
> ! lgeos.GEOSCoordSeq_create.argtypes = [ctypes.c_uint, ctypes.c_uint]
>
> ! lgeos.GEOSCoordSeq_clone.restype = ctypes.c_void_p
> ! lgeos.GEOSCoordSeq_clone.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_destroy.restype = None
> ! lgeos.GEOSCoordSeq_destroy.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_setX.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_setX.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> ! lgeos.GEOSCoordSeq_setY.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_setY.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> ! lgeos.GEOSCoordSeq_setZ.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_setZ.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> ! lgeos.GEOSCoordSeq_setOrdinate.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_setOrdinate.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_uint, ctypes.c_double]
>
> ! lgeos.GEOSCoordSeq_getX.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_getX.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_getY.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_getY.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_getZ.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_getZ.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_getSize.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_getSize.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> ! lgeos.GEOSCoordSeq_getDimensions.restype = ctypes.c_int
> ! lgeos.GEOSCoordSeq_getDimensions.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_createPoint.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_createPoint.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_createLinearRing.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_createLinearRing.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_createLineString.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_createLineString.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_createPolygon.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_createPolygon.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p, ctypes.c_uint]
>
> ! lgeos.GEOSGeom_createCollection.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_createCollection.argtypes = [ctypes.c_int,  
> ctypes.c_void_p, ctypes.c_uint]
>
> ! lgeos.GEOSGeom_clone.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_clone.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_destroy.restype = None
> ! lgeos.GEOSGeom_destroy.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSEnvelope.restype = ctypes.c_void_p
> ! lgeos.GEOSEnvelope.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSIntersection.restype = ctypes.c_void_p
> ! lgeos.GEOSIntersection.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSBuffer.restype = ctypes.c_void_p
> ! lgeos.GEOSBuffer.argtypes = [ctypes.c_void_p, ctypes.c_double,  
> ctypes.c_int]
>
> ! lgeos.GEOSConvexHull.restype = ctypes.c_void_p
> ! lgeos.GEOSConvexHull.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSDifference.restype = ctypes.c_void_p
> ! lgeos.GEOSDifference.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSSymDifference.restype = ctypes.c_void_p
> ! lgeos.GEOSSymDifference.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> ! lgeos.GEOSBoundary.restype = ctypes.c_void_p
> ! lgeos.GEOSBoundary.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSUnion.restype = ctypes.c_void_p
> ! lgeos.GEOSUnion.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSPointOnSurface.restype = ctypes.c_void_p
> ! lgeos.GEOSPointOnSurface.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGetCentroid.restype = ctypes.c_void_p
> ! lgeos.GEOSGetCentroid.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSRelate.restype = ctypes.c_char_p
> ! lgeos.GEOSRelate.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSPolygonize.restype = ctypes.c_void_p
> ! lgeos.GEOSPolygonize.argtypes = [ctypes.c_void_p, ctypes.c_uint]
>
> ! lgeos.GEOSLineMerge.restype = ctypes.c_void_p
> ! lgeos.GEOSLineMerge.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSRelatePattern.restype = ctypes.c_char
> ! lgeos.GEOSRelatePattern.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p, ctypes.c_char_p]
>
> ! lgeos.GEOSDisjoint.restype = ctypes.c_int
> ! lgeos.GEOSDisjoint.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSTouches.restype = ctypes.c_int
> ! lgeos.GEOSTouches.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSIntersects.restype = ctypes.c_int
> ! lgeos.GEOSIntersects.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSCrosses.restype = ctypes.c_int
> ! lgeos.GEOSCrosses.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSWithin.restype = ctypes.c_int
> ! lgeos.GEOSWithin.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSContains.restype = ctypes.c_int
> ! lgeos.GEOSContains.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSOverlaps.restype = ctypes.c_int
> ! lgeos.GEOSOverlaps.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSEquals.restype = ctypes.c_int
> ! lgeos.GEOSEquals.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSisEmpty.restype = ctypes.c_int
> ! lgeos.GEOSisEmpty.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSisValid.restype = ctypes.c_int
> ! lgeos.GEOSisValid.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSisSimple.restype = ctypes.c_int
> ! lgeos.GEOSisSimple.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSisRing.restype = ctypes.c_int
> ! lgeos.GEOSisRing.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSHasZ.restype = ctypes.c_int
> ! lgeos.GEOSHasZ.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeomType.restype = ctypes.c_char_p
> ! lgeos.GEOSGeomType.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeomTypeId.restype = ctypes.c_int
> ! lgeos.GEOSGeomTypeId.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGetSRID.restype = ctypes.c_int
> ! lgeos.GEOSGetSRID.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSSetSRID.restype = None
> ! lgeos.GEOSSetSRID.argtypes = [ctypes.c_void_p, ctypes.c_int]
>
> ! lgeos.GEOSGetNumGeometries.restype = ctypes.c_int
> ! lgeos.GEOSGetNumGeometries.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGetGeometryN.restype = ctypes.c_void_p
> ! lgeos.GEOSGetGeometryN.argtypes = [ctypes.c_void_p, ctypes.c_int]
>
> ! lgeos.GEOSGetNumInteriorRings.restype = ctypes.c_int
> ! lgeos.GEOSGetNumInteriorRings.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGetInteriorRingN.restype = ctypes.c_void_p
> ! lgeos.GEOSGetInteriorRingN.argtypes = [ctypes.c_void_p,  
> ctypes.c_int]
>
> ! lgeos.GEOSGetExteriorRing.restype = ctypes.c_void_p
> ! lgeos.GEOSGetExteriorRing.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGetNumCoordinates.restype = ctypes.c_int
> ! lgeos.GEOSGetNumCoordinates.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_getCoordSeq.restype = ctypes.c_void_p
> ! lgeos.GEOSGeom_getCoordSeq.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSGeom_getDimensions.restype = ctypes.c_int
> ! lgeos.GEOSGeom_getDimensions.argtypes = [ctypes.c_void_p]
>
> ! lgeos.GEOSArea.restype = ctypes.c_double
> ! lgeos.GEOSArea.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> ! lgeos.GEOSLength.restype = ctypes.c_int
> ! lgeos.GEOSLength.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
> !
> ! lgeos.GEOSDistance.restype = ctypes.c_int
> ! lgeos.GEOSDistance.argtypes = [ctypes.c_void_p, ctypes.c_void_p,  
> ctypes.c_void_p]
> --- 1,203 ----
>  import ctypes
>
> ! def prototype(lgeos):
> !     lgeos.initGEOS.restype = None
>
> !     lgeos.finishGEOS.restype = None
>
> !     lgeos.GEOSversion.restype = ctypes.c_char_p
>
> !     lgeos.GEOSGeomFromWKT.restype = ctypes.c_void_p
> !     lgeos.GEOSGeomFromWKT.argtypes = [ctypes.c_char_p]
>
> !     lgeos.GEOSGeomToWKT.restype = ctypes.c_char_p
> !     lgeos.GEOSGeomToWKT.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOS_setWKBOutputDims.restype = ctypes.c_int
> !     lgeos.GEOS_setWKBOutputDims.argtypes = [ctypes.c_int]
>
> !     lgeos.GEOSGeomFromWKB_buf.restype = ctypes.c_void_p
> !     lgeos.GEOSGeomFromWKB_buf.argtypes = [ctypes.c_void_p,  
> ctypes.c_size_t]
>
> !     lgeos.GEOSCoordSeq_create.restype = ctypes.c_void_p
> !     lgeos.GEOSCoordSeq_create.argtypes = [ctypes.c_uint,  
> ctypes.c_uint]
>
> !     lgeos.GEOSCoordSeq_clone.restype = ctypes.c_void_p
> !     lgeos.GEOSCoordSeq_clone.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_destroy.restype = None
> !     lgeos.GEOSCoordSeq_destroy.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_setX.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_setX.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> !     lgeos.GEOSCoordSeq_setY.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_setY.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> !     lgeos.GEOSCoordSeq_setZ.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_setZ.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_double]
>
> !     lgeos.GEOSCoordSeq_setOrdinate.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_setOrdinate.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_uint, ctypes.c_double]
>
> !     lgeos.GEOSCoordSeq_getX.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_getX.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_getY.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_getY.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_getZ.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_getZ.argtypes = [ctypes.c_void_p,  
> ctypes.c_uint, ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_getSize.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_getSize.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSCoordSeq_getDimensions.restype = ctypes.c_int
> !     lgeos.GEOSCoordSeq_getDimensions.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_createPoint.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_createPoint.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_createLinearRing.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_createLinearRing.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_createLineString.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_createLineString.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_createPolygon.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_createPolygon.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p, ctypes.c_uint]
>
> !     lgeos.GEOSGeom_createCollection.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_createCollection.argtypes = [ctypes.c_int,  
> ctypes.c_void_p, ctypes.c_uint]
>
> !     lgeos.GEOSGeom_clone.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_clone.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_destroy.restype = None
> !     lgeos.GEOSGeom_destroy.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSEnvelope.restype = ctypes.c_void_p
> !     lgeos.GEOSEnvelope.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSIntersection.restype = ctypes.c_void_p
> !     lgeos.GEOSIntersection.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSBuffer.restype = ctypes.c_void_p
> !     lgeos.GEOSBuffer.argtypes = [ctypes.c_void_p, ctypes.c_double,  
> ctypes.c_int]
>
> !     lgeos.GEOSConvexHull.restype = ctypes.c_void_p
> !     lgeos.GEOSConvexHull.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSDifference.restype = ctypes.c_void_p
> !     lgeos.GEOSDifference.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSSymDifference.restype = ctypes.c_void_p
> !     lgeos.GEOSSymDifference.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSBoundary.restype = ctypes.c_void_p
> !     lgeos.GEOSBoundary.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSUnion.restype = ctypes.c_void_p
> !     lgeos.GEOSUnion.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSPointOnSurface.restype = ctypes.c_void_p
> !     lgeos.GEOSPointOnSurface.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGetCentroid.restype = ctypes.c_void_p
> !     lgeos.GEOSGetCentroid.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSRelate.restype = ctypes.c_char_p
> !     lgeos.GEOSRelate.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSPolygonize.restype = ctypes.c_void_p
> !     lgeos.GEOSPolygonize.argtypes = [ctypes.c_void_p, ctypes.c_uint]
>
> !     lgeos.GEOSLineMerge.restype = ctypes.c_void_p
> !     lgeos.GEOSLineMerge.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSRelatePattern.restype = ctypes.c_char
> !     lgeos.GEOSRelatePattern.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p, ctypes.c_char_p]
>
> !     lgeos.GEOSDisjoint.restype = ctypes.c_int
> !     lgeos.GEOSDisjoint.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSTouches.restype = ctypes.c_int
> !     lgeos.GEOSTouches.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSIntersects.restype = ctypes.c_int
> !     lgeos.GEOSIntersects.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p]
>
> !     lgeos.GEOSCrosses.restype = ctypes.c_int
> !     lgeos.GEOSCrosses.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSWithin.restype = ctypes.c_int
> !     lgeos.GEOSWithin.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSContains.restype = ctypes.c_int
> !     lgeos.GEOSContains.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSOverlaps.restype = ctypes.c_int
> !     lgeos.GEOSOverlaps.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSEquals.restype = ctypes.c_int
> !     lgeos.GEOSEquals.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSisEmpty.restype = ctypes.c_int
> !     lgeos.GEOSisEmpty.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSisValid.restype = ctypes.c_int
> !     lgeos.GEOSisValid.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSisSimple.restype = ctypes.c_int
> !     lgeos.GEOSisSimple.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSisRing.restype = ctypes.c_int
> !     lgeos.GEOSisRing.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSHasZ.restype = ctypes.c_int
> !     lgeos.GEOSHasZ.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeomType.restype = ctypes.c_char_p
> !     lgeos.GEOSGeomType.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeomTypeId.restype = ctypes.c_int
> !     lgeos.GEOSGeomTypeId.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGetSRID.restype = ctypes.c_int
> !     lgeos.GEOSGetSRID.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSSetSRID.restype = None
> !     lgeos.GEOSSetSRID.argtypes = [ctypes.c_void_p, ctypes.c_int]
>
> !     lgeos.GEOSGetNumGeometries.restype = ctypes.c_int
> !     lgeos.GEOSGetNumGeometries.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGetGeometryN.restype = ctypes.c_void_p
> !     lgeos.GEOSGetGeometryN.argtypes = [ctypes.c_void_p,  
> ctypes.c_int]
>
> !     lgeos.GEOSGetNumInteriorRings.restype = ctypes.c_int
> !     lgeos.GEOSGetNumInteriorRings.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGetInteriorRingN.restype = ctypes.c_void_p
> !     lgeos.GEOSGetInteriorRingN.argtypes = [ctypes.c_void_p,  
> ctypes.c_int]
>
> !     lgeos.GEOSGetExteriorRing.restype = ctypes.c_void_p
> !     lgeos.GEOSGetExteriorRing.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGetNumCoordinates.restype = ctypes.c_int
> !     lgeos.GEOSGetNumCoordinates.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_getCoordSeq.restype = ctypes.c_void_p
> !     lgeos.GEOSGeom_getCoordSeq.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSGeom_getDimensions.restype = ctypes.c_int
> !     lgeos.GEOSGeom_getDimensions.argtypes = [ctypes.c_void_p]
>
> !     lgeos.GEOSArea.restype = ctypes.c_double
> !     lgeos.GEOSArea.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSLength.restype = ctypes.c_int
> !     lgeos.GEOSLength.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
>
> !     lgeos.GEOSDistance.restype = ctypes.c_int
> !     lgeos.GEOSDistance.argtypes = [ctypes.c_void_p,  
> ctypes.c_void_p, ctypes.c_void_p]
> diff -crB Shapely-1.0.12/shapely/geos.py Shapely-1.0.12-new/shapely/ 
> geos.py
> *** Shapely-1.0.12/shapely/geos.py    Thu Apr  9 21:18:43 2009
> --- Shapely-1.0.12-new/shapely/geos.py        Wed Aug 26 14:53:44 2009
> ***************
> *** 8,13 ****
> --- 8,15 ----
>  from ctypes import cdll, CDLL, PyDLL, CFUNCTYPE, c_char_p
>  from ctypes.util import find_library
>
> + from ctypes_declarations import prototype
> +
>  if sys.platform == 'win32':
>      try:
>          local_dlls = os.path.abspath(os.__file__ + "../../../DLLs")
> ***************
> *** 52,59 ****
>
>
>  # Load the ctypes restype and argtype declarations for geos_c  
> functions.
> ! _here = os.path.abspath(os.path.dirname(__file__))
> ! execfile(os.path.join(_here, 'ctypes_declarations.py'))
>
>  class allocated_c_char_p(c_char_p):
>      pass
> --- 54,60 ----
>
>
>  # Load the ctypes restype and argtype declarations for geos_c  
> functions.
> ! prototype(lgeos)
>
>  class allocated_c_char_p(c_char_p):
>      pass
> _______________________________________________
> Community mailing list
> [email protected]
> http://lists.gispython.org/mailman/listinfo/community

--
Sean

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

Reply via email to