Hi Jonathan,

I applied the patch, tested, and committed in r1416. See

   http://trac.gispython.org/lab/ticket/189

I'll start to prepare a milestone 1.0.13 milestone and engage  
developers in wider testing.

Thanks!

On Aug 28, 2009, at 1:33 AM, jonathan hartley wrote:

> Hey there Sean et al,
>
> There's a new ticket here:
>   http://trac.gispython.org/lab/ticket/189
> I forgot to use wiki markup on the traceback, sorreeee.
>
> I get a couple of test failures on a pristine working copy  
> (attached.) One of them at least looks like a known issue with  
> locales. I'm running Python2.6 on WinXP with mostly UK oriented  
> settings. It's midnight here and I just got home, but I'll look at  
> these fails again on Saturday, try 'em on Linux too, see if I can  
> understand what's up.
>
> Anyhow, I made the same source code changes as in the patch I  
> previously mailed to the list. The test results are unaffected by  
> this change. The patch is now attached to the ticket. I used the  
> unified diff as produced by 'svn diff', I hope that's appropriate.
>
> Many thanks for guiding me through this, it's much appreciated.
>
> Best,
>
>   Jonathan
>
>
> Sean Gillies wrote:
>> 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
>>
>>
>
> -- 
> Jonathan Hartley      Made of meat.      http://tartley.com
> [email protected]   +44 7737 062 225   twitter/skype: tartley
>
>
>> python setup.py test
> running test
> running egg_info
> writing requirements to Shapely.egg-info\requires.txt
> writing Shapely.egg-info\PKG-INFO
> writing top-level names to Shapely.egg-info\top_level.txt
> writing dependency_links to Shapely.egg-info\dependency_links.txt
> unrecognized .svn/entries format in
> reading manifest file 'Shapely.egg-info\SOURCES.txt'
> writing manifest file 'Shapely.egg-info\SOURCES.txt'
> running build_ext
> c:\documents and settings\jhartley\my dropbox\projects\shapely-patch 
> \shapely-1.0\tests\test_doctests.pyc
> Doctest: Array.txt ... ok
> Doctest: attribute-chains.txt ... bufferOriginalPrecision failed  
> (TopologyException: assigned depths do not match 0.366203  
> -0.536501), trying with reduced precision
> recomputing with precision scale factor = 1e+11
> Scaler: offsetX,Y: 0,0 scaleFactor: 1e+11
> ReScaler: offsetX,Y: 0,0 scaleFactor: 1e+11
> FAIL
> Doctest: binascii_hex.txt ... ok
> Doctest: dimensions.txt ... ok
> Doctest: GeoInterface.txt ... ok
> Doctest: invalid_intersection.txt ... ok
> Doctest: IterOps.txt ... ok
> Doctest: LineString.txt ... ok
> Doctest: MultiLineString.txt ... ok
> Doctest: MultiPoint.txt ... ok
> Doctest: MultiPolygon.txt ... ok
> Doctest: Operations.txt ... ok
> Doctest: Persist.txt ... ok
> Doctest: Point.txt ... ok
> Doctest: Polygon.txt ... ok
> Doctest: polygonize.txt ... ok
> Doctest: Predicates.txt ... ok
> Doctest: wkt_locale.txt ... FAIL
>
> ======================================================================
> FAIL: Doctest: attribute-chains.txt
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>  File "C:\Python25\lib\doctest.py", line 2128, in runTest
>    raise self.failureException(self.format_failure(new.getvalue()))
> AssertionError: Failed doctest test for attribute-chains.txt
>  File "c:\documents and settings\jhartley\my dropbox\projects 
> \shapely-patch\shapely-1.0\tests\attribute-chains.txt", line 0
>
> ----------------------------------------------------------------------
> File "c:\documents and settings\jhartley\my dropbox\projects\shapely- 
> patch\shapely-1.0\tests\attribute-chains.txt", line 12, in attribute- 
> chains.txt
> Failed example:
>    print list(Point(0.0, 0.0).buffer(1.0).exterior.coords)
> Expected:
>    [(0.0, -1.0), (-1.0, -1.0), ...
> Got:
>    [(1.0, 0.0), (0.99518472667219693, -0.098017140329560506),  
> (0.98078528040323054, -0.19509032201612808), (0.95694033573220894,  
> -0.29028467725446211), (0.92387953251128696, -0.38268343236508939),  
> (0.88192126434835527, -0.4713967368259972), (0.83146961230254557,  
> -0.55557023301960173), (0.77301045336273744, -0.63439328416364493),  
> (0.70710678118654813, -0.70710678118654691), (0.63439328416364626,  
> -0.77301045336273633), (0.55557023301960307, -0.83146961230254468),  
> (0.47139673682599859, -0.88192126434835449), (0.38268343236509084,  
> -0.92387953251128629), (0.29028467725446361, -0.95694033573220849),  
> (0.19509032201612964, -0.98078528040323021), (0.098017140329562089,  
> -0.99518472667219671), (1.615542552166338e-015, -1.0),  
> (-0.098017140329558883, -0.99518472667219704),  
> (-0.19509032201612647, -0.98078528040323076), (-0.2902846772544605,  
> -0.95694033573220938), (-0.38268343236508784, -0.92387953251128752),  
> (-0.4713967368259957, -0.88192126434835605), (-0.55557023301960051,  
> -0.83146961230254635), (-0.63439328416364393, -0.77301045336273821),  
> (-0.70710678118654624, -0.70710678118654879), (-0.77301045336273588,  
> -0.63439328416364682), (-0.83146961230254435, -0.55557023301960362),  
> (-0.88192126434835427, -0.47139673682599903), (-0.92387953251128618,  
> -0.38268343236509111), (-0.95694033573220849, -0.29028467725446366),  
> (-0.98078528040323021, -0.19509032201612947), (-0.99518472667219682,  
> -0.098017140329561714), (-1.0, -1.010639055082363e-015),  
> (-0.99518472667219693, 0.098017140329559702), (-0.98078528040323065,  
> 0.1950903220161275), (-0.95694033573220905, 0.29028467725446172),  
> (-0.92387953251128696, 0.38268343236508923), (-0.88192126434835527,  
> 0.47139673682599725), (-0.83146961230254546, 0.55557023301960196),  
> (-0.7730104533627371, 0.63439328416364527), (-0.70710678118654768,  
> 0.70710678118654746), (-0.63439328416364593, 0.77301045336273666),  
> (-0.55557023301960295, 0.83146961230254479), (-0.4713967368259987,  
> 0.88192126434835449), (-0.38268343236509117, 0.92387953251128618),  
> (-0.29028467725446411, 0.95694033573220838), (-0.19509032201613041,  
> 0.98078528040322999), (-0.098017140329563102, 0.9951847266721966),  
> (-2.8482262121737323e-015, 1.0), (0.098017140329557426,  
> 0.99518472667219715), (0.19509032201612481, 0.9807852804032311),  
> (0.29028467725445867, 0.95694033573220993), (0.3826834323650859,  
> 0.9238795325112884), (0.47139673682599365, 0.88192126434835716),  
> (0.55557023301959818, 0.8314696123025479), (0.63439328416364149,  
> 0.77301045336274021), (0.70710678118654358, 0.70710678118655146),  
> (0.77301045336273322, 0.63439328416365004), (0.83146961230254179,  
> 0.5555702330196074), (0.88192126434835194, 0.47139673682600342),  
> (0.92387953251128407, 0.38268343236509617), (0.95694033573220671,  
> 0.29028467725446927), (0.98078528040322899, 0.19509032201613569),  
> (0.99518472667219615, 0.098017140329568472), (1.0,  
> 8.2385270480656025e-015), (1.0, 0.0)]
>
>
> ======================================================================
> FAIL: Doctest: wkt_locale.txt
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>  File "C:\Python25\lib\doctest.py", line 2128, in runTest
>    raise self.failureException(self.format_failure(new.getvalue()))
> AssertionError: Failed doctest test for wkt_locale.txt
>  File "c:\documents and settings\jhartley\my dropbox\projects 
> \shapely-patch\shapely-1.0\tests\wkt_locale.txt", line 0
>
> ----------------------------------------------------------------------
> File "c:\documents and settings\jhartley\my dropbox\projects\shapely- 
> patch\shapely-1.0\tests\wkt_locale.txt", line 7, in wkt_locale.txt
> Failed example:
>    locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
> Exception raised:
>    Traceback (most recent call last):
>      File "C:\Python25\lib\doctest.py", line 1228, in __run
>        compileflags, 1) in test.globs
>      File "<doctest wkt_locale.txt[1]>", line 1, in <module>
>        locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
>      File "C:\Python25\lib\locale.py", line 478, in setlocale
>        return _setlocale(category, locale)
>    Error: unsupported locale setting
>
>
> ----------------------------------------------------------------------
> Ran 18 tests in 0.328s
>
> FAILED (failures=2)
> Exception exceptions.AttributeError: "'NoneType' object has no  
> attribute 'GEOSGeom_destroy'" in <bound method Point.__del__ of  
> <shapely.geometry.point.Point object at 0x00F455B0>> ignored
> Exception exceptions.AttributeError: "'NoneType' object has no  
> attribute 'GEOSGeom_destroy'" in <bound method MultiPolygon.__del__  
> of <shapely.geometry.multipolygon.MultiPolygon object at  
> 0x00F17870>> ignored
>
>
>
> _______________________________________________
> 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