
    `f                         d dl mZmZmZmZ d dlmZmZmZ d dl	m
Z
 g dZ G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          ZdS )    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateFuncValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   R     e Zd ZdZdZed             Zd fd	Zd Z	 d	 fd	Z	 xZ
S )
GeoAggregateNFc                 V    |                      | j        d         j        j                  S )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    Y/var/www/html/env/lib/python3.11/site-packages/django/contrib/gis/db/models/aggregates.pyr   zGeoAggregate.output_field   s$    &&t'>q'A'N'STTT    c                     |j                             |             t                      j        ||fd|p|j                             | j                  i|S )Nfunction)opscheck_expression_supportsuperas_sqlspatial_aggregate_namename)r   compiler
connectionr   extra_context	__class__s        r   r   zGeoAggregate.as_sql   sk     	//555uww~
 
 Q!F!Fty!Q!Q
 	
 
 	
r   c                    | j         s| j                            d          pt          | dd          }|                                 }|                                 }| j        r|                                 t          g |t          |          R d| j
        d}|g}| j        r|                    | j                   |                    |            |j        ||fi |S  | j        ||fi |S )N	toleranceg?SDOAGGRTYPE)r   r   )	is_extentextragetgetattrcopyget_source_expressionsfilterpopr   r	   r   appendset_source_expressionsr   )r   r"   r#   r$   r'   cloner   spatial_type_exprs           r   	as_oraclezGeoAggregate.as_oracle    s'   ~ 	G
{33Wwt[RV7W7WIIIKKE!%!<!<!>!>{ )"&&((( $ !#!i  ! ! '!.	! ! ! #4!4{ 7"))$+666(();<<<5<*FFFFFt{8ZAA=AAAr   Tc                     t                                          |||||          }|                                D ]!}t          |d          st	          d          "|S )N	geom_typez6Geospatial aggregates only allowed on geometry fields.)r   resolve_expressionget_source_fieldshasattr
ValueError)	r   queryallow_joinsreuse	summarizefor_savecfieldr%   s	           r   r8   zGeoAggregate.resolve_expression4   sr     GG&&uk5)XVV((** 	 	E5+..  L   r   N)NTNFF)__name__
__module____qualname__r   r)   r
   r   r   r5   r8   __classcell__r%   s   @r   r   r      s        HIU U _U	
 	
 	
 	
 	
 	
B B B* SX	 	 	 	 	 	 	 	 	 	r   r   c                       e Zd Zd ZeZdS )r   N)rD   rE   rF   r!   r   r    r   r   r   r   @   s        D0r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   2Dc                 X     t                      j        |fdt                      i| d S Nr   r   __init__r   r   
expressionr*   r%   s      r   rP   zExtent.__init__I   1    II+--I5IIIIIr   c                 6    |j                             |          S rC   )r   convert_extentr   valuerR   r#   s       r   convert_valuezExtent.convert_valueL   s    ~,,U333r   rD   rE   rF   r!   r)   rP   rX   rG   rH   s   @r   r   r   E   sV        DIJ J J J J4 4 4 4 4 4 4r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   3Dc                 X     t                      j        |fdt                      i| d S rN   rO   rQ   s      r   rP   zExtent3D.__init__T   rS   r   c                 6    |j                             |          S rC   )r   convert_extent3drV   s       r   rX   zExtent3D.convert_valueW   s    ~..u555r   rY   rH   s   @r   r   r   P   sV        DIJ J J J J6 6 6 6 6 6 6r   r   c                       e Zd Zd ZeZdS )r   N)rD   rE   rF   r!   r   r   rJ   r   r   r   r   [   s        D(r   r   c                       e Zd Zd ZeZdS )r   N)rD   rE   rF   r!   r   r   rJ   r   r   r   r   `   s        D&r   r   N)#django.contrib.gis.db.models.fieldsr   r   r   r   django.db.modelsr   r   r	   django.utils.functionalr
   __all__r   r   r   r   r   r   rJ   r   r   <module>re      s              4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
@
@
@0 0 0 0 09 0 0 0f1 1 1 1 1l 1 1 1
4 4 4 4 4\ 4 4 46 6 6 6 6| 6 6 6) ) ) ) )| ) ) )
' ' ' ' 'L ' ' ' ' 'r   