o
    	ò=h	  ã                   @   s>   d dl Z d dlmZ d dlmZ d dlmZ G dd„ dƒZdS )é    N)ÚFullResultSet)ÚOrderByList)ÚRemovedInDjango61Warningc                       sT   e Zd Zdddœ‡ fdd„
Z‡ fdd„Z‡ fdd„Z‡ fd	d
„Z‡ fdd„Z‡  ZS )ÚOrderableAggMixin© )ÚorderingÚorder_byc                   sj   |rt jdtdd |rtdƒ‚|}|sd | _nt|ttfƒr%t|Ž | _nt|ƒ| _t	ƒ j
|i |¤Ž d S )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__r   úa/var/www/ecommerce/venv/lib/python3.10/site-packages/django/contrib/postgres/aggregates/mixins.pyr      s   ý
zOrderableAggMixin.__init__c                    s0   | j d ur| j j|i |¤Ž| _ tƒ j|i |¤ŽS ©N)r   Úresolve_expressionr   )r   ÚargsÚkwargsr   r   r   r      s   
z$OrderableAggMixin.resolve_expressionc                    s   t ƒ  ¡ | jg S r   )r   Úget_source_expressionsr   )r   r   r   r   r   #   s   z(OrderableAggMixin.get_source_expressionsc                    s   |^ }| _ tƒ  |¡S r   )r   r   Úset_source_expressions)r   Úexprsr   r   r   r   &   s   z(OrderableAggMixin.set_source_expressionsc                    s¬   |   ¡ ^ }}}d}g }|d ur| |¡\}}g }|d ur0z	| |¡\}	}W n	 ty/   Y nw g }
|D ]}|
| |¡d 7 }
q4tƒ j|||d\}}	|g |
¢|¢|¢R fS )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   r   r   r$   *   s"   ÿzOrderableAggMixin.as_sql)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r$   Ú__classcell__r   r   r   r   r      s    r   )r   Údjango.core.exceptionsr   Údjango.db.models.expressionsr   Údjango.utils.deprecationr   r   r   r   r   r   Ú<module>   s
    