§
    Ÿjù  ã                   óT  — 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dS )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          ¦   «         j	        |i |¤Ž d S )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         €úh/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/db/models/aggregates.pyr"   zAggregate.__init__#   s“   ø€ ð ð 	U˜DÔ/ð 	UÝÐ9¸D¼NÔ<SÑSÑTÔTÐTØÐ 4Ô#>Ð#JÝ˜tœ~Ô6ÐPÐPÐPÑQÔQÐQØ ˆŒØˆŒØˆŒØ�‰ŒÔ˜+Ð/¨Ð/Ð/Ð/Ð/Ð/ó    c                 óX   •— d„ t          ¦   «                              ¦   «         D ¦   «         S )Nc                 ó   — g | ]	}|j         ‘Œ
S © )Ú_output_field_or_none)Ú.0Úes     r&   ú
<listcomp>z/Aggregate.get_source_fields.<locals>.<listcomp>1   s   € ÐRÐRÐR¨A�Ô'ÐRÐRÐRr'   )r!   Úget_source_expressions©r#   r   s    €r&   Úget_source_fieldszAggregate.get_source_fields/   s'   ø€ àRÐRµ±´×1OÒ1OÑ1QÔ1QÐRÑRÔRÐRr'   c                 óZ   •— t          ¦   «                              ¦   «         }|| j        gz   S ©N)r!   r/   r   )r#   Úsource_expressionsr   s     €r&   r/   z Aggregate.get_source_expressions3   s(   ø€ Ý"™WœW×;Ò;Ñ=Ô=ÐØ! T¤[ MÑ1Ð1r'   c                 óZ   •— |�^ }| _         t          ¦   «                              |¦  «        S r3   )r   r!   Úset_source_expressions)r#   Úexprsr   s     €r&   r6   z Aggregate.set_source_expressions7   s'   ø€ Ø#Ñˆ�”Ý‰wŒw×-Ò-¨eÑ4Ô4Ð4r'   c           
      ó@  •— t          ¦   «                              ||||¦  «        }|rH|                     ¦   «         D ]2}|j        |         j        rt          d|j        › d|› d|› d�¦  «        ‚Œ3n¨| j        s¡t          t          |¦  «                             ¦   «         }t          |¦  «        D ]j\  }	}
|
j
        r^|                      ¦   «         |	         }t          |d¦  «        r|j        nt          |¦  «        }t          d|j        ›d|›d|›d�¦  «        ‚Œk|j        x}€|S t          |d¦  «        r,|                     ||||¦  «        }|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!   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:   zAggregate.resolve_expression;   sê  ø€ õ ‰GŒG×&Ò& u¨k¸5À)ÑLÔLˆØð 	à—z’z‘|”|ð ð �ØÔ$ SÔ)Ô4ð Ý$ØT¨!¬&ÐTÐT°CÐTÐT¸cÐTÐTÐTñô ð ððð
 ”ð 	õ  ¥	¨1Ñ-Ô-×DÒDÑFÔFˆKÝ(¨Ñ5Ô5ð ð ‘��tØÔ*ð 
Ø&*×&AÒ&AÑ&CÔ&CÀEÔ&J�Oõ # ?°FÑ;Ô;ð3˜Ô,Ð,å! /Ñ2Ô2ð õ
 %˜*àœ6˜6˜6 4 4 4¨¨¨ð/ñô ð ð
ð ”yÐ ˆGÐ)ØˆHÝ�7Ð0Ñ1Ô1ð 	>Ø×0Ò0°¸ÀUÈIÑVÔVˆGØÔ,Ð4Ø'(Ô'>�Ô$øå˜G QÔ%<Ñ=Ô=ˆGØˆŒ	Ý˜A˜w°QÔ5LÐMÑMÔMˆØœlˆÔØˆr'   c                 ó   — d„ |                       ¦   «         D ¦   «         }t          |¦  «        dk    r?t          |d         d¦  «        r)|d         j        ›d| j                             ¦   «         ›�S t          d¦  «        ‚)Nc                 ó   — g | ]}|®|‘ŒS r3   r*   )r,   rK   s     r&   r.   z+Aggregate.default_alias.<locals>.<listcomp>f   s$   € ð 
ð 
ð 
Ø¸dÐ>NˆDÐ>NÐ>NÐ>Nr'   é   r   r9   Ú__z$Complex expressions require an alias)r/   ÚlenrA   r9   Úlowerr   )r#   r$   s     r&   Údefault_aliaszAggregate.default_aliasd   sŠ   € ð
ð 
Ø!×8Ò8Ñ:Ô:ð
ñ 
ô 
ˆõ ˆ{ÑÔ˜qÒ Ð ¥W¨[¸¬^¸VÑ%DÔ%DÐ Ø*¨1œ~Ô2Ð2Ð2°D´I·O²OÑ4EÔ4EÐ4EÐFÐFÝÐ>Ñ?Ô?Ð?r'   c                 ó   — g S r3   r*   )r#   s    r&   Úget_group_by_colszAggregate.get_group_by_colsm   s   € Øˆ	r'   c                 ó¬  •— | j         rdnd|d<   | j        �r#|j        j        r|	 | j                             ||¦  «        \  }}| j        |                     d| j        ¦  «        z  } t          ¦   «         j        ||f||dœ|¤Ž\  }}|g |¢|¢R fS # t          $ r Y nŸw xY w|  
                    ¦   «         }	d |	_        |	                     ¦   «         }
