
    hK                         S SK JrJrJrJr  S SKJrJrJr  S SK	J
r
  / SQr " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rg)    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateFuncValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   \   ^  \ rS rSrSrSr\S 5       rS	U 4S jjrS r	 S
U 4S jjr
SrU =r$ )GeoAggregate   NFc                 f    U R                  U R                  S   R                  R                  5      $ )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    Y/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/db/models/aggregates.pyr   GeoAggregate.output_field   s*    &&t'>'>q'A'N'N'S'STT    c                    > UR                   R                  U 5        [        TU ]  " UU4SU=(       d%    UR                   R	                  U R
                  5      0UD6$ )Nfunction)opscheck_expression_supportsuperas_sqlspatial_aggregate_namename)r   compiler
connectionr   extra_context	__class__s        r   r!   GeoAggregate.as_sql   sZ     	//5w~
 Q!F!Ftyy!Q
 	
 	
r   c                    U R                   (       d  U R                  R                  S5      =(       d    [        U SS5      nU R	                  5       nU R                  5       nUR                  5         [        / UQ[        U5      P7SU R                  S.6nXpR                  /nUR                  U5        UR                  " X40 UD6$ U R                  " X40 UD6$ )N	toleranceg?SDOAGGRTYPE)r   r   )	is_extentextragetgetattrcopyget_source_expressionspopr   r	   r   filterset_source_expressionsr!   )r   r$   r%   r&   r*   cloner   spatial_type_exprs           r   	as_oracleGeoAggregate.as_oracle    s    ~~

{3Wwt[RV7WIIIKE!%!<!<!>""$ $ !#!i ! '!..	! #4[[!A(();<<<FFF{{8A=AAr   c                    > [         TU ]  XX4U5      nUR                  5        H  n[        US5      (       a  M  [	        S5      e   U$ )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   r;   GeoAggregate.resolve_expression1   sO     G&u5XV((*E5+.. L  +
 r    N)NTNFF)__name__
__module____qualname____firstlineno__r   r,   r
   r   r!   r7   r;   __static_attributes____classcell__r'   s   @r   r   r      s=    HIU U	
B$ SX	 	r   r   c                       \ rS rSrS r\rSrg)r   =   rG   N)rI   rJ   rK   rL   r#   r   r   rM   rG   r   r   r   r   =   s    D0r   r   c                   6   ^  \ rS rSrS rSrU 4S jrS rSrU =r	$ )r   B   2Dc                 <   > [         TU ]  " U4S[        5       0UD6  g Nr   r    __init__r   r   
expressionr-   r'   s      r   rX   Extent.__init__F       I+-I5Ir   c                 8    UR                   R                  U5      $ rH   )r   convert_extentr   valuerZ   r%   s       r   convert_valueExtent.convert_valueI   s    ~~,,U33r   rG   
rI   rJ   rK   rL   r#   r,   rX   ra   rM   rN   rO   s   @r   r   r   B   s    DIJ4 4r   r   c                   6   ^  \ rS rSrS rSrU 4S jrS rSrU =r	$ )r   M   3Dc                 <   > [         TU ]  " U4S[        5       0UD6  g rV   rW   rY   s      r   rX   Extent3D.__init__Q   r\   r   c                 8    UR                   R                  U5      $ rH   )r   convert_extent3dr_   s       r   ra   Extent3D.convert_valueT   s    ~~..u55r   rG   rc   rO   s   @r   r   r   M   s    DIJ6 6r   r   c                       \ rS rSrS r\rSrg)r   X   rG   N)rI   rJ   rK   rL   r#   r   r   rM   rG   r   r   r   r   X   s    D(r   r   c                       \ rS rSrS r\rSrg)r   ]   rG   N)rI   rJ   rK   rL   r#   r   r   rM   rG   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   rG   r   r   <module>rt      sh     4 3 3
@-9 -`1l 1
4\ 46| 6)| )
'L 'r   