Ë
    ¹ûàgH!  ã                   ó¾   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ  G d„ de«      Z G d„ dee«      Zy)z\
SQL functions reference lists:
https://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html
é    )Úmodels)ÚBaseSpatialOperations)ÚSpatiaLiteAdapter)ÚSpatialOperator)ÚGEOSGeometryÚGEOSGeometryBase)Úwkb_r)ÚDistance)ÚImproperlyConfigured)ÚDatabaseOperations)Úcached_property)Úget_version_tuplec                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚSpatialiteNullCheckOperatorc                 ó<   •— t         ‰| �  ||||«      \  }}d|z  |fS )Nz%s > 0)ÚsuperÚas_sql)ÚselfÚ
connectionÚlookupÚtemplate_paramsÚ
sql_paramsÚsqlÚparamsÚ	__class__s          €úr/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/operations.pyr   z"SpatialiteNullCheckOperator.as_sql   s*   ø€ Ü‘g‘n Z°¸È*ÓU‰ˆˆVØ˜#‰~˜vÐ%Ð%ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__)r   s   @r   r   r      s   ø„ ÷&ð &r   r   c                   ó:  — e Zd ZdZdZeZdZdZdZ	dZ
dZi d ed	¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed¬
«      “d ed ¬
«      “d! ed"¬
«      “d# ed$¬
«      “d% ed	¬
«      “d& ed	¬
«      “d' ed(¬
«      “Zej                   fZd)Zd*d+d,d-d.d/d0d1d2d3d4d5d6œZed7„ «       Zed8„ «       Zd9„ Zd:„ Zd;„ Zd<„ Zd=„ Zd>„ Zd?„ Zd@„ ZdA„ ZdB„ Z dC„ Z!dD„ Z"dE„ Z#dF„ Z$dG„ Z%yH)IÚSpatiaLiteOperationsÚ
spatialiteTÚCollectÚExtentÚMakeLineÚGUnionÚGeomFromTextÚequalsÚEquals)ÚfuncÚdisjointÚDisjointÚtouchesÚTouchesÚcrossesÚCrossesÚwithinÚWithinÚoverlapsÚOverlapsÚcontainsÚContainsÚ
intersectsÚ
IntersectsÚrelateÚRelateÚ	coveredbyÚ	CoveredByÚcoversÚCoversÚ	containedÚ	MbrWithinÚ
bbcontainsÚMbrContainsÚ
bboverlapsÚMbrOverlapsÚsame_asÚexactÚdwithinÚPtDistWithinzCAST (AsEWKB(%s) AS BLOB)ÚSt_AsBinaryÚGEOSMinimumBoundingCircleÚST_ForceLHRÚST_GeomFromWKBÚST_GeomFromTextÚ	ST_LengthÚST_Line_Locate_PointÚ
ST_NPointsÚ
ST_ReverseÚScaleCoordsÚST_TranslateÚST_Union)ÚAsWKBÚBoundingCircleÚForcePolygonCWÚFromWKBÚFromWKTÚLengthÚLineLocatePointÚ	NumPointsÚReverseÚScaleÚ	TranslateÚUnionc                 óf   — h d£}| j                  «       s|h d£z  }| j                  dk  r|dhz  }|S )N>   ÚIsEmptyÚMemSizeÚGeometryDistance>   ÚAzimuthÚGeoHashÚ	MakeValid)é   é   rX   )Úgeom_lib_versionÚspatial_version)r   Úunsupporteds     r   Úunsupported_functionsz*SpatiaLiteOperations.unsupported_functionsS   s@   € â@ˆØ×$Ñ$Ô&ØÒ>Ñ>ˆKØ×Ñ &Ò(ØÐ,Ð-Ñ-ˆKØÐr   c                 ó¾   — 	 | j                  «       dd }|dk  rt        d«      ‚|S # t        $ r,}t        d| j                  j                  d   ›d�«      |‚d}~ww xY w)z0Determine the version of the SpatiaLite library.rk   Nz1Cannot determine the SpatiaLite version for the "ÚNAMEzJ" database. Was the SpatiaLite initialization SQL loaded on this database?)é   é   r   z.GeoDjango supports SpatiaLite 4.3.0 and above.)Úspatialite_version_tupleÚ	Exceptionr   r   Úsettings_dict)r   ÚversionÚexcs      r   rm   z$SpatiaLiteOperations.spatial_version\   st   € ð	Ø×3Ñ3Ó5°a°bÐ9ˆGð �YÒÜ&Ð'WÓXÐXØˆøô ò 	Ý&ð —?‘?×0Ñ0°Ó8ð;óð ð	ûð	ús   ‚' §	A°'AÁAc                 ój   — |€yt        |«      j                  }|d   dd \  }}|d   dd \  }}||||fS )zV
        Convert the polygon data received from SpatiaLite to min/max values.
        Nr   é   )r   Úshell)r   Úboxr{   ÚxminÚyminÚxmaxÚymaxs          r   Úconvert_extentz#SpatiaLiteOperations.convert_extentk   sQ   € ð ˆ;ØÜ˜SÓ!×'Ñ'ˆØ˜1‘X˜b˜q�\‰
ˆˆdØ˜1‘X˜b˜q�\‰
ˆˆdØ�d˜D $Ð'Ð'r   c                  ó   — y)z„
        Return None because geometry columns are added via the
        `AddGeometryColumn` stored procedure on SpatiaLite.
        N© )r   Úfs     r   Úgeo_db_typez SpatiaLiteOperations.geo_db_typev   s   € ð
 r   c                 ó(  — |sg S |d   }t        |t        «      ru|j                  | j                  «      r|dk(  rt	        d«      ‚|j
                  }|gS t        |t        j                  |j                  | j                  «      «      «      }|gS |}|gS )zu
        Return the distance parameters for the given geometry field,
        lookup value, and lookup type.
        r   rI   zNOnly numeric values of degree units are allowed on geographic DWithin queries.)	Ú
