Ë
    ¦#ij�4  ã                   ó¤  — d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZ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
«      Z G d„ de	«      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	«      Z  G d„ d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)ÚNotSupportedError)ÚCaseÚColPairsÚFuncÚOrderByListÚStarÚValueÚWhen)ÚIntegerFieldÚ	TextField)ÚCoalesce)ÚFixDurationInputMixinÚNumericOutputFieldMixin)
Ú	AggregateÚAnyValueÚAvgÚCountÚMaxÚMinÚStdDevÚ	StringAggÚSumÚVariancec                   ó<   ‡ — e Zd ZdZdZˆ fd„Zed„ «       Zd„ Zˆ xZ	S )ÚAggregateFilteré   z FILTER (WHERE %(expressions)s)c                 óˆ   •— |j                   j                  st        d«      ‚	 t        ‰| �  ||fi |¤ŽS # t
        $ r Y yw xY w)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       €úU/var/www/html/office/venv/lib/python3.12/site-packages/django/db/models/aggregates.pyr%   zAggregateFilter.as_sql)   sO   ø€ Ø×"Ñ"×CÒCÜ#ØVóð ð	Ü‘7‘> (¨JÑH¸-ÑHÐHøÜò 	Ùð	ús   ¤5 µ	AÁ Ac                 ó    — | j                   d   S )Nr   )Úsource_expressions©r'   s    r,   Ú	conditionzAggregateFilter.condition3   s   € à×&Ñ& qÑ)Ð)ó    c                 óZ   — | j                   j                  d„ | j                  D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Ústr)Ú.0Úargs     r,   ú	<genexpr>z*AggregateFilter.__str__.<locals>.<genexpr>8   s   è ø€ Ò#P°¤C¨§HÑ#Pùs   ‚)Ú
arg_joinerÚjoinr.   r/   s    r,   Ú__str__zAggregateFilter.__str__7   s#   € Ø�‰×#Ñ#Ñ#P¸×8OÑ8OÔ#PÓPÐPr1   )
Ú__name__Ú
__module__Ú__qualname__ÚarityÚtemplater%   Úpropertyr0   r;   Ú__classcell__©r+   s   @r,   r   r   %   s,   ø„ Ø€EØ0€Hôð ñ*ó ð*öQr1   r   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚAggregateOrderByz ORDER BY %(expressions)sc                 óh   •— |j                   j                  st        d«      ‚t        ‰| �  ||fi |¤ŽS )NzIThis database backend does not support specifying an order on aggregates.)r"   Ú"supports_aggregate_order_by_clauser   r$   r%   r&   s       €r,   r%   zAggregateOrderBy.as_sql>   s<   ø€ Ø×"Ñ"×EÒEÜ#ðóð ô
 ‰w‰~˜h¨
ÑD°mÑDÐDr1   )r<   r=   r>   r@   r%   rB   rC   s   @r,   rE   rE   ;   s   ø„ Ø*€H÷Eð Er1   rE   c                   óœ   ‡ — e Zd ZdZdZdZdZdZdZdZ	d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   ú?%(function)s(%(distinct)s%(expressions)s%(order_by)s)%(filter)sTNF)ÚdistinctÚfilterÚdefaultÚorder_byc                óì  •— |r.| j                   s"t        d| j                  j                  z  «      ‚|r.| j                  s"t        d| j                  j                  z  «      ‚|�.| j
                  �"t        | j                  j                  › d�«      ‚|| _        |€d n
