
    P?h	                     D    d dl Z d dlmZ d dlmZ d dlmZ  G d d      Zy)    N)FullResultSet)OrderByList)RemovedInDjango61Warningc                   N     e Zd Zddd fd
Z fdZ fdZ fdZ fdZ xZS )OrderableAggMixin )orderingorder_byc                    |r+t        j                  dt        d       |rt        d      |}|sd | _        n4t        |t        t        f      rt        | | _        nt        |      | _        t        | (  |i | y )Nz:The ordering argument is deprecated. Use order_by instead.   )category
stacklevelz*Cannot specify both order_by and ordering.)warningswarnr   	TypeErrorr
   
isinstancelisttupler   super__init__)selfr	   r
   expressionsextra	__class__s        g/var/www/django-tutorial/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/mixins.pyr   zOrderableAggMixin.__init__   ss    MML1
  LMMH DM4-0'2DM'1DM+//    c                 |    | j                   ! | j                   j                  |i || _         t        |   |i |S N)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order_by_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+     /12 0&;
B5G Gr   r   )r   django.core.exceptionsr   django.db.models.expressionsr   django.utils.deprecationr   r   r   r   r   <module>r?      s     0 4 =6G 6Gr   