isinstancer
   Úgeodeticr   Ú
ValueErrorÚmÚgetattrÚunit_attnameÚ
units_name)r   r„   ÚvalueÚlookup_typeÚ
dist_params        r   Úget_distancez!SpatiaLiteOperations.get_distance}   s    € ñ
 ØˆIØ�a‘ˆÜ�eœXÔ&Ø�z‰z˜$Ÿ/™/Ô*Ø )Ò+Ü$ð6óð ð #ŸW™W�
ð ˆ|Ðô %Øœ8×0Ñ0°·±¸d¿o¹oÓ1NÓOó�
ð
 ˆ|Ðð ˆJØˆ|Ðr   c                 óÔ   — | j                   j                  «       }	 |j                  d|z  «       |j                  «       }|j	                  «        |d   S # |j	                  «        w xY w)z±
        Helper routine for calling SpatiaLite functions and returning
        their result.
        Any error occurring in this method should be handled by the caller.
        z	SELECT %sr   )r   Ú_cursorÚexecuteÚfetchoneÚclose)r   r,   ÚcursorÚrows       r   Ú_get_spatialite_funcz)SpatiaLiteOperations._get_spatialite_func•   sW   € ð —‘×(Ñ(Ó*ˆð	Ø�N‰N˜;¨Ñ-Ô.Ø—/‘/Ó#ˆCà�L‰LŒNØ�1‰vˆøð �L‰L�Nús   œ$A ÁA'c                 ó$   — | j                  d«      S )z:Return the version of GEOS used by SpatiaLite as a string.zgeos_version()©r™   ©r   s    r   Úgeos_versionz!SpatiaLiteOperations.geos_version£   s   € à×(Ñ(Ð)9Ó:Ð:r   c                 ó$   — | j                  d«      S )z:Return the version of the PROJ library used by SpatiaLite.zproj4_version()r›   rœ   s    r   Úproj_versionz!SpatiaLiteOperations.proj_version§   s   € à×(Ñ(Ð):Ó;Ð;r   c                 ó$   — | j                  d«      S )z8Return the version of LWGEOM library used by SpatiaLite.zlwgeom_version()r›   rœ   s    r   Úlwgeom_versionz#SpatiaLiteOperations.lwgeom_version«   ó   € à×(Ñ(Ð);Ó<Ð<r   c                 ó$   — | j                  d«      S )z8Return the version of RTTOPO library used by SpatiaLite.zrttopo_version()r›   rœ   s    r   Úrttopo_versionz#SpatiaLiteOperations.rttopo_version¯   r¢   r   c                 ó`   — | j                   dk\  r| j                  «       S | j                  «       S )zf
        Return the version of the version-dependant geom library used by
        SpatiaLite.
        )rj   )rm   r¤   r¡   rœ   s    r   rl   z%SpatiaLiteOperations.geom_lib_version³   s0   € ð
 ×Ñ 4Ò'Ø×&Ñ&Ó(Ð(à×&Ñ&Ó(Ð(r   c                 ó$   — | j                  d«      S )z2Return the SpatiaLite library version as a string.zspatialite_version()r›   rœ   s    r   Úspatialite_versionz'SpatiaLiteOperations.spatialite_version½   s   € à×(Ñ(Ð)?Ó@Ð@r   c                 ó@   — | j                  «       }|ft        |«      z   S )zl
        Return the SpatiaLite version as a tuple (version string, major,
        minor, subminor).
        )r§   r   )r   rw   s     r   rt   z-SpatiaLiteOperations.spatialite_version_tupleÁ   s%   € ð
 ×)Ñ)Ó+ˆØˆzÔ-¨gÓ6Ñ6Ð6r   c                 ód   — |j                  «       dk(  rdn|j                  «       }t        | |«      S )zr
        Return the spatial aggregate SQL template and function for the
        given Aggregate instance.
        ÚunionÚunionagg)Úlowerr‹   )r   Úagg_names     r   Úspatial_aggregate_namez+SpatiaLiteOperations.spatial_aggregate_nameÉ   s-   € ð
 "*§¡Ó!1°WÒ!<‘:À(Ç.Á.ÓBRˆÜ�t˜XÓ&Ð&r   c                 ó   — ddl m} |S )Nr   )ÚSpatialiteGeometryColumns)Ú0django.contrib.gis.db.backends.spatialite.modelsr°   )r   r°   s     r   Úgeometry_columnsz%SpatiaLiteOperations.geometry_columnsÒ   s   € õ	
