
vÅÏ^ò  ã               @   sÜ  d  d l  Z  d  d l Z d  d l Z d  d l 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 Yn Xe rØ d Z ng e j d k rÿ d	 d
 d d d g Z n@ e j d k r,d d d d d d d g Z n e d e j ƒ ‚ e rox' e D] Z e	 e ƒ Z e d k	 rLPqLWe d k r”e d d j e ƒ ƒ ‚ e e ƒ Z e j d k rËd  d l m Z e e ƒ Z d d „  Z e d ƒ Z e g e _  e e _! d d „  Z" d d  „  Z# e j$ d! ƒ Z% d" d# „  Z& e& ƒ  Z' e( e' d$ ƒ Z) e( e' d% ƒ Z* e' d& oke( e' d& ƒ Z+ e) e* e+ f Z, [' e d e e e ƒ Z- d' d( „  Z. e- e. ƒ Z. d) d* „  Z/ e/ d+ e- g e- ƒ Z0 e0 e. ƒ d S),é    N)ÚCDLLÚ	CFUNCTYPEÚc_char_pÚc_int)Úfind_library)ÚGDALException)ÚImproperlyConfiguredzdjango.contrib.gis)ÚsettingsÚntZgdal204Zgdal203Zgdal202Zgdal201Zgdal20ÚposixZgdalZGDALz	gdal2.4.0z	gdal2.3.0z	gdal2.2.0z	gdal2.1.0z	gdal2.0.0zGDAL is unsupported on OS "%s".zzCould not find the GDAL library (tried "%s"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.z", ")ÚWinDLLc             C   s#   t  j d k r t |  St |  Sd S)z^
    Return the correct STDCALL function for certain OSR routines on Win32
    platforms.
    r
   N)ÚosÚnameÚlwingdalÚlgdal)Úfunc© r   úA/tmp/pip-build-8lau8j11/django/django/contrib/gis/gdal/libgdal.pyÚstd_call9   s    r   ZGDALVersionInfoc               C   s
   t  d ƒ S)z0Return only the GDAL version number information.s   RELEASE_NAME)Ú_version_infor   r   r   r   Úgdal_versionL   s    r   c               C   s
   t  d ƒ S)z)Return the full GDAL version information.Ú )r   r   r   r   r   Úgdal_full_versionQ   s    r   z5^(?P<major>\d+)\.(?P<minor>\d+)(\.(?P<subminor>\d+))?c                 sK   t  ƒ  j ƒ  }  t j |  ƒ ‰  ˆ  s4 t d |  ƒ ‚ ‡  f d d †  d Dƒ S)Nz(Could not parse GDAL version string "%s"c                s"   i  |  ] } ˆ  j  | ƒ | “ q Sr   )Úgroup)Ú.0Úkey)Úmr   r   ú
<dictcomp>^   s   	 z%gdal_version_info.<locals>.<dictcomp>ÚmajorÚminorÚsubminor)zmajorzminorr    )r   ÚdecodeÚversion_regexÚmatchr   )Úverr   )r   r   Úgdal_version_infoY   s
    r%   r   r   r    c             C   s   t  j d | | ƒ d  S)NzGDAL_ERROR %d: %s)ÚloggerÚerror)Zerror_classZerror_numberÚmessager   r   r   Úerr_handlerl   s    r)   c             C   s"   t  |  ƒ } | | _ | | _ | S)N)r   ÚargtypesÚrestype)r   Úargsr+   r   r   r   r   Úfunctions   s    		r-   ZCPLSetErrorHandler)1Úloggingr   ÚreÚctypesr   r   r   r   Úctypes.utilr   Zdjango.contrib.gis.gdal.errorr   Zdjango.core.exceptionsr   Ú	getLoggerr&   Zdjango.confr	   ZGDAL_LIBRARY_PATHZlib_pathÚAttributeErrorÚImportErrorÚOSErrorZ	lib_namesr   Zlib_nameÚjoinr   r   r   r   r   r*   r+   r   r   Úcompiler"   r%   Z_verinfoÚintZGDAL_MAJOR_VERSIONZGDAL_MINOR_VERSIONZGDAL_SUBMINOR_VERSIONZGDAL_VERSIONZCPLErrorHandlerr)   r-   Zset_error_handlerr   r   r   r   Ú<module>   sh   "			