Ë
    ¹ûàgï  ã                   ó  — d Z ddlmZmZ ddlmZmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ g d¢Z G d„ d	e«      Z G d
„ deee«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ dee«      Z G d„ dee«      Z G d„ dee«      Zy)z>
Classes to represent the definitions of aggregate functions.
é    )Ú
FieldErrorÚFullResultSet)ÚCaseÚFuncÚStarÚValueÚWhen)ÚIntegerField)ÚCoalesce)ÚFixDurationInputMixinÚNumericOutputFieldMixin)Ú	AggregateÚAvgÚCountÚMaxÚMinÚStdDevÚSumÚVariancec                   óš   ‡ — e Zd ZdZdZdZdZdZdZdZ	ddddœˆ fd„
Z
ˆ fd„Zˆ fd	„Zˆ fd
„Z	 dˆ fd„	Zed„ «       Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )r   z)%(function)s(%(distinct)s%(expressions)s)TNz%s FILTER (WHERE %%(filter)s)F)ÚdistinctÚfilterÚdefaultc                ó  •— |r.| j                   s"t        d| j                  j                  z  «      ‚|�.| j                  �"t        | j                  j                  › d�«      ‚|| _        || _        || _        t        ‰| �$  |i |¤Ž y )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         €úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/models/aggregates.pyr!   zAggregate.__init__#   s�   ø€ ñ ˜D×/Ò/ÜÐ9¸D¿N¹N×<SÑ<SÑSÓTÐTØÐ 4×#>Ñ#>Ð#JÜ˜tŸ~™~×6Ñ6Ð7Ð7OÐPÓQÐQØ ˆŒØˆŒØˆŒÜ‰Ñ˜+Ð/¨Ó/ó    c                 óZ   •— t         ‰| �  «       D �cg c]  }|j                  ‘Œ c}S c c}w ©N)r    Úget_source_expressionsÚ_output_field_or_none)r"   Úer   s     €r%   Úget_source_fieldszAggregate.get_source_fields/   s%   ø€ ä16±Ñ1OÓ1QÖR¨A�×'Ó'ÒRÐRùÒRs   ’(c                 ó@   •— t         ‰| �  «       }|| j                  gz   S r(   )r    r)   r   )r"   Úsource_expressionsr   s     €r%   r)   z Aggregate.get_source_expressions3   s"   ø€ Ü"™WÑ;Ó=ÐØ! T§[¡[ MÑ1Ð1r&   c                 ó6   •— |�^ }| _         t        ‰| �	  |«      S r(   )r   r    Úset_source_expressions)r"   Úexprsr   s     €r%   r0   z Aggregate.set_source_expressions7   s   ø€ Ø#Ñˆ�”Ü‰wÑ-¨eÓ4Ð4r&   c           
      óz  •— t         ‰| �  ||||«      }|j                  r|j                  j                  ||||«      nd |_        |rN|j                  «       D ]:  }|j                  |   j
                  sŒt        d|j                  › d|› d|› d�«      ‚ n’| j
                  s†t         t        |�'  «       }t        |«      D ]f  \  }	}
|
j                  sŒ| j                  «       |	   }t        |d«      r|j                  n
t        |«      }t        d|j                  ›d|›d|›d�«      ‚ |j                  x}€|S t        |d«      r2|j                  ||||«      }|j                  €(|j                  |_        nt#        ||j                  «      }d |_        t%        |||j                  ¬«      }|j
                  |_        |S )NzCannot compute z('z'): 'z' is an aggregateÚnameÚresolve_expression)Úoutput_field)r    r4   r   Úget_refsÚannotationsÚ
