
    ZiM                        d dl mZ d dlZd dlmZmZmZ d dlmZ  G d de          Z	 G d de          Z
 G d	 d
eej                  Z G d de          Z G d de          Z G d de          ZdS )    )annotationsN)FieldFunctionTerm)format_alias_sqlc                  *     e Zd Z	 d
d fdZd	 Z xZS )ArrayNvalueslistconverter_optionsdict | Nonealias
str | Nonec                    t                                          |           || _        || _        |pt	                      | _        d S N)super__init___values_converter_clsdict_converter_options)selfr
   converter_clsr   r   	__class__s        R/root/projects/butler/venv/lib/python3.11/site-packages/pypika/clickhouse/array.pyr   zArray.__init__   sC     	+"3"=tvv    c                F   | j         rrg }| j        D ]<} | j         |fi | j        }|                    |                                           =d                    dd                    |          dg          }nt          | j                  }t          || j                  S )N [,])	r   r   r   appendget_sqljoinstrr   r   )r   	convertedvalue	convertersqls        r   r#   zArray.get_sql   s     	$I 6 6/D/QQ9PQQ	  !2!2!4!45555''3 3 3S9::CC dl##CTZ000r   )NNN)r
   r   r   r   r   r   )__name__
__module____qualname__r   r#   __classcell__)r   s   @r   r	   r	      sT        ko> > > > > > >1 1 1 1 1 1 1r   r	   c                  $    e Zd Z	 	 dddZdd
ZdS )HasAnyN
left_arrayArray or Fieldright_arrayr   r   schemac                Z    || _         || _        || _        || _        d| _        d| _        d S )N hasAny)_left_array_right_arrayr   r3   argsname)r   r0   r2   r   r3   s        r   r   zHasAny.__init__%   s4     &'
				r   Fc                B   | j                                         }| j                                        }d                    | j        t          | j         t                    rd|z  n|t          | j        t                    rd|z  n|          }t          || j        fi |S )Nz{name}({left},{right})"%s")r:   leftright)	r7   r#   r8   formatr:   
isinstancer   r   r   )	r   
with_aliaswith_namespace
quote_chardialectkwargsr=   r>   r)   s	            r   r#   zHasAny.get_sql3   s    ''))!))++&--",T-=u"E"EO$4$.t/@%$H$HS&5..e . 
 

  TZ::6:::r   NN)r0   r1   r2   r1   r   r   r3   r   )FFNN)r*   r+   r,   r   r#   r5   r   r   r/   r/   $   sI        
 !!    ; ; ; ; ; ;r   r/   c                  R    e Zd ZdddZdd	Zeej        dd                        ZdS )_AbstractArrayFunctionNarrayr1   r   r   r3   c                b    || _         || _        |                                 | _        || _        d S r   )r3   r   clickhouse_functionr:   _array)r   rI   r   r3   s       r   r   z_AbstractArrayFunction.__init__?   s.    
,,..	r   Fc                    | j                                         }d                    | j        t	          | j         t
                    rd|z  n|          }t          || j        fi |S )Nz{name}({array})r<   )r:   rI   )rL   r#   r?   r:   r@   r   r   r   )r   rB   rC   rD   rE   rI   r)   s          r   r#   z_AbstractArrayFunction.get_sqlE   sl    ##%%&&$.t{E$B$BM&5.. ' 
 
  TZ::6:::r   returnr%   c                    d S r   r5   clss    r   rK   z*_AbstractArrayFunction.clickhouse_functionM   s	     	r   rF   )rI   r1   r   r   r3   r   )FNNrN   r%   )	r*   r+   r,   r   r#   classmethodabcabstractmethodrK   r5   r   r   rH   rH   >   so            ; ; ; ;     [  r   rH   )	metaclassc                  &    e Zd Zedd            ZdS )NotEmptyrN   r%   c                    dS )NnotEmptyr5   rP   s    r   rK   zNotEmpty.clickhouse_functionT   s    zr   NrR   r*   r+   r,   rS   rK   r5   r   r   rX   rX   S   s2           [  r   rX   c                  &    e Zd Zedd            ZdS )EmptyrN   r%   c                    dS )Nemptyr5   rP   s    r   rK   zEmpty.clickhouse_functionZ   s    wr   NrR   r[   r5   r   r   r]   r]   Y   s2           [  r   r]   c                  &    e Zd Zedd            ZdS )LengthrN   r%   c                    dS )Nlengthr5   rP   s    r   rK   zLength.clickhouse_function`   s    xr   NrR   r[   r5   r   r   ra   ra   _   s2           [  r   ra   )
__future__r   rT   pypika.termsr   r   r   pypika.utilsr   r	   r/   ABCMetarH   rX   r]   ra   r5   r   r   <module>rh      sx   " " " " " " 



         
 * ) ) ) ) )1 1 1 1 1D 1 1 1.; ; ; ; ;X ; ; ;4    X    *    %       "       #     r   