ó
öSQc           @   sY  d  Z  d d l Z d d l Z d d l Z d d l m Z m Z m Z m Z m	 Z	 d d l
 m Z d d l m Z d d l m Z e j d ƒ Z y d d l m Z e j Z Wn# e e e e f k
 rÓ d Z n Xe rã d Z nO e j d	 k rd
 d g Z n1 e j d k rd
 d g Z n e d e j ƒ ‚ e rhx- e D]" Z e e ƒ Z e d k	 r?Pq?q?Wn  e d k re d d j e ƒ ƒ ‚ n  e e ƒ Z e d e e ƒ Z d „  Z  e e  ƒ Z  e d e e ƒ Z! d „  Z" e! e" ƒ Z" d e f d „  ƒ  YZ# d e f d „  ƒ  YZ$ d e f d „  ƒ  YZ% d e f d „  ƒ  YZ& e	 e# ƒ Z' e	 e$ ƒ Z( e	 e% ƒ Z) e	 e& ƒ Z* d „  Z+ e j, Z- d e- _. e e- _/ e j0 d ƒ Z1 d „  Z2 e2 ƒ  Z3 e4 e3 d ƒ Z5 e4 e3 d ƒ Z6 e4 e3 d  ƒ Z7 [3 e5 e6 e7 f Z8 e8 d$ k Z9 e9 r)e* e j: _/ e* g e j; _. n, e j< e  e" ƒ d d l= Z= e= j> e j? ƒ d S(%   s  
 This module houses the ctypes initialization procedures, as well
 as the notice and error handler function callbacks (get called
 when an error occurs in GEOS).

 This module also houses GEOS Pointer utilities, including
 get_pointer_arr(), and GEOM_PTR.
iÿÿÿÿN(   t   c_char_pt	   Structuret   CDLLt	   CFUNCTYPEt   POINTER(   t   find_library(   t   GEOSException(   t   ImproperlyConfigureds   django.contrib.gis(   t   settingst   ntt   geos_cs   libgeos_c-1t   posixt   GEOSs   Unsupported OS "%s"s]   Could not find the GEOS library (tried "%s"). Try setting GEOS_LIBRARY_PATH in your settings.s   ", "c         C   sL   |  j  ƒ  | j  ƒ  }  } y |  | } Wn |  } n Xt j d | ƒ d  S(   Ns   GEOS_NOTICE: %s
(   t   decodet   loggert   warn(   t   fmtt   lstt   warn_msg(    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyt   notice_h@   s    
c         C   sL   |  j  ƒ  | j  ƒ  }  } y |  | } Wn |  } n Xt j d | ƒ d  S(   Ns   GEOS_ERROR: %s
(   R   R   t   error(   R   R   t   err_msg(    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyt   error_hJ   s    
t
   GEOSGeom_tc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyR   V   s    t   GEOSPrepGeom_tc           B   s   e  Z RS(    (   R   R   (    (    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyR   W   s    t   GEOSCoordSeq_tc           B   s   e  Z RS(    (   R   R   (    (    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyR   X   s    t   GEOSContextHandle_tc           B   s   e  Z RS(    (   R   R   (    (    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyR   Y   s    c         C   s   t  |  } | ƒ  S(   sJ   Gets a ctypes pointer array (of length `n`) for GEOSGeom_t opaque pointer.(   t   GEOM_PTR(   t   nt   GeomArr(    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyt   get_pointer_arrc   s    
s’   ^(?P<version>(?P<major>\d+)\.(?P<minor>\d+)\.(?P<subminor>\d+))((rc(?P<release_candidate>\d+))|dev)?-CAPI-(?P<capi_version>\d+\.\d+\.\d+)( r\d+)?$c             sQ   t  ƒ  j ƒ  }  t j |  ƒ ‰  ˆ  s7 t d |  ƒ ‚ n  t ‡  f d †  d	 Dƒ ƒ S(
   sü   
    Returns a dictionary containing the various version metadata parsed from
    the GEOS version string, including the version number, whether the version
    is a release candidate (and what number release candidate), and the C API
    version.
    s(   Could not parse version info string "%s"c         3   s$   |  ] } | ˆ  j  | ƒ f Vq d  S(   N(   t   group(   t   .0t   key(   t   m(    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pys	   <genexpr>   s    t   versiont   release_candidatet   capi_versiont   majort   minort   subminor(   s   versionR&   R'   s   majors   minorR*   (   t   geos_versionR   t   version_regext   matchR   t   dict(   t   ver(    (   R$   s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyt   geos_version_infot   s    R(   R)   R*   i   i   i    (   i   i   i    (@   t   __doc__t   loggingt   ost   ret   ctypesR    R   R   R   R   t   ctypes.utilR   t   django.contrib.gis.geos.errorR   t   django.core.exceptionsR   t	   getLoggerR   t   django.confR   t   GEOS_LIBRARY_PATHt   lib_patht   AttributeErrort   EnvironmentErrort   ImportErrort   Nonet	   lib_namest   namet   lib_namet   joint   lgeost
   NOTICEFUNCR   t	   ERRORFUNCR   R   R   R   R   R   t   PREPGEOM_PTRt   CS_PTRt   CONTEXT_PTRR    t   GEOSversionR+   t   argtypest   restypet   compileR,   R0   t   _verinfot   intt   GEOS_MAJOR_VERSIONt   GEOS_MINOR_VERSIONt   GEOS_SUBMINOR_VERSIONt   GEOS_VERSIONt   GEOS_PREPAREt
   initGEOS_rt   finishGEOS_rt   initGEOSt   atexitt   registert
   finishGEOS(    (    (    s8   ../Django//lib/python/django/contrib/gis/geos/libgeos.pyt   <module>   s€   (
	 									