t          | j        |
d         ¬¦  «        }|	                     t          |¦  «        g|
dd …         z   ¦  «          t          t          |	¦  «        j        ||fi |¤ŽS  t          ¦   «         j        ||fi |¤ŽS )	Nz	DISTINCT Ú r   Útemplate)rY   r   r   )ÚthenrP   )r   r   ÚfeaturesÚ supports_aggregate_filter_clauseÚas_sqlÚfilter_templateÚgetrY   r!   r   Úcopyr/   r
   r6   r   r   )r#   ÚcompilerÚ
connectionÚextra_contextÚ
filter_sqlÚfilter_paramsrY   ÚsqlÚparamsr`   r4   Ú	conditionr   s               €r&   r]   zAggregate.as_sqlp   s»  ø€ Ø37´=Ð$H K KÀbˆ�jÑ!ØŒ;ñ 	ØÔ"ÔCð ð:Ø04´×0BÒ0BÀ8ÈZÑ0XÔ0XÑ-�J ð  $Ô3°m×6GÒ6GØ" D¤Mñ7ô 7ñ  �Hð #1¥%¡'¤'¤.Ø Ø"ð#ð "*Ø)ð	#ð #ð
 (ð#ð #‘K�C˜ð Ð 9 &Ð 9¨=Ð 9Ð 9Ð9Ð9øõ %ð ð ð Ø�Dðøøøð —y’y‘{”{�Ø"�”Ø%)×%@Ò%@Ñ%BÔ%BÐ"Ý  ¤Ð3EÀaÔ3HÐIÑIÔI�	Ø×+Ò+­T°)©_¬_Ð,=Ð@RÐSTÐSUÐSUÔ@VÑ,VÑWÔWÐWØ4•u�Y¨Ñ-Ô-Ô4Ø˜jðð Ø,9ðð ð ð �u‰wŒwŒ~˜h¨
ÐDÐD°mÐDÐDÐDs   ¥B Â
BÂBc                 óŒ   •— t          ¦   «                              ¦   «         }| j        r
| j        |d<   | j        r
| j        |d<   |S )Nr   r   )r!   Ú_get_repr_optionsr   r   )r#   Úoptionsr   s     €r&   rj   zAggregate._get_repr_options�   sI   ø€ Ý‘'”'×+Ò+Ñ-Ô-ˆØŒ=ð 	0Ø"&¤-ˆG�JÑØŒ;ð 	,Ø $¤ˆG�HÑØˆr'   )NTNFF)r   Ú
__module__Ú__qualname__rY   r@   r9   r^   Úwindow_compatibler   r    r"   r1   r/   r6   r:   ÚpropertyrT   rV   r]   rj   Ú__classcell__©r   s   @r&   r   r      sK  ø€ € € € € Ø:€HØÐØ€DØ5€OØÐØ€NØ!Ðð &+°4Àð
0ð 
0ð 
0ð 
0ð 
0ð 
0ð 
0ðSð Sð Sð Sð Sð2ð 2ð 2ð 2ð 2ð5ð 5ð 5ð 5ð 5ð
 SXð'ð 'ð 'ð 'ð 'ð 'ðR ð@ð @ñ „Xð@ðð ð ðEð Eð Eð Eð Eð>ð ð ð ð ð ð ð ð r'   r   c                   ó   — e Zd ZdZd ZdZdZdS )r   ÚAVGTrP   N©r   rl   rm   Úfunctionr9   r   Úarityr*   r'   r&   r   r   ˜   ó"   € € € € € Ø€HØ€DØ€NØ€E€E€Er'   r   c                   óV   ‡ — 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   rP   Nc                 ó´   •— |dk    rt          ¦   «         }t          |t           ¦  «        r|�t          d¦  «        ‚ t          ¦   «         j        |fd|i|¤Ž d S )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__¨   sh   ø€ Ø˜ÒÐÝ™œˆJÝ�j¥$Ñ'Ô'ð 	Y¨FÐ,>ÝÐWÑXÔXÐXØ�‰ŒÔ˜Ð<Ð<¨FÐ<°eÐ<Ð<Ð<Ð<Ð<r'   c                 ó
  •—  t          ¦   «         j        |i |¤Ž}|j        d         }t          |t          ¦  «        rF| j        rt          d¦  «        ‚|                     ¦   «         }t          |d         |j	        ¬¦  «        S |S )Nr   z6COUNT(DISTINCT) doesn't support composite primary keys)r   )
r!   r:   r4   r|   r   r   r}   Úget_colsr   r   )r#   ÚargsÚkwargsÚresultrK   Úcolsr   s         €r&   r:   zCount.resolve_expression¯   s‹   ø€ Ø+•‘”Ô+¨TÐ<°VÐ<Ð<ˆØÔ(¨Ô+ˆõ �d�HÑ%Ô%ð 	8ØŒ}ð Ý ØLñô ð ð —=’=‘?”?ˆDÝ˜˜aœ¨¬Ð7Ñ7Ô7Ð7àˆr'   r3   )r   rl   rm   ru   r9   r   r;   r   r    rv   Úallows_composite_expressionsr"   r:   rp   rq   s   @r&   r   r   Ÿ   s�   ø€ € € € € Ø€HØ€DØ�<‘>”>€LØ€NØÐØ€EØ#'Ð ð=ð =ð =ð =ð =ð =ðð ð ð ð ð ð ð ð r'   r   c                   ó   — e Zd ZdZd ZdZdS )r   ÚMAXrP   N©r   rl   rm   ru   r9   rv   r*   r'   r&   r   r   À   ó   € € € € € Ø€HØ€DØ€E€E€Er'   r   c                   ó   — e Zd ZdZd ZdZdS )r   ÚMINrP   Nrˆ   r*   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   rP   Fc                 óR   •— |rdnd| _          t          ¦   «         j        |fi |¤Ž d S )NÚSTDDEV_SAMPÚ
STDDEV_POP©ru   r!   r"   ©r#   r~   Úsampler%   r   s       €r&   r"   zStdDev.__init__Ð   s8   ø€ Ø)/ÐA˜˜°\ˆŒØ�‰ŒÔ˜Ð-Ð- uÐ-Ð-Ð-Ð-Ð-r'   c                 ób   •— i t          ¦   «                              ¦   «         ¥d| j        dk    i¥S )Nr’   rŽ   ©r!   rj   ru   r0   s    €r&   rj   zStdDev._get_repr_optionsÔ   s/   ø€ ØX•%‘'”'×+Ò+Ñ-Ô-ÐX¨x¸¼È-Ò9WÐXÐXÐXr'   ©F©r   rl   rm   r9   rv   r"   rj   rp   rq   s   @r&   r   r   Ì   si   ø€ € € € € Ø€DØ€Eð.ð .ð .ð .ð .ð .ðYð Yð Yð Yð Yð Yð Yð Yð Yr'   r   c                   ó   — e Zd ZdZd ZdZdZdS )r   ÚSUMTrP   Nrt   r*   r'   r&   r   r   Ø   rw   r'   r   c                   ó2   ‡ — e Zd Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )r   rP   Fc                 óR   •— |rdnd| _          t          ¦   «         j        |fi |¤Ž d S )NÚVAR_SAMPÚVAR_POPr�   r‘   s       €r&   r"   zVariance.__init__ã   s8   ø€ Ø&,Ð;˜
˜
°)ˆŒØ�‰ŒÔ˜Ð-Ð- uÐ-Ð-Ð-Ð-Ð-r'   c                 ób   •— i t          ¦   «                              ¦   «         ¥d| j        dk    i¥S )Nr’   r›   r”   r0   s    €r&   rj   zVariance._get_repr_optionsç   s/   ø€ ØU•%‘'”'×+Ò+Ñ-Ô-ÐU¨x¸¼È*Ò9TÐUÐUÐUr'   r•   r–   rq   s   @r&   r   r   ß   si   ø€ € € € € Ø€DØ€Eð.ð .ð .ð .ð .ð .ðVð Vð Vð Vð Vð Vð Vð 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   r*   r'   r&   ú<module>r¥      s;  ððð ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð
	ð 	ð 	€ð{ð {ð {ð {ð {�ñ {ô {ð {ð|ð ð ð ð Ð
Ð!8¸)ñ ô ð ðð ð ð ð ˆIñ ô ð ðBð ð ð ð ˆ)ñ ô ð ðð ð ð ð ˆ)ñ ô ð ð	Yð 	Yð 	Yð 	Yð 	YÐ$ iñ 	Yô 	Yð 	Yðð ð ð ð Ð
 ñ ô ð ð	Vð 	Vð 	Vð 	Vð 	VÐ&¨	ñ 	Vô 	Vð 	Vð 	Vð 	Vr'   