ð )Ð(r   c                 ó   — ddl m} |S )Nr   )ÚSpatialiteSpatialRefSys)r±   r´   )r   r´   s     r   Úspatial_ref_sysz$SpatiaLiteOperations.spatial_ref_sysÙ   s   € õ	
ð 'Ð&r   c                 ój   ‡‡— |j                   j                  Št        «       j                  Šˆˆfd„}|S )Nc                 ó0   •— | €d S t         ‰| «      ‰«      S )N)r   )rŽ   Ú
expressionr   Ú
geom_classÚreads      €€r   Ú	converterz>SpatiaLiteOperations.get_geometry_converter.<locals>.converterä   s   ø€ Ø ˜=�4ÐWÔ.>¹tÀE»{ÈJÓ.WÐWr   )Úoutput_fieldr¹   r	   rº   )r   r¸   r»   r¹   rº   s      @@r   Úget_geometry_converterz+SpatiaLiteOperations.get_geometry_converterà   s-   ù€ Ø×,Ñ,×7Ñ7ˆ
Ü‹w�|‰|ˆõ	Xð Ðr   N)&r   r   r    Únamer$   r   ÚAdapterÚcollectÚextentÚmakeliner«   Ú	from_textr   r   Úgis_operatorsr   ÚExtent3DÚdisallowed_aggregatesÚselectÚfunction_namesr   ro   rm   r�   r…   r‘   r™   r�   rŸ   r¡   r¤   rl   r§   rt   r®   r²   rµ   r½   rƒ   r   r   r#   r#      s  „ Ø€DØ€Jà€Gà€GØ€FØ€HØ€Hà€IðàÑ-°8Ô<ðð 	Ñ/°ZÔ@ðð 	Ñ.°IÔ>ð	ð
 	Ñ.°IÔ>ðð 	Ñ-°8Ô<ðð 	Ñ/°ZÔ@ðð 	Ñ/°ZÔ@ðð 	Ñ1°|ÔDðð 	Ñ-°8Ô<ðð 	Ñ0°kÔBðð 	Ñ-°8Ô<ðð 	‘_¨+Ô6ðð  	‘o¨=Ô9ð!ð$ 	‘o¨=Ô9ð%ð( 	Ñ.°HÔ=ð)ð* 	Ñ,°(Ô;ð+ð. 	‘?¨Ô7ð/€Mð4 $Ÿ_™_Ð.Ðà(€Fð Ø5Ø'Ø#Ø$ØØ1Ø!ØØØ#Øñ€Nð ñó ðð ñó ðò	(òòò0ò;ò<ò=ò=ò)òAò7ò'ò)ò'ór   r#   N)Ú__doc__Údjango.contrib.gis.dbr   Ú.django.contrib.gis.db.backends.base.operationsr   Ú1django.contrib.gis.db.backends.spatialite.adapterr   Ú$django.contrib.gis.db.backends.utilsr   Ú django.contrib.gis.geos.geometryr   r   Ú%django.contrib.gis.geos.prototypes.ior	   Údjango.contrib.gis.measurer
   Údjango.core.exceptionsr   Ú%django.db.backends.sqlite3.operationsr   Údjango.utils.functionalr   Údjango.utils.versionr   r   r#   rƒ   r   r   ú<module>rÕ      sK   ðñõ
 )Ý PÝ OÝ @ß KÝ 7Ý /Ý 7Ý DÝ 3Ý 2ô& /ô &ôNÐ0Ð2Dõ Nr   