
    hh                     "   S r SSKJrJr  SSKJrJrJrJrJ	r	J
r
  SSK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g)z>
Classes to represent the definitions of aggregate functions.
    )
FieldErrorFullResultSet)CaseColPairsFuncStarValueWhen)IntegerField)Coalesce)FixDurationInputMixinNumericOutputFieldMixin)	AggregateAvgCountMaxMinStdDevSumVariancec                      ^  \ rS rSrSrSrSrSrSrSr	Sr
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      z)%(function)s(%(distinct)s%(expressions)s)TNz%s FILTER (WHERE %%(filter)s)F)distinctfilterdefaultc                "  > 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        X l        X0l        [        TU ]$  " U0 UD6  g )Nz%s does not allow distinct.z does not allow default.)
allow_distinct	TypeError	__class____name__empty_result_set_valuer   r   r   super__init__)selfr   r   r   expressionsextrar   s         VD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\django/db/models/aggregates.pyr#   Aggregate.__init__#   s{     D//9DNN<S<SSTT4#>#>#Jt~~6677OPQQ +//    c                 ^   > [         TU ]  5        Vs/ s H  oR                  PM     sn$ s  snf N)r"   get_source_expressions_output_field_or_none)r$   er   s     r'   get_source_fieldsAggregate.get_source_fields/   s)    161O1QR1QA''1QRRRs   *c                 >   > [         TU ]  5       nXR                  /-   $ r+   )r"   r,   r   )r$   source_expressionsr   s     r'   r,    Aggregate.get_source_expressions3   s     "W;=![[M11r)   c                 4   > UGt ol         [        TU ]	  U5      $ r+   )r   r"   set_source_expressions)r$   exprsr   s     r'   r5    Aggregate.set_source_expressions7   s    #w-e44r)   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"   r:   get_refsannotations
is_summaryr   r9   r   r,   	enumeratecontains_aggregatehasattrreprr   r-   r;   r	   r   )r$   queryallow_joinsreuse	summarizefor_savecrefr%   indexexprbefore_resolvedr9   r   coalescer   s                  r'   r:   Aggregate.resolve_expression;   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r)   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 )N   r   r9   __z$Complex expressions require an alias)r,   lenrA   r9   lowerr   )r$   rK   r%   s      r'   default_aliasAggregate.default_aliasd   sz     "88:
:TD: 	 
 {q W[^V%D%D*1~22DIIOO4EFF>??
s
   BBc                     / $ r+    )r$   s    r'   get_group_by_colsAggregate.get_group_by_colsm   s    	r)   c                   > U R                   (       a  SOSUS'   U R                  (       a  UR                  R                  (       ag   U R                  R	                  X5      u  pEU R
                  UR                  SU R                  5      -  n[        TU ]  " UU4UUS.UD6u  pxU/ UQUQ74$ U R                  5       n	S U	l        U	R                  5       n
[        U R                  U
S   S9nU	R                  [        U5      /U
SS  -   5        [        [        U	]  " X40 UD6$ [        TU ]  " X40 UD6$ ! [         a     Nf = f)	Nz	DISTINCT  r   template)r\   r   r   )thenrP   )r   r   features supports_aggregate_filter_clauseas_sqlfilter_templategetr\   r"   r   copyr,   r
   r5   r   r   )r$   compiler
connectionextra_context
filter_sqlfilter_paramsr\   sqlparamsrc   r2   	conditionr   s               r'   r`   Aggregate.as_sqlp   sZ   37==Kbj!;;""CC:040B0B80X-J  $33m6G6G"DMM7  H #('. "# "*)	#
 (#KC  9& 9= 999yy{"%)%@%@%B" 3Ea3HI	++T)_,=@RSTSU@V,VWY4,9  w~hDmDD/ % s   D2 2
D?>D?c                    > [         TU ]  5       nU R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U$ )Nr   r   )r"   _get_repr_optionsr   r   )r$   optionsr   s     r'   rn   Aggregate._get_repr_options   s?    '+-=="&--GJ;; $GHr)   )r   r   r   )NTNFF)r    
__module____qualname____firstlineno__r\   r@   r9   ra   window_compatibler   r!   r#   r/   r,   r5   r:   propertyrT   rX   r`   rn   __static_attributes____classcell__r   s   @r'   r   r      s    :HD5ON! &+4
0 
0S25
 SX'R @ @E> r)   r   c                   $    \ rS rSrSrS rSrSrSrg)r      AVGTrP   rW   N	r    rq   rr   rs   functionr9   r   arityrv   rW   r)   r'   r   r          HDNEr)   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      COUNTTr   rP   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.r   )r   
isinstance
ValueErrorr"   r#   )r$   
expressionr   r&   r   s       r'   r#   Count.__init__   sG    Jj$''F,>WXX<F<e<r)   c                    > [         TU ]  " U0 UD6nUR                  S   n[        U[        5      (       aC  U R
                  (       a  [        S5      eUR                  5       n[        US   UR                  S9$ U$ )Nr   z6COUNT(DISTINCT) doesn't support composite primary keys)r   )
r"   r:   r2   r   r   r   r   get_colsr   r   )r$   argskwargsresultrK   colsr   s         r'   r:   Count.resolve_expression   st    +T<V<((+ dH%%}} L  ==?Da77r)   rW   r+   )r    rq   rr   rs   r}   r9   r   r;   r   r!   r~   allows_composite_expressionsr#   r:   rv   rw   rx   s   @r'   r   r      s9    HD>LNE#' = r)   r   c                        \ rS rSrSrS rSrSrg)r      MAXrP   rW   Nr    rq   rr   rs   r}   r9   r~   rv   rW   r)   r'   r   r          HDEr)   r   c                        \ rS rSrSrS rSrSrg)r      MINrP   rW   Nr   rW   r)   r'   r   r      r   r)   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      rP   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"   r#   r$   r   sampler&   r   s       r'   r#   StdDev.__init__   s     )/\-u-r)   c                 F   > 0 [         TU ]  5       ESU R                  S:H  0E$ )Nr   r   r"   rn   r}   r$   r   s    r'   rn   StdDev._get_repr_options   s&    X%'+-Xx-9WXXr)   r}   F
r    rq   rr   rs   r9   r~   r#   rn   rv   rw   rx   s   @r'   r   r      s    DE.Y Yr)   r   c                   $    \ rS rSrSrS rSrSrSrg)r      SUMTrP   rW   Nr|   rW   r)   r'   r   r      r   r)   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      rP   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       r'   r#   Variance.__init__   s     &,
)-u-r)   c                 F   > 0 [         TU ]  5       ESU R                  S:H  0E$ )Nr   r   r   r   s    r'   rn   Variance._get_repr_options   s&    U%'+-Ux*9TUUr)   r   r   r   rx   s   @r'   r   r      s    DE.V Vr)   r   N)__doc__django.core.exceptionsr   r   django.db.models.expressionsr   r   r   r   r	   r
   django.db.models.fieldsr   django.db.models.functionsr   !django.db.models.functions.mixinsr   r   __all__r   r   r   r   r   r   r   r   rW   r)   r'   <module>r      s    = P P 0 /
	{ {|
!8) I B) ) 	Y$i 	Y
 	V&	 	Vr)   