is_summaryr   r3   r   r)   Ú	enumerateÚcontains_aggregateÚhasattrÚreprr   r*   r5   r   r   )r"   ÚqueryÚallow_joinsÚreuseÚ	summarizeÚfor_saveÚcÚrefr#   ÚindexÚexprÚbefore_resolvedr3   r   Úcoalescer   s                  €r%   r4   zAggregate.resolve_expression;   s¿  ø€ ô ‰GÑ& u¨k¸5À)ÓLˆð �xŠxð �H‰H×'Ñ'¨¨{¸EÀ9ÔMàð 	
Œñ
 à—z‘z“|ò �Ø×$Ñ$ SÑ)×4Ó4Ü$Ø)¨!¯&©&¨°°C°5¸¸c¸UÐBSÐTóð ñð
 —’ô  ¤	¨1ÑDÓFˆKÜ(¨Ó5ò ‘��tØ×*Ó*Ø&*×&AÑ&AÓ&CÀEÑ&J�Oô # ?°FÔ;ð (×,Ò,ä! /Ó2ð õ
 %àŸ6›6¢4ªð/óð ðð —y‘yÐ ˆGÐ)ØˆHÜ�7Ð0Ô1Ø×0Ñ0°¸ÀUÈIÓVˆGØ×,Ñ,Ð4Ø'(×'>Ñ'>�Õ$ä˜G Q×%<Ñ%<Ó=ˆGØˆŒ	Ü˜A˜w°Q×5LÑ5LÔMˆØŸl™lˆÔØˆr&   c                 óô   — | j                  «       D �cg c]  }|€Œ|‘Œ	 }}t        |«      dk(  r;t        |d   d«      r,|d   j                  ›d| j                  j	                  «       ›�S t        d«      ‚c c}w )Né   r   r3   Ú__z$Complex expressions require an alias)r)   Úlenr;   r3   Úlowerr   )r"   rE   r#   s      r%   Údefault_aliaszAggregate.default_aliasi   sy   € ð "×8Ñ8Ó:ö
Ø¸dÑ>NŠDð
ˆð 
ô ˆ{Ó˜qÒ ¤W¨[¸©^¸VÔ%DØ*¨1™~×2Ó2°D·I±I·O±OÔ4EÐFÐFÜÐ>Ó?Ð?ùò
s
   “A5›A5c                 ó   — g S r(   © )r"   s    r%   Úget_group_by_colszAggregate.get_group_by_colsr   s   € Øˆ	r&   c                 ón  •— | j                   rdnd|d<   | j                  rö|j                  j                  ri	 | j                  j	                  ||«      \  }}| j
                  |j                  d| j                  «      z  }t        ‰| �  ||f||dœ|¤Ž\  }}|g |¢|¢­fS | j                  «       }	d |	_        |	j                  «       }
t        | j                  |
d   ¬«      }|	j                  t        |«      g|
dd  z   «       t        t        |	�  ||fi |¤ŽS t        ‰| �  ||fi |¤ŽS # t        $ r Y Œw xY w)	Nz	DISTINCT Ú r   Útemplate)rS   r   r   )ÚthenrI   )r   r   ÚfeaturesÚ supports_aggregate_filter_clauseÚas_sqlÚfilter_templateÚgetrS   r    r   Úcopyr)   r	   r0   r   r   )r"   ÚcompilerÚ
connectionÚextra_contextÚ
filter_sqlÚfilter_paramsrS   ÚsqlÚparamsrZ   r.   Ú	conditionr   s               €r%   rW   zAggregate.as_sqlu   sd  ø€ Ø37·=²=¡KÀbˆ�jÑ!Ø�;Š;Ø×"Ñ"×CÒCð:Ø04·±×0BÑ0BÀ8ÈZÓ0XÑ-�J ð  $×3Ñ3°m×6GÑ6GØ" D§M¡Mó7ñ  �Hô #(¡'¡.Ø Ø"ð#ð "*Ø)ñ	#ð
 (ñ#‘K�C˜ð Ð 9 &Ð 9¨=Ñ 9Ð9Ð9à—y‘y“{�Ø"�”Ø%)×%@Ñ%@Ó%BÐ"Ü  §¡Ð3EÀaÑ3HÔI�	Ø×+Ñ+¬T°)«_Ð,=Ð@RÐSTÐSUÐ@VÑ,VÔWÜœY¨Ñ4Ø˜jñØ,9ñð ô ‰w‰~˜h¨
ÑD°mÑDÐDøô/ %ò Ùðús   ¸D( Ä(	D4Ä3D4c                 ó�   •— t         ‰| �  «       }| j                  r| j                  |d<   | j                  r| j                  |d<   |S )Nr   r   )r    Ú_get_repr_optionsr   r   )r"   Úoptionsr   s     €r%   rd   zAggregate._get_repr_options”   s?   ø€ Ü‘'Ñ+Ó-ˆØ�=Š=Ø"&§-¡-ˆG�JÑØ�;Š;Ø $§¡ˆG�HÑØˆr&   )NTNFF)r   Ú
__module__Ú__qualname__rS   r:   r3   rX   Úwindow_compatibler   r   r!   r,   r)   r0   r4   ÚpropertyrM   rP   rW   rd   Ú__classcell__©r   s   @r%   r   r      s   ø„ Ø:€HØÐØ€DØ5€OØÐØ€NØ!Ðð &+°4Àö
0ôSô2ô5ð
 SXõ,ð\ ñ@ó ð@òôE÷>ð r&   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚAVGTN©r   rf   rg   Úfunctionr3   r   rO   r&   r%   r   r   �   ó   „ Ø€HØ€DØ�Nr&   r   c                   ó>   ‡ — e Zd ZdZd Z e«       ZdZdZdˆ fd„	Z	ˆ xZ
