
     hu                     |   d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	 d dl
mZmZ ddlmZ g dZ e            Z G d d	          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          Z G d de          Z G d deee          Z G d deee          ZdS )    N)
ArrayField)	AggregateBooleanField	JSONField	TextFieldValue)RemovedInDjango50WarningRemovedInDjango51Warning   )OrderableAggMixin)ArrayAggBitAndBitOrBitXorBoolAndBoolOrJSONBAgg	StringAggc                   4     e Zd Zed fd
Z fdZd Z xZS )DeprecatedConvertValueMixindefaultc                r    |t           u r
d }d| _        nd| _         t                      j        |d|i| d S )NFTr   )NOT_PROVIDED_default_providedsuper__init__)selfr   expressionsextra	__class__s       i/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/contrib/postgres/aggregates/general.pyr   z$DeprecatedConvertValueMixin.__init__   sM    l""G%*D""%)D"+@w@%@@@@@    c                 ~     t                      j        |i |}| j        st          | d| j                  |_        |S )N"deprecation_empty_result_set_value)r   resolve_expressionr   getattrdeprecation_valueempty_result_set_value)r   argskwargsresolvedr!   s       r"   r&   z.DeprecatedConvertValueMixin.resolve_expression#   sM    -577-t>v>>% 	.5:D<R/ /H+ r#   c                 f    |.| j         s't          j        | j        t                     | j        S |S )N)category)r   warningswarndeprecation_msgr	   r(   )r   value
expression
connections       r"   convert_valuez)DeprecatedConvertValueMixin.convert_value+   s5    =!7=M$.9QRRRR))r#   )__name__
__module____qualname__r   r   r&   r5   __classcell__r!   s   @r"   r   r      st        -9 A A A A A A A          r#   r   c                   L    e Zd ZdZdZdZ ed           ZdZed             Z	dS )r   	ARRAY_AGG6%(function)s(%(distinct)s%(expressions)s %(ordering)s)Tc                     g S N r   s    r"   <lambda>zArrayAgg.<lambda>8   s    b r#   zIn 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                 @    t          | j        d         j                  S )Nr   )r   source_expressionsoutput_fieldrA   s    r"   rE   zArrayAgg.output_field?   s    $1!4ABBBr#   N)
r6   r7   r8   functiontemplateallow_distinctpropertyr(   r1   rE   r@   r#   r"   r   r   2   sb        HGHN !11	P  C C XC C Cr#   r   c                       e Zd ZdZdS )r   BIT_ANDNr6   r7   r8   rF   r@   r#   r"   r   r   D           HHHr#   r   c                       e Zd ZdZdS )r   BIT_ORNrL   r@   r#   r"   r   r   H   s        HHHr#   r   c                       e Zd ZdZdS )r   BIT_XORNrL   r@   r#   r"   r   r   L   rM   r#   r   c                   &    e Zd ZdZ e            ZdS )r   BOOL_ANDNr6   r7   r8   rF   r   rE   r@   r#   r"   r   r   P   s        H<>>LLLr#   r   c                   &    e Zd ZdZ e            ZdS )r   BOOL_ORNrT   r@   r#   r"   r   r   U   s        H<>>LLLr#   r   c                   d     e Zd ZdZdZdZ e            ZdZ e	d           Z
dZed fd
Z xZS )	r   	JSONB_AGGr=   Tz[]c                     g S r?   r@   rA   s    r"   rB   zJSONBAgg.<lambda>b   s    r r#   zIn 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                    t                      j        |d|i| t          |t                    rt          |j        t
                    rt          |j        t                    s|j        }	 t          j	        |          }t          || j                  | _
        t          j        d|ddt                     d S # t          j        $ r5 t          j        d|ddt                     | j        | j
        _        Y d S w xY wd S d S d S )Nr   zPPassing an encoded JSON string as JSONBAgg(default) is deprecated. Pass default=z	 instead.   )
stacklevelr.   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.)r   r   
isinstancer   r2   strrE   r   jsonloadsr   r/   r0   r
   JSONDecodeError)r   r   r   r    r2   decodedr!   s         r"   r   zJSONBAgg.__init__n   sj   +@w@%@@@w&&	7=#..	 w3Y??	
 ME*U++  %Wd.?@@E07E E E 5	      ' > > >K"K K K  !5    -1,=))))>	 	 	 	 	 	s   .B> >A DD)r6   r7   r8   rF   rG   rH   r   rE   r(   rI   r%   r1   r   r   r9   r:   s   @r"   r   r   Z   s        HGHN9;;L )1//)B)B&	  .:           r#   r   c                   F     e Zd ZdZdZdZ e            ZdZdZ	 fdZ
 xZS )r   
STRING_AGGr=   T zIn Django 5.0, StringAgg() will return None instead of an empty string 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                 v    t          t          |                    } t                      j        ||fi | d S r?   )r   r^   r   r   )r   r3   	delimiterr    delimiter_exprr!   s        r"   r   zStringAgg.__init__   s=    s9~~..^==u=====r#   )r6   r7   r8   rF   rG   rH   r   rE   r(   r1   r   r9   r:   s   @r"   r   r      se        HGHN9;;L 	Y > > > > > > > > >r#   r   )r_   r/   django.contrib.postgres.fieldsr   django.db.modelsr   r   r   r   r   django.utils.deprecationr	   r
   mixinsr   __all__objectr   r   r   r   r   r   r   r   r   r   r@   r#   r"   <module>ro      s8     5 5 5 5 5 5 Q Q Q Q Q Q Q Q Q Q Q Q Q Q W W W W W W W W % % % % % %	 	 	 vxx       0C C C C C*,=y C C C$    Y       I       Y   " " " " "i " " "
" " " " "Y " " "
. . . . .*,=y . . .b> > > > >+->	 > > > > >r#   