t        |«      | _        || _	        t        j                  | j                  j                  › d�|«      | _        t        ‰| �8  |i |¤Ž y )Nz%s does not allow distinct.z%s does not allow order_by.z does not allow default.z	.order_by)Úallow_distinctÚ	TypeErrorr+   r<   Úallow_order_byÚempty_result_set_valuerJ   r   rK   rL   rE   Ú
from_paramrM   r$   Ú__init__)r'   rJ   rK   rL   rM   ÚexpressionsÚextrar+   s          €r,   rT   zAggregate.__init__Q   sÝ   ø€ ñ ˜D×/Ò/ÜÐ9¸D¿N¹N×<SÑ<SÑSÓTÐTÙ˜D×/Ò/ÜÐ9¸D¿N¹N×<SÑ<SÑSÓTÐTØÐ 4×#>Ñ#>Ð#JÜ˜tŸ~™~×6Ñ6Ð7Ð7OÐPÓQÐQà ˆŒØ$˜n‘d´/À&Ó2IˆŒØˆŒÜ(×3Ñ3Ø�~‰~×&Ñ&Ð' yÐ1°8ó
ˆŒô 	‰Ñ˜+Ð/¨Ó/r1   c                 óZ   •— t         ‰| �  «       D �cg c]  }|j                  ‘Œ c}S c c}w r4   )r$   Úget_source_expressionsÚ_output_field_or_none)r'   Úer+   s     €r,   Úget_source_fieldszAggregate.get_source_fieldsi   s'   ø€ ô 27±Ñ1OÓ1QÖR¨A�×'Ó'ÒRÐRùÒRs   ’(c                 óX   •— t         ‰| �  «       }g |¢| j                  ‘| j                  ‘S r4   )r$   rX   rK   rM   )r'   r.   r+   s     €r,   rX   z Aggregate.get_source_expressionsn   s/   ø€ Ü"™WÑ;Ó=ÐØ@Ð#Ð@ T§[¡[Ð@°$·-±-Ð@Ð@r1   c                 óB   •— |�^ }| _         | _        t        ‰| �  |«      S r4   )rK   rM   r$   Úset_source_expressions)r'   Úexprsr+   s     €r,   r^   z Aggregate.set_source_expressionsr   s#   ø€ Ø-2Ñ*ˆ�”˜Tœ]Ü‰wÑ-¨eÓ4Ð4r1   c           
      ó  •— t         ‰| �  ||||«      }|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$   rb   Úget_refsÚannotationsÚ
is_summaryr   ra   r   rX   Ú	enumerateÚcontains_aggregateÚhasattrÚreprrL   rY   rc   r   r   )r'   ÚqueryÚallow_joinsÚreuseÚ	summarizeÚfor_saveÚcÚrefrU   ÚindexÚexprÚbefore_resolvedra   rL   Úcoalescer+   s                  €r,   rb   zAggregate.resolve_expressionv   s�  ø€ ô ‰GÑ& u¨k¸5À)ÓLˆÙà—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ˆÔØˆr1   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 )Nr   r   ra   Ú__z$Complex expressions require an alias)rX   Úlenri   ra   ÚlowerrP   )r'   rs   rU   s      r,   Údefault_aliaszAggregate.default_aliasŸ   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 r4   r!   r/   s    r,   Úget_group_by_colszAggregate.get_group_by_cols¨   s   € Øˆ	r1   c                 óú  •— | j                   rH|j                  j                  s2t        t        ‰| �  «       «      dkD  rt        | j                  › d�«      ‚| j                   rdnd}d}g }d}g }| j                  x}	�|j                  |	«      \  }}| j                  �	 |j                  | j                  «      \  }}|j#                  |||¬«       t	        ‰| �@  ||fi |¤Ž\  }}|g |¢|¢|¢­fS # t        $ rƒ | j                  «       }
d |
_
        |
j                  «       }t        | j                  j                  |d   ¬«      }|
j                  t        |«      g|dd  z   «        |
j                   ||fi |¤ŽcY S w xY w)Nr   zN does not support distinct with multiple expressions on this database backend.z	DISTINCT r    r   )Úthen)rJ   rK   rM   )rJ   r"   Ú-supports_aggregate_distinct_multiple_argumentrx   r$   rX   r   ra   rM   ÚcompilerK   Úcopyr   r0   r^   r   r%   Úupdate)r'   r(   r)   r*   Údistinct_sqlÚorder_by_sqlÚorder_by_paramsÚ
filter_sqlÚfilter_paramsrM   r�   r.   r0   ÚsqlÚparamsr+   s                  €r,   r%   zAggregate.as_sql«   s¡  ø€ à�MŠMØ×'Ñ'×UÒUÜ”E‘GÑ2Ó4Ó5¸Ò9ä#Ø—9‘9�+ð )ð *óð ð
 '+§m¢m‘{¸ˆØˆØˆØˆ