S )r   ÚCOUNTTr   c                 ó‚   •— |dk(  r
t        «       }t        |t         «      r|�t        d«      ‚t        ‰| �  |fd|i|¤Ž y )NÚ*z8Star cannot be used with filter. Please specify a field.r   )r   Ú
isinstanceÚ
ValueErrorr    r!   )r"   Ú
expressionr   r$   r   s       €r%   r!   zCount.__init__ª   sD   ø€ Ø˜ÒÜ›ˆJÜ�j¤$Ô'¨FÐ,>ÜÐWÓXÐXÜ‰Ñ˜Ñ<¨FÐ<°eÓ<r&   r(   )r   rf   rg   ro   r3   r
   r5   r   r   r!   rj   rk   s   @r%   r   r   £   s)   ø„ Ø€HØ€DÙ“>€LØ€NØÐ÷=ñ =r&   r   c                   ó   — e Zd ZdZd Zy)r   ÚMAXN©r   rf   rg   ro   r3   rO   r&   r%   r   r   ²   ó   „ Ø€HØ�Dr&   r   c                   ó   — e Zd ZdZd Zy)r   ÚMINNrz   rO   r&   r%   r   r   ·   r{   r&   r   c                   ó.   ‡ — e Zd Zd Zdˆ fd„	Zˆ fd„Zˆ xZS )r   c                 ó<   •— |rdnd| _         t        ‰| �  |fi |¤Ž y )NÚSTDDEV_SAMPÚ
STDDEV_POP©ro   r    r!   ©r"   rw   Úsampler$   r   s       €r%   r!   zStdDev.__init__¿   s    ø€ Ù)/™°\ˆŒÜ‰Ñ˜Ñ- uÓ-r&   c                 óF   •— i t         ‰| �  «       ¥d| j                  dk(  i¥S )Nr„   r€   ©r    rd   ro   ©r"   r   s    €r%   rd   zStdDev._get_repr_optionsÃ   s&   ø€ ØX”%‘'Ñ+Ó-ÐX¨x¸¿¹È-Ñ9WÑXÐXr&   ©F©r   rf   rg   r3   r!   rd   rj   rk   s   @r%   r   r   ¼   s   ø„ Ø€Dõ.÷Yð Yr&   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚSUMTNrn   rO   r&   r%   r   r   Ç   rp   r&   r   c                   ó.   ‡ — e Zd Zd Zdˆ fd„	Zˆ fd„Zˆ xZS )r   c                 ó<   •— |rdnd| _         t        ‰| �  |fi |¤Ž y )NÚVAR_SAMPÚVAR_POPr‚   rƒ   s       €r%   r!   zVariance.__init__Ð   s    ø€ Ù&,™
°)ˆŒÜ‰Ñ˜Ñ- uÓ-r&   c                 óF   •— i t         ‰| �  «       ¥d| j                  dk(  i¥S )Nr„   rŽ   r†   r‡   s    €r%   rd   zVariance._get_repr_optionsÔ   s&   ø€ ØU”%‘'Ñ+Ó-ÐU¨x¸¿¹È*Ñ9TÑUÐUr&   rˆ   r‰   rk   s   @r%   r   r   Í   s   ø„ Ø€Dõ.÷Vð Vr&   r   N)Ú__doc__Údjango.core.exceptionsr   r   Údjango.db.models.expressionsr   r   r   r   r	   Údjango.db.models.fieldsr
   Ú%django.db.models.functions.comparisonr   Ú!django.db.models.functions.mixinsr   r   Ú__all__r   r   r   r   r   r   r   r   rO   r&   r%   ú<module>r˜      s�   ðñ÷ =ß FÕ FÝ 0Ý :÷ò
	€ô@�ô @ôFÐ
Ð!8¸)ô ô=ˆIô =ôˆ)ô ô
ˆ)ô ô
YÐ$ iô YôÐ
 ô ôVÐ&¨	õ Vr&   