Ë
    ò%9jù  ã                   ó"  — d Z ddlmZmZ ddlmZ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ÚColPairsÚ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         €úW/var/www/html/truck-me/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&   r1   z Aggregate.set_source_expressions7   s   ø€ Ø#Ñˆ�”Ü‰wÑ-¨eÓ4Ð4r'   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!   r5   Úget_refsÚannotationsÚ
is_summaryr   r4   r   r*   Ú	enumerateÚcontains_aggregateÚhasattrÚreprr   r+   r6   r	   r   )r#   ÚqueryÚallow_joinsÚreuseÚ	summarizeÚfor_saveÚcÚrefr$   ÚindexÚexprÚbefore_resolvedr4   r   Úcoalescer   s                  €r&   r5   zAggregate.resolve_expression;   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ˆÔØˆ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   r4   Ú__z$Complex expressions require an alias)r*   Úlenr<   r4   Úlowerr   )r#   rF   r$   s      r&   Údefault_aliaszAggregate.default_aliasd   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_colsm   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)rT   r   r   )ÚthenrJ   )r   r   ÚfeaturesÚ supports_aggregate_filter_clauseÚas_sqlÚfilter_templateÚgetrT   r!   r   Úcopyr*   r
   r1   r   r   )r#   ÚcompilerÚ
connectionÚextra_contextÚ
filter_sqlÚfilter_paramsrT   ÚsqlÚparamsr[   r/   Ú	conditionr   s               €r&   rX   zAggregate.as_sqlp   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&   re   zAggregate._get_repr_options�   s?   ø€ Ü‘'Ñ+Ó-ˆØ�=Š=Ø"&§-¡-ˆG�JÑØ�;Š;Ø $§¡ˆG�HÑØˆr'   )NTNFF)r   Ú
__module__Ú__qualname__rT   r;   r4   rY   Úwindow_compatibler   r    r"   r-   r*   r1   r5   ÚpropertyrN   rQ   rX   re   Ú__classcell__©r   s   @r&   r   r      s   ø„ Ø:€HØÐØ€DØ5€OØÐØ€NØ!Ðð &+°4Àö
0ôSô2ô5ð
 SXõ'ðR ñ@ó ð@òôE÷>ð r'   r   c                   ó   — e Zd ZdZd ZdZdZy)r   ÚAVGTrJ   N©r   rg   rh   Úfunctionr4   r   ÚarityrP   r'   r&   r   r   ˜   ó   „ Ø€HØ€DØ€NØ�Er'   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   rJ   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'   c                 óæ   •— t        ‰| �  |i |¤Ž}|j                  d   }t        |t        «      rA| j
                  rt        d«      ‚|j                  «       }t        |d   |j                  ¬«      S |S )Nr   z6COUNT(DISTINCT) doesn't support composite primary keys)r   )
r!   r5   r/   rw   r   r   rx   Úget_colsr   r   )r#   ÚargsÚkwargsÚresultrF   Úcolsr   s         €r&   r5   zCount.resolve_expression¯   sq   ø€ Ü‘Ñ+¨TÐ<°VÑ<ˆØ×(Ñ(¨Ñ+ˆô �dœHÔ%Ø�}Š}Ü ØLóð ð —=‘=“?ˆDÜ˜˜a™¨¯©Ô7Ð7àˆr'   r)   )r   rg   rh   rp   r4   r   r6   r   r    rq   Úallows_composite_expressionsr"   r5   rk   rl   s   @r&   r   r   Ÿ   s9   ø„ Ø€HØ€DÙ“>€LØ€NØÐØ€EØ#'Ð õ=÷ð r'   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚMAXrJ   N©r   rg   rh   rp   r4   rq   rP   r'   r&   r   r   À   ó   „ Ø€HØ€DØ�Er'   r   c                   ó   — e Zd ZdZd ZdZy)r   ÚMINrJ   Nrƒ   rP   r'   r&   r   r   Æ   r„   r'   r   c                   ó2   ‡ — e Zd Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )r   rJ   c                 ó<   •— |rdnd| _         t        ‰| �  |fi |¤Ž y )NÚSTDDEV_SAMPÚ
STDDEV_POP©rp   r!   r"   ©r#   ry   Úsampler%   r   s       €r&   r"   zStdDev.__init__Ð   s    ø€ Ù)/™°\ˆŒÜ‰Ñ˜Ñ- uÓ-r'   c                 óF   •— i t         ‰| �  «       ¥d| j                  dk(  i¥S )Nr�   r‰   ©r!   re   rp   ©r#   r   s    €r&   re   zStdDev._get_repr_optionsÔ   s&   ø€ ØX”%‘'Ñ+Ó-ÐX¨x¸¿¹È-Ñ9WÑXÐXr'   ©F©r   rg   rh   r4   rq   r"   re   rk   rl   s   @r&   r   r   Ì   s   ø„ Ø€DØ€Eõ.÷Yð Yr'   r   c                   ó   — e Zd ZdZd ZdZdZy)r   ÚSUMTrJ   Nro   rP   r'   r&   r   r   Ø   rr   r'   r   c                   ó2   ‡ — e Zd Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )r   rJ   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&   re   zVariance._get_repr_optionsç   s&   ø€ ØU”%‘'Ñ+Ó-ÐU¨x¸¿¹È*Ñ9TÑUÐUr'   r‘   r’   rl   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   rP   r'   r&   ú<module>r¡      sž   ðñ÷ =ß P× PÝ 0Ý /÷ò
	€ô{�ô {ô|Ð
Ð!8¸)ô ôˆIô ôBˆ)ô ôˆ)ô ô	YÐ$ iô 	YôÐ
 ô ô	VÐ&¨	õ 	Vr'   