ØˆàŸ™Ð%ˆHÐ2Ø,4×,<Ñ,<¸XÓ,FÑ)ˆL˜/à�;‰;Ð"ð
JØ,4×,<Ñ,<¸T¿[¹[Ó,IÑ)�
˜Mð 	×ÑØ!ØØ!ð 	ô 	
ô
 ‘g‘n X¨zÑK¸]ÑK‰ˆˆVØÐ?�fÐ?˜Ð?°Ñ?Ð?Ð?øô! %ò Jð —y‘y“{�Ø"�”Ø%)×%@Ñ%@Ó%BÐ"Ü  §¡×!6Ñ!6Ð=OÐPQÑ=RÔS�	Ø×+Ñ+¬T°)«_Ð,=Ð@RÐSTÐSUÐ@VÑ,VÔWØ"�t—{‘{ 8¨ZÑI¸=ÑIÒIðJús   ÂC. Ã.B	E:Å9E:c                 óÆ   •— t         ‰| �  «       }| j                  r| j                  |d<   | j                  r| j                  |d<   | j                  r| j                  |d<   |S )NrJ   rK   rM   )r$   Ú_get_repr_optionsrJ   rK   rM   )r'   Úoptionsr+   s     €r,   r‹   zAggregate._get_repr_optionsÔ   sT   ø€ Ü‘'Ñ+Ó-ˆØ�=Š=Ø"&§-¡-ˆG�JÑØ�;Š;Ø $§¡ˆG�HÑØ�=Š=Ø"&§-¡-ˆG�JÑØˆr1   )NTNFF)r<   r=   r>   r@   rh   ra   Úwindow_compatiblerO   rQ   rR   rT   r[   rX   r^   rb   rA   rz   r|   r%   r‹   rB   rC   s   @r,   r   r   H   s†   ø„ ØP€HØÐØ€DØÐØ€NØ€NØ!Ðð
 ØØØö0ô0Sô
Aô5ð
 SXõ'ðR ñ@ó ð@òô'@÷Rð r1   r   c                   ó.   ‡ — e Zd ZdZd ZdZdZˆ fd„Zˆ xZS )r   Ú	ANY_VALUEr   Fc                 óh   •— |j                   j                  st        d«      ‚t        ‰| �  ||fi |¤ŽS )Nz4ANY_VALUE is not supported on this database backend.)r"   Úsupports_any_valuer   r$   r%   r&   s       €r,   r%   zAnyValue.as_sqlå   s:   ø€ Ø×"Ñ"×5Ò5Ü#ØFóð ô ‰w‰~˜h¨
ÑD°mÑDÐDr1   )	r<   r=   r>   Úfunctionra   r?   r�   r%   rB   rC   s   @r,   r   r   ß   s$   ø„ Ø€HØ€DØ€EØÐ÷Eð Er1   r   c                   ó   — e Zd ZdZd ZdZdZy)r   ÚAVGTr   N©r<   r=   r>   r’   ra   rO   r?   r!   r1   r,   r   r   í   ó   „ Ø€HØ€DØ€NØ�Er1   r   c                   óP   ‡ — e Zd ZdZd Z e«       ZdZdZdZ	dZ
dˆ fd„	Zˆ fd„Zˆ xZS )r   ÚCOUNTTr   r   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.rK   )r
   Ú
