
    k"g                     0    d dl mZ d dlmZ  G d d      Zy)    )FullResultSet)OrderByListc                   L     e Zd Zdd fd
Z fdZ fdZ fdZ fdZ xZS )OrderableAggMixin orderingc                    |sd | _         n4t        |t        t        f      rt	        | | _         nt	        |      | _         t        |   |i | y N)order_by
isinstancelisttupler   super__init__)selfr	   expressionsextra	__class__s       b/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/postgres/aggregates/mixins.pyr   zOrderableAggMixin.__init__   sE     DM4-0'2DM'1DM+//    c                 |    | j                   ! | j                   j                  |i || _         t        |   |i |S r   )r   resolve_expressionr   )r   argskwargsr   s      r   r   z$OrderableAggMixin.resolve_expression   s?    ==$<DMM<<dMfMDMw)4:6::r   c                 <    t         |          | j                  gz   S r   )r   get_source_expressionsr   )r   r   s    r   r   z(OrderableAggMixin.get_source_expressions   s    w-/4==/AAr   c                 6    |^ }| _         t        | 	  |      S r   )r   r   set_source_expressions)r   exprsr   s     r   r   z(OrderableAggMixin.set_source_expressions   s     %w-e44r   c                 0   | j                         ^ }}}d}g }||j                  |      \  }}g }|	 |j                  |      \  }	}g }
|D ]  }|
|j                  |      d   z  }
 t        |   |||      \  }}	|g |
||fS # t        $ r Y Kw xY w)N    r   )r   compiler   r   as_sql)r   compiler
connectionsource_exprsfiltering_exprordering_exprorder_by_sqlorder_by_paramsfilter_params_source_paramssource_exprsqlr   s                r   r%   zOrderableAggMixin.as_sql   s    7;7R7R7T4~}$,4,<,<],K)L/%#+#3#3N#C = ' 	>KX--k:1==M	> *|LQFmFoFFFF ! s   B	 		BB)	__name__
__module____qualname__r   r   r   r   r%   __classcell__)r   s   @r   r   r      s'    .0 0;
B5G Gr   r   N)django.core.exceptionsr   django.db.models.expressionsr   r   r   r   r   <module>r8      s    0 4*G *Gr   