
    jC<                        S r SSKJrJr  SSKJr  SSKJrJrJ	r	J
r
JrJrJr  SSKJrJr  SSKJr  SSKJr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 " S S\5      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# " S# S$\	5      r$ " S% S&\5      r% " S' S(\\5      r& " S) S*\\5      r'g+),z>
Classes to represent the definitions of aggregate functions.
    )
FieldErrorFullResultSet)NotSupportedError)CaseColPairsFuncOrderByListStarValueWhen)IntegerField	TextField)Coalesce)FixDurationInputMixinNumericOutputFieldMixin)	AggregateAnyValueAvgBitAndBitOrBitXorCountMaxMinStdDev	StringAggSumVariancec                   F   ^  \ rS rSrSrSrU 4S jr\S 5       rS r	Sr
U =r$ )AggregateFilter(      z FILTER (WHERE %(expressions)s)c                    > UR                   R                  (       d  [        S5      e [        TU ]  " X40 UD6$ ! [
         a     gf = f)NzDAggregate filter clauses are not supported on this database backend.)  )features supports_aggregate_filter_clauser   superas_sqlr   selfcompiler
connectionextra_context	__class__s       S/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/db/models/aggregates.pyr)   AggregateFilter.as_sql,   sM    ""CC#V 	7>(H-HH 		s   : 
AAc                      U R                   S   $ )Nr   )source_expressionsr+   s    r0   	conditionAggregateFilter.condition6   s    &&q))    c                 Z    U R                   R                  S U R                   5       5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)str).0args     r0   	<genexpr>*AggregateFilter.__str__.<locals>.<genexpr>;   s     #P8OCHH8Os   )
arg_joinerjoinr3   r4   s    r0   __str__AggregateFilter.__str__:   s#    ###P8O8O#PPPr7   r%   )__name__
__module____qualname____firstlineno__aritytemplater)   propertyr5   rB   __static_attributes____classcell__r/   s   @r0   r    r    (   s2    E0H * *Q Qr7   r    c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )AggregateOrderBy>   z ORDER BY %(expressions)sc                 r   > UR                   R                  (       d  [        S5      e[        TU ]  " X40 UD6$ )NzIThis database backend does not support specifying an order on aggregates.)r&   "supports_aggregate_order_by_clauser   r(   r)   r*   s       r0   r)   AggregateOrderBy.as_sqlA   s:    ""EE# 
 w~hDmDDr7   r%   )rD   rE   rF   rG   rI   r)   rK   rL   rM   s   @r0   rO   rO   >   s    *HE Er7   rO   c                      ^  \ rS rSrSrSrSrSrSrSr	Sr