isinstanceÚ
ValueErrorr$   rT   )r'   Ú
expressionrK   rV   r+   s       €r,   rT   zCount.__init__ý   sD   ø€ Ø˜ÒÜ›ˆJÜ�j¤$Ô'¨FÐ,>ÜÐWÓXÐXÜ‰Ñ˜Ñ<¨FÐ<°eÓ<r1   c                 óì   •— t        ‰| �  |i |¤Ž}|j                  «       }t        |d   x}t        «      r>| j
                  rt        d«      ‚|j                  «       d   |d<   |j                  |«       |S )Nr   z6COUNT(DISTINCT) doesn't support composite primary keys)	r$   rb   rX   r›   r   rJ   rœ   Úget_colsr^   )r'   ÚargsÚkwargsÚresultr.   rs   r+   s         €r,   rb   zCount.resolve_expression  s€   ø€ Ü‘Ñ+¨TÐ<°VÑ<ˆØ#×:Ñ:Ó<Ðô Ð0°Ñ3Ð3�d´XÔ>Ø�}Š}Ü ØLóð ð %)§M¡M£O°AÑ$6Ð˜qÑ!Ø×)Ñ)Ð*<Ô=àˆr1   r4   )r<   r=   r>   r’   ra   r   rc   rO   rR   r?   Úallows_composite_expressionsrT   rb   rB   rC   s   @r,   r   r   ô   s9   ø„ Ø€HØ€DÙ“>€LØ€NØÐØ€EØ#'Ð õ=÷ð r1   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚMAXr   N©r<   r=   r>   r’   ra   r?   r!   r1   r,   r   r     ó   „ Ø€HØ€DØ�Er1   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚMINr   Nr¦   r!   r1   r,   r   r     r§   r1   r   c                   ó2   ‡ — e Zd Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )r   r   c                 ó<   •— |rdnd| _         t        ‰| �  |fi |¤Ž y )NÚSTDDEV_SAMPÚ
