
    JȂi                         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    XD:\sksbv-state-backend\venv\Lib\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       Gt pgn[        / UQ[        U5      P7SU R                  S.6n	XU/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_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_oracleGeoAggregate.as_oracle    s    ~~

{3Wwt[RV7WIIIKE8<8S8S8U5\ $ !!i ! '!..	! #4-!P(();<<<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_expression0   sO     G&u5XV((*E5+.. L  +
 r    N)NTNFF)__name__
__module____qualname____firstlineno__r   r,   r
   r   r!   r8   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   <   rH   N)rJ   rK   rL   rM   r#   r   r   rN   rH   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   A   2Dc                 <   > [         TU ]  " U4S[        5       0UD6  g Nr   r    __init__r   r   
expressionr-   r'   s      r   rY   Extent.__init__E       I+-I5Ir   c                 8    UR                   R                  U5      $ rI   )r   convert_extentr   valuer[   r%   s       r   convert_valueExtent.convert_valueH   s    ~~,,U33r   rH   
rJ   rK   rL   rM   r#   r,   rY   rb   rN   rO   rP   s   @r   r   r   A   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   L   3Dc                 <   > [         TU ]  " U4S[        5       0UD6  g rW   rX   rZ   s      r   rY   Extent3D.__init__P   r]   r   c                 8    UR                   R                  U5      $ rI   )r   convert_extent3dr`   s       r   rb   Extent3D.convert_valueS   s    ~~..u55r   rH   rd   rP   s   @r   r   r   L   s    DIJ6 6r   r   c                       \ rS rSrS r\rSrg)r   W   rH   N)rJ   rK   rL   rM   r#   r   r   rN   rH   r   r   r   r   W   s    D(r   r   c                       \ rS rSrS r\rSrg)r   \   rH   N)rJ   rK   rL   rM   r#   r   r   rN   rH   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   rH   r   r   <module>ru      sh     4 3 3
@,9 ,^1l 1
4\ 46| 6)| )
'L 'r   