
    _?i                         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y)    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateFuncValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   L     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                 f    | j                  | j                  d   j                  j                        S )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    y/home/cursorai/projects/django-cronjob-utils/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/aggregates.pyr   zGeoAggregate.output_field   s*    &&t'>'>q'A'N'N'S'STT    c                     |j                   j                  |        t        |   ||fd|xs% |j                   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   sZ     	//5w~
 Q!F!Ftyy!Q
 	
 	
r   c                 z   | j                   s| j                  j                  d      xs t        | dd      }| j	                         }| j                         ^ }}}t        g |t        |      d| j                  d}	|	||g}
|j                  |
        |j                  ||fi |S  | j                  ||fi |S )N	toleranceg?SDOAGGRTYPE)r   r   )	is_extentextragetgetattrcopyget_source_expressionsr   r	   r   set_source_expressionsr   )r   r"   r#   r$   r'   clonesource_exprsfilter_exprorder_by_exprspatial_type_exprr   s              r   	as_oraclezGeoAggregate.as_oracle    s    ~~

{3Wwt[RV7WIIIKE8<8S8S8U5\; $ !!i ! '!..	! #4[-!P(();<5<<*FFFt{{8ZA=AAr   c                     t         |   |||||      }|j                         D ]  }t        |d      r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_expression0   sP     G&uk5)X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	
B" SX	 	r   r   c                       e Zd Zd ZeZy)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                 :    t        |   |fdt               i| y Nr   r   __init__r   r   
expressionr*   r%   s      r   rP   zExtent.__init__E       I+-I5Ir   c                 8    |j                   j                  |      S rC   )r   convert_extentr   valuerR   r#   s       r   convert_valuezExtent.convert_valueH   s    ~~,,U33r   rD   rE   rF   r!   r)   rP   rX   rG   rH   s   @r   r   r   A   s    DIJ4r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   3Dc                 :    t        |   |fdt               i| y rN   rO   rQ   s      r   rP   zExtent3D.__init__P   rS   r   c                 8    |j                   j                  |      S rC   )r   convert_extent3drV   s       r   rX   zExtent3D.convert_valueS   s    ~~..u55r   rY   rH   s   @r   r   r   L   s    DIJ6r   r   c                       e Zd Zd ZeZy)r   N)rD   rE   rF   r!   r   r   rJ   r   r   r   r   W   s    D(r   r   c                       e Zd Zd ZeZy)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      sh     4 3 3
@,9 ,^1l 1
4\ 46| 6)| )
'L 'r   