/usr/local/lib/python3.9/site-packages/django/contrib/postgres/aggregates/__pycache__
a Ӱ�hu � @ s d dl Z d dlZd dlmZ d dlmZmZmZmZm Z d dl mZmZ ddl mZ g d�Ze� ZG dd � d �ZG d d� deee�ZG dd � d e�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� deee�ZG dd� deee�ZdS )� N)� ArrayField)� Aggregate�BooleanField� JSONField� TextField�Value)�RemovedInDjango50Warning�RemovedInDjango51Warning� )�OrderableAggMixin)�ArrayAgg�BitAnd�BitOr�BitXor�BoolAnd�BoolOr�JSONBAgg� StringAggc s6 e Zd Zed�� fdd� Z� fdd�Zdd� Z� ZS )�DeprecatedConvertValueMixin��defaultc s4 |t u rd }d| _nd| _t� j|d|i|�� d S )NFTr )�NOT_PROVIDED�_default_provided�super�__init__)�selfr �expressions�extra�� __class__� �T/usr/local/lib/python3.9/site-packages/django/contrib/postgres/aggregates/general.pyr s z$DeprecatedConvertValueMixin.__init__c s, t � j|i |��}| js(t| d| j�|_|S )N�"deprecation_empty_result_set_value)r �resolve_expressionr �getattr�deprecation_valueZempty_result_set_value)r �args�kwargs�resolvedr r r! r# # s �z.DeprecatedConvertValueMixin.resolve_expressionc C s( |d u r$| j s$tj| jtd� | jS |S )N)�category)r �warnings�warn�deprecation_msgr r% )r �value� expression� connectionr r r! � convert_value+ s z)DeprecatedConvertValueMixin.convert_value)�__name__� __module__�__qualname__r r r# r0 � __classcell__r r r r! r s r c @ s4 e Zd ZdZdZdZedd� �ZdZedd� �Z d S ) r Z ARRAY_AGG�6%(function)s(%(distinct)s%(expressions)s %(ordering)s)Tc C s g S �Nr �r r r r! �<lambda>8 � zArrayAgg.<lambda>z�In Django 5.0, ArrayAgg() will return None instead of an empty list if there are no rows. Pass default=None to opt into the new behavior and silence this warning or default=[] to keep the previous behavior.c C s t | jd j�S )Nr )r Zsource_expressions�output_fieldr7 r r r! r: ? s zArrayAgg.output_fieldN) r1 r2 r3 �function�template�allow_distinct�propertyr% r, r: r r r r! r 2 s �r c @ s e Zd ZdZdS )r ZBIT_ANDN�r1 r2 r3 r; r r r r! r D s r c @ s e Zd ZdZdS )r ZBIT_ORNr? r r r r! r H s r c @ s e Zd ZdZdS )r ZBIT_XORNr? r r r r! r L s r c @ s e Zd ZdZe� ZdS )r ZBOOL_ANDN�r1 r2 r3 r; r r: r r r r! r P s r c @ s e Zd ZdZe� ZdS )r ZBOOL_ORNr@ r r r r! r U s r c sH e Zd ZdZdZdZe� ZdZe dd� �Z dZed�� fd d � Z � ZS )r Z JSONB_AGGr5 Tz[]c C s g S r6 r r7 r r r! r8 b r9 zJSONBAgg.<lambda>z�In Django 5.0, JSONBAgg() will return None instead of an empty list if there are no rows. Pass default=None to opt into the new behavior and silence this warning or default=[] to keep the previous behavior.r c s� t � j|d|i|�� t|t�r�t|jt�r�t|jt�s�|j}zt� |�}W n6 tj y� tjd|�d�dt d� | j| j_Y n(0 t|| j�| _tjd|�d�dt d� d S )Nr zuPassing a Value() with an output_field that isn't a JSONField as JSONBAgg(default) is deprecated. Pass default=Value(z$, output_field=JSONField()) instead.� )� stacklevelr) zPPassing an encoded JSON string as JSONBAgg(default) is deprecated. Pass default=z instead.)r r � isinstancer r- �strr: r �json�loads�JSONDecodeErrorr* r+ r r )r r r r r- �decodedr r r! r n s6 � � �����zJSONBAgg.__init__)r1 r2 r3 r; r<