STDDEV_POP©r’   r$   rT   ©r'   r�   ÚsamplerV   r+   s       €r,   rT   zStdDev.__init__%  s    ø€ Ù)/™°\ˆŒÜ‰Ñ˜Ñ- uÓ-r1   c                 óF   •— i t         ‰| �  «       ¥d| j                  dk(  i¥S )Nr°   r¬   ©r$   r‹   r’   ©r'   r+   s    €r,   r‹   zStdDev._get_repr_options)  s&   ø€ ØX”%‘'Ñ+Ó-ÐX¨x¸¿¹È-Ñ9WÑXÐXr1   ©F©r<   r=   r>   ra   r?   rT   r‹   rB   rC   s   @r,   r   r   !  s   ø„ Ø€DØ€Eõ.÷Yð Yr1   r   c                   ó,   ‡ — e Zd ZdZdZˆ fd„Zd„ Zˆ xZS )ÚStringAggDelimiterr   z%(expressions)sc                 ó2   •— || _         t        ‰| �	  |«       y r4   )Úvaluer$   rT   )r'   r¹   r+   s     €r,   rT   zStringAggDelimiter.__init__1  s   ø€ ØˆŒ
Ü‰Ñ˜Õr1   c                 ó2   — d} | j                   ||fd|i|¤ŽS )Nz SEPARATOR %(expressions)sr@   )r%   ©r'   r(   r)   r*   r@   s        r,   Úas_mysqlzStringAggDelimiter.as_mysql5  s4   € Ø/ˆàˆt�{‰{ØØñ
ð ð
ð ñ	
ð 	
r1   )r<   r=   r>   r?   r@   rT   r¼   rB   rC   s   @r,   r·   r·   -  s   ø„ Ø€EØ €Hô ö
r1   r·   c                   óR   ‡ — e Zd ZdZdZd ZdZdZ e«       Z	ˆ fd„Z
d„ Zd„ Zd„ Zˆ xZS )r   rI   Ú
STRING_AGGTc                 ó\   •— t        |«      | _        t        ‰| �  || j                  fi |¤Ž y r4   )r·   Ú	delimiterr$   rT   )r'   r�   rÀ   rV   r+   s       €r,   rT   zStringAgg.__init__H  s'   ø€ Ü+¨IÓ6ˆŒÜ‰Ñ˜ T§^¡^Ñ=°uÓ=r1   c                 óR   — | j                   rd}nd} | j                  ||fd|dœ|¤ŽS )NzO%(function)s(%(distinct)s%(expressions)s) WITHIN GROUP (%(order_by)s)%(filter)sz3%(function)s(%(distinct)s%(expressions)s)%(filter)sÚLISTAGG)r’   r@   )rM   r%   r»   s        r,   Ú	as_oraclezStringAgg.as_oracleL  sK   € Ø�=Š=ðñ ð
 MˆHàˆt�{‰{ØØð
ð Øñ	
ð
 ñ
ð 	
r1   c                 ó  — d|d<   d}||d<   | j                  «       }g }|j                  r7|j                  |j                  «      \  }}|j                  d d |_        ||d<    |j                  ||fi |¤Ž\  }}	|g |	¢|¢­fS )NÚGROUP_CONCATr’   zB%(function)s(%(distinct)s%(expressions)s%(order_by)s%(delimiter)s)r@   éÿÿÿÿrÀ   )r�   rÀ   r€   r.   r%   )
r'   r(   r)   r*   r@   rp   Údelimiter_paramsÚdelimiter_sqlrˆ   r‰   s
             r,   r¼   zStringAgg.as_mysql]  s    € Ø$2ˆ�jÑ!àWˆØ$,ˆ�jÑ!à�I‰I‹Kˆð
 ÐØ�;Š;Ø.6×.>Ñ.>¸q¿{¹{Ó.KÑ+ˆMÐ+à#$×#7Ñ#7¸¸Ð#<ˆAÔ Ø)6ˆM˜+Ñ&à�a—h‘h˜x¨ÑE°}ÑE‰ˆˆVàÐ0�fÐ0Ð/Ñ0Ð0Ð0r1   c                 ó|   — |j                  «       dk  r | j                  ||fddi|¤ŽS  | j                  ||fi |¤ŽS )N)é   é,   r’   rÅ   )Úget_database_versionr%   )r'   r(   r)   r*   s       r,   Ú	as_sqlitezStringAgg.as_sqlites  sZ   € Ø×*Ñ*Ó,¨wÒ6Ø�4—;‘;ØØñð (ðð  ñ	ð ð ˆt�{‰{˜8 ZÑA°=ÑAÐAr1   )r<   r=   r>   r@   r’   ra   rO   rQ   r   rc   rT   rÃ   r¼   rÍ   rB   rC   s   @r,   r   r   @  s8   ø„ ØP€HØ€HØ€DØ€NØ€NÙ“;€Lô>ò
ò"1ö,	Br1   r   c                   ó   — e Zd ZdZd ZdZdZy)r   ÚSUMTr   Nr•   r!   r1   r,   r   r     r–   r1   r   c                   ó2   ‡ — e Zd Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )r   r   c                 ó<   •— |rdnd| _         t        ‰| �  |fi |¤Ž y )NÚVAR_SAMPÚVAR_POPr®   r¯   s       €r,   rT   zVariance.__init__Š  s    ø€ Ù&,™
°)ˆŒÜ‰Ñ˜Ñ- uÓ-r1   c                 óF   •— i t         ‰| �  «       ¥d| j                  dk(  i¥S )Nr°   rÒ   r²   r³   s    €r,   r‹   zVariance._get_repr_optionsŽ  s&   ø€ ØU”%‘'Ñ+Ó-ÐU¨x¸¿¹È*Ñ9TÑUÐUr1   r´   rµ   rC   s   @r,   r   r   †  s   ø„ Ø€DØ€Eõ.÷Vð Vr1   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   rE   r   r   r   r   r   r   r   r·   r   r   r   r!   r1   r,   ú<module>rÝ      sñ   ðñ÷ =Ý '÷÷ ñ ÷ <Ý /÷ò
€ôQ�dô Qô,
E�{ô 
EôT�ô TônEˆyô EôÐ
Ð!8¸)ô ôˆIô ôBˆ)ô ôˆ)ô ô	YÐ$ iô 	Yô
˜ô 
ô&<B�	ô <Bô~Ð
 ô ô	VÐ&¨	õ 	Vr1   