SSSSS.U 4S jjrU 4S jrU 4S	 jrU 4S
 jr SU 4S jjr\S 5       rS rU 4S jrU 4S jrSrU =r$ )r   K   ?%(function)s(%(distinct)s%(expressions)s%(order_by)s)%(filter)sTNF)distinctfilterdefaultorder_byc                  > U(       a3  U R                   (       d"  [        SU R                  R                  -  5      eU(       a3  U R                  (       d"  [        SU R                  R                  -  5      eUb/  U R
                  b"  [        U R                  R                   S35      eXl        Uc  S O
[        U5      U l        X0l	        [        R                  U R                  R                   S3U5      U l        [        TU ]8  " U0 UD6  g )Nz%s does not allow distinct.z%s does not allow order_by.z does not allow default.z	.order_by)allow_distinct	TypeErrorr/   rD   allow_order_byempty_result_set_valuerW   r    rX   rY   rO   
from_paramrZ   r(   __init__)r+   rW   rX   rY   rZ   expressionsextrar/   s          r0   ra   Aggregate.__init__T   s     D//9DNN<S<SSTTD//9DNN<S<SSTT4#>#>#Jt~~6677OPQQ $nd/&2I(33~~&&'y18
 	+//r7   c                 ^   > [         TU ]  5        Vs/ s H  oR                  PM     sn$ s  snf r:   )r(   get_source_expressions_output_field_or_none)r+   er/   s     r0   get_source_fieldsAggregate.get_source_fieldsl   s+     271O1QR1QA''1QRRRs   *c                 X   > [         TU ]  5       n/ UQU R                  PU R                  P$ r:   )r(   rf   rX   rZ   )r+   r3   r/   s     r0   rf    Aggregate.get_source_expressionsq   s/    "W;=@#@T[[@$--@@r7   c                 @   > UGt ol         U l        [        TU ]  U5      $ r:   )rX   rZ   r(   set_source_expressions)r+   exprsr/   s     r0   rn    Aggregate.set_source_expressionsu   s!    -2*T]w-e44r7   c           
      R  > [         TU ]  XX45      nU(       aU  UR                  5        H@  nUR                  U   R                  (       d  M#  [        SUR                   SU SU S35      e   OU R                  (       d  [         [        U]#  5       n[        U5       Hs  u  pU
R                  (       d  M  U R                  5       U	   n[        US5      (       a  UR                  O
[        U5      n[        SUR                  < SU< SU< S35      e   UR                  =nc  U$ [        US5      (       a1  UR                  XX45      nUR                  c  UR                  Ul        O[!        XR                  5      nS Ul        [#        XmUR                  S9nUR                  Ul        U$ )NzCannot compute z('z'): 'z' is an aggregatenameresolve_expression)output_field)r(   rs   get_refsannotations
is_summaryr   rr   r   rf   	enumeratecontains_aggregatehasattrreprrY   rg   rt   r   r   )r+   queryallow_joinsreuse	summarizefor_savecrefrb   indexexprbefore_resolvedrr   rY   coalescer/   s                  r0   rs   Aggregate.resolve_expressiony   s    G&u5Lzz|$$S)444$)!&&C5cUBST  $
   	1DFK(5***&*&A&A&CE&JO #?F;; (,,!/2 
 %664/   6 yy G)H701100UVG,,4'('>'>$G%<%<=G	AQ5L5LMllr7   c                    U R                  5        Vs/ s H	  oc  M  UPM     nn[        U5      S:X  aB  [        US   S5      (       a.  US   R                  < SU R                  R	                  5       < 3$ [        S5      es  snf )Nr"   r   rr   __z$Complex expressions require an alias)rf   lenrz   rr   lowerr]   )r+   r   rb   s      r0   default_aliasAggregate.default_alias   sz     "88:
:TD: 	 
 {q W[^V%D%D*1~22DIIOO4EFF>??
s
   BBc                     / $ r:   r%   r4   s    r0   get_group_by_colsAggregate.get_group_by_cols   s    	r7   c                   > U R                   (       aN  UR                  R                  (       d3  [        [        TU ]  5       5      S:  a  [        U R                   S35      eU R                   (       a  SOSnSn/ nSn/ nU R                  =n	b  UR                  U	5      u  pVU R                  b   UR                  U R                  5      u  pxUR#                  UUUS9  [        TU ]@  " X40 UD6u  pU/ UQUQUQ74$ ! [         a    U R                  5       n
S U
l
        U
R                  5       n[        U R                  R                  US   S9nU
R                  [        U5      /USS  -   5        U
R                   " X40 UD6s $ f = f)Nr"   zN does not support distinct with multiple expressions on this database backend.z	DISTINCT r$   r   )then)rW   rX   rZ   )rW   r&   -supports_aggregate_distinct_multiple_argumentr   r(   rf   r   rr   rZ   compilerX   copyr   r5   rn   r   r)   update)r+   r,   r-   r.   distinct_sqlorder_by_sqlorder_by_params
filter_sqlfilter_paramsrZ   r   r3   r5   sqlparamsr/   s                  r0   r)   Aggregate.as_sql   s   MM''UUEG2459#99+ ) * 
 '+mm{
%H2,4,<,<X,F)L;;"
J,4,<,<T[[,I)
 	!! 	 	

 gnXK]K?f?????! % J yy{"%)%@%@%B" !6!6=OPQ=RS	++T)_,=@RSTSU@V,VW{{8I=IIJs   .C: :BFFc                    > [         TU ]  5       nU R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U$ )NrW   rX   rZ   )r(   _get_repr_optionsrW   rX   rZ   )r+   optionsr/   s     r0   r   Aggregate._get_repr_options   sT    '+-=="&--GJ;; $GH=="&--GJr7   )rY   rW   rX   rZ   )NTNFF)rD   rE   rF   rG   rI   ry   rr   window_compatibler\   r^   r_   ra   ri   rf   rn   rs   rJ   r   r   r)   r   rK   rL   rM   s   @r0   r   r   K   s    PHDNN!
 0 00S
A5
 SX'R @ @'@R r7   r   c                   8   ^  \ rS rSrSrS rSrSrU 4S jrSr	U =r
$ )r      	ANY_VALUEr"   Fc                 r   > UR                   R                  (       d  [        S5      e[        TU ]  " X40 UD6$ )Nz4ANY_VALUE is not supported on this database backend.)r&   supports_any_valuer   r(   r)   r*   s       r0   r)   AnyValue.as_sql   s8    ""55#F  w~hDmDDr7   r%   )rD   rE   rF   rG   functionrr   rH   r   r)   rK   rL   rM   s   @r0   r   r      s$    HDEE Er7   r   c                   $    \ rS rSrSrS rSrSrSrg)r      AVGTr"   r%   N	rD   rE   rF   rG   r   rr   r\   rH   rK   r%   r7   r0   r   r          HDNEr7   r   c                   >   ^  \ rS rSrSrU 4S jrU 4S jrS rSrU =r	$ )BitAggregate   r"   c                 N   > [         TU ]  " U40 UD6  U R                  S LU l        g r:   )r(   ra   rY   _has_default)r+   
expressionrc   r/   s      r0   ra   BitAggregate.__init__   s(    -u- !LL4r7   c                 H  > UR                   R                  (       d%  [        U R                   SUR                   S35      eU R
                  (       a@  UR                   R                  (       d%  [        U R                   SUR                   S35      e[        TU ]   " X40 UD6$ )Nz is not supported on .z+ does not support the default parameter on )	r&   supports_bit_aggregationsr   rr   vendorr   $supports_default_in_bit_aggregationsr(   r)   r*   s       r0   r)   BitAggregate.as_sql   s    ""<<#99+2:3D3D2EQG  ''LL#99+H$$%Q(  w~hDmDDr7   c                 H    U R                   " UU4SU R                   S30UD6$ )Nr   _AGG)r)   r   )r+   r,   r-   r.   s       r0   	as_oracleBitAggregate.as_oracle  s8    {{
 d+
 	
 	
r7   )r   )
rD   rE   rF   rG   rH   ra   r)   r   rK   rL   rM   s   @r0   r   r      s    E5E
 
r7   r   c                       \ rS rSrSrS rSrg)r   i  BIT_ANDr%   NrD   rE   rF   rG   r   rr   rK   r%   r7   r0   r   r         HDr7   r   c                       \ rS rSrSrS rSrg)r   i  BIT_ORr%   Nr   r%   r7   r0   r   r     s    HDr7   r   c                       \ rS rSrSrS rSrg)r   i"  BIT_XORr%   Nr   r%   r7   r0   r   r   "  r   r7   r   c                   ^   ^  \ rS rSrSrS r\" 5       rSrSr	Sr
SrS	U 4S jjrU 4S jrSrU =r$ )
r   i'  COUNTTr   r"   c                    > US:X  a
  [        5       n[        U[         5      (       a  Ub  [        S5      e[        TU ]  " U4SU0UD6  g )N*z8Star cannot be used with filter. Please specify a field.rX   )r
   
isinstance
ValueErrorr(   ra   )r+   r   rX   rc   r/   s       r0   ra   Count.__init__0  sG    Jj$''F,>WXX<F<e<r7   c                   > [         TU ]  " U0 UD6nUR                  5       n[        US   =n[        5      (       aC  U R
                  (       a  [        S5      eUR                  5       S   US'   UR                  U5        U$ )Nr   z6COUNT(DISTINCT) doesn't support composite primary keys)	r(   rs   rf   r   r   rW   r   get_colsrn   )r+   argskwargsresultr3   r   r/   s         r0   rs   Count.resolve_expression7  s    +T<V<#::< 033dX>>}} L  %)MMOA$6q!))*<=r7   r%   r:   )rD   rE   rF   rG   r   rr   r   rt   r\   r_   rH   allows_composite_expressionsra   rs   rK   rL   rM   s   @r0   r   r   '  s9    HD>LNE#' = r7   r   c                        \ rS rSrSrS rSrSrg)r   iH  MAXr"   r%   NrD   rE   rF   rG   r   rr   rH   rK   r%   r7   r0   r   r   H      HDEr7   r   c                        \ rS rSrSrS rSrSrg)r   iN  MINr"   r%   Nr   r%   r7   r0   r   r   N  r   r7   r   c                   @   ^  \ rS rSrS rSrSU 4S jjrU 4S jrSrU =r	$ )r   iT  r"   c                 H   > U(       a  SOSU l         [        TU ]  " U40 UD6  g )NSTDDEV_SAMP
STDDEV_POPr   r(   ra   r+   r   samplerc   r/   s       r0   ra   StdDev.__init__X  s     )/\-u-r7   c                 F   > 0 [         TU ]  5       ESU R                  S:H  0E$ )Nr   r   r(   r   r   r+   r/   s    r0   r   StdDev._get_repr_options\  s&    X%'+-Xx-9WXXr7   r   F
rD   rE   rF   rG   rr   rH   ra   r   rK   rL   rM   s   @r0   r   r   T  s    DE.Y Yr7   r   c                   6   ^  \ rS rSrSrSrU 4S jrS rSrU =r	$ )StringAggDelimiteri`  r"   z%(expressions)sc                 0   > Xl         [        TU ]	  U5        g r:   )valuer(   ra   )r+   r   r/   s     r0   ra   StringAggDelimiter.__init__d  s    
r7   c                 2    SnU R                   " UU4SU0UD6$ )Nz SEPARATOR %(expressions)srI   )r)   r+   r,   r-   r.   rI   s        r0   as_mysqlStringAggDelimiter.as_mysqlh  s2    /{{
 
 	
 	
r7   )r   )
rD   rE   rF   rG   rH   rI   ra   r   rK   rL   rM   s   @r0   r   r   `  s    E H 
 
r7   r   c                   \   ^  \ rS rSrSrSrS rSrSr\	" 5       r
U 4S jrS rS rS rS	rU =r$ )
r   is  rV   
STRING_AGGTc                 \   > [        U5      U l        [        TU ]  " XR                  40 UD6  g r:   )r   	delimiterr(   ra   )r+   r   r   rc   r/   s       r0   ra   StringAgg.__init__{  s%    +I6^^=u=r7   c                 \    U R                   (       a  SnOSnU R                  " UU4SUS.UD6$ )NzO%(function)s(%(distinct)s%(expressions)s) WITHIN GROUP (%(order_by)s)%(filter)sz3%(function)s(%(distinct)s%(expressions)s)%(filter)sLISTAGG)r   rI   )rZ   r)   r   s        r0   r   StringAgg.as_oracle  sI    == 
 MH{{
 	

 
 	
r7   c                    SUS'   SnXCS'   U R                  5       n/ nUR                  (       a5  UR                  UR                  5      u  pvUR                  S S Ul        XsS'   UR                  " X40 UD6u  pU/ U	QUQ74$ )NGROUP_CONCATr   zB%(function)s(%(distinct)s%(expressions)s%(order_by)s%(delimiter)s)rI   r   )r   r   r   r3   r)   )
r+   r,   r-   r.   rI   r   delimiter_paramsdelimiter_sqlr   r   s
             r0   r   StringAgg.as_mysql  s    $2j!W$,j!IIK
 ;;.6.>.>q{{.K+M#$#7#7#<A )6+&hhxE}E0f0/000r7   c                    U R                   (       a  [        U R                  R                  [        5      (       at  U R                  R                  R                  S:X  aP  U R                  5       nUR                  5       nUR                  US S USS  -   5        UR                  " UU4SS0UD6$ UR                  5       S:  a  U R                  " UU4SS0UD6$ U R                  " X40 UD6$ )N,r"      r   r   )   ,   )
rW   r   r   r   r   r   rf   rn   r)   get_database_version)r+   r,   r-   r.   cloner3   s         r0   	as_sqliteStringAgg.as_sqlite  s    MM4>>//77$$**c1IIKE!&!=!=!?(("2A&);AB)?? << (  	  **,w6;; (  	  {{8A=AAr7   )r   )rD   rE   rF   rG   rI   r   rr   r\   r^   r   rt   ra   r   r   r
  rK   rL   rM   s   @r0   r   r   s  s>    PHHDNN;L>
"1,B Br7   r   c                   $    \ rS rSrSrS rSrSrSrg)r   i  SUMTr"   r%   Nr   r%   r7   r0   r   r     r   r7   r   c                   @   ^  \ rS rSrS rSrSU 4S jjrU 4S jrSrU =r	$ )r   i  r"   c                 H   > U(       a  SOSU l         [        TU ]  " U40 UD6  g )NVAR_SAMPVAR_POPr   r   s       r0   ra   Variance.__init__  s     &,
)-u-r7   c                 F   > 0 [         TU ]  5       ESU R                  S:H  0E$ )Nr   r  r   r   s    r0   r   Variance._get_repr_options  s&    U%'+-Ux*9TUUr7   r   r   r   rM   s   @r0   r   r     s    DE.V Vr7   r   N)(__doc__django.core.exceptionsr   r   	django.dbr   django.db.models.expressionsr   r   r   r	   r
   r   r   django.db.models.fieldsr   r   django.db.models.functionsr   !django.db.models.functions.mixinsr   r   __all__r    rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r7   r0   <module>r     s$   = '   < /
"Qd Q,
E{ 
ET TnEy E
!8) 
9 
B\ 
L 
\ 
I B) ) 	Y$i 	Y
 
&NB	 NBb
 	V&	 	Vr7   