
    g
                         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y)    N)FieldFunctionTerm)format_alias_sqlc                   4     e Zd Zddededef fdZd Z xZS )Arrayvaluesconverter_optionsaliasc                 f    t         |   |       || _        || _        |xs
 t	               | _        y N)super__init___values_converter_clsdict_converter_options)selfr	   converter_clsr
   r   	__class__s        L/var/www/openai/venv/lib/python3.12/site-packages/pypika/clickhouse/array.pyr   zArray.__init__   s.    +"3"=tv    c                 V   | j                   rsg }| j                  D ]>  } | j                   |fi | j                  }|j                  |j	                                @ dj                  ddj                  |      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/D//Q9P9PQ	  !2!2!45 & ''3 3S9:C dll#CTZZ00r   )NNN)	__name__
__module____qualname__listr   r!   r   r   __classcell__)r   s   @r   r   r      s#    >t >D >`c >1r   r   c            	       B    e Zd Z	 	 ddexs edexs ededefdZd	dZy)
HasAnyN
left_arrayright_arrayr   schemac                 X    || _         || _        || _        || _        d| _        d| _        y )N hasAny)_left_array_right_arrayr   r/   argsname)r   r-   r.   r   r/   s        r   r   zHasAny.__init__!   s0     &'
		r   c                 P   | j                   j                         }| j                  j                         }dj                  | 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")r6   leftright)	r3   r   r4   formatr6   
isinstancer   r   r   )	r   
with_aliaswith_namespace
quote_chardialectkwargsr9   r:   r%   s	            r   r   zHasAny.get_sql/   s    '')!!))+&--",T-=-=u"E$4$.t/@/@%$H&5.e . 

  TZZ:6::r   NN)FFNN)r&   r'   r(   r   r   r!   r   r   r1   r   r   r,   r,       sB    
 NU ^e 	
 ;r   r,   c                   f    e Zd Zd	dexs ededefdZd
dZee	j                  defd              Zy)_AbstractArrayFunctionNarrayr   r/   c                 X    || _         || _        | j                         | _        || _        y r   )r/   r   clickhouse_functionr6   _array)r   rE   r   r/   s       r   r   z_AbstractArrayFunction.__init__;   s'    
,,.	r   c                     | j                   j                         }dj                  | j                  t	        | j                   t
              rd|z  n|      }t        || j                  fi |S )Nz{name}({array})r8   )r6   rE   )rH   r   r;   r6   r<   r   r   r   )r   r>   r?   r@   rA   rE   r%   s          r   r   z_AbstractArrayFunction.get_sqlA   s^    ##%&&$.t{{E$B&5. ' 
  TZZ:6::r   returnc                      y r   r1   clss    r   rG   z*_AbstractArrayFunction.clickhouse_functionI   s     	r   rB   )FNN)r&   r'   r(   r   r   r!   r   r   classmethodabcabstractmethodrG   r1   r   r   rD   rD   :   sN    enu S  ; C   r   rD   )	metaclassc                   "    e Zd Zedefd       Zy)NotEmptyrJ   c                      y)NnotEmptyr1   rL   s    r   rG   zNotEmpty.clickhouse_functionP   s    r   Nr&   r'   r(   rN   r!   rG   r1   r   r   rS   rS   O   s    C  r   rS   c                   "    e Zd Zedefd       Zy)EmptyrJ   c                      y)Nemptyr1   rL   s    r   rG   zEmpty.clickhouse_functionV   s    r   NrV   r1   r   r   rX   rX   U   s    C  r   rX   c                   "    e Zd Zedefd       Zy)LengthrJ   c                      y)Nlengthr1   rL   s    r   rG   zLength.clickhouse_function\   s    r   NrV   r1   r   r   r\   r\   [   s    C  r   r\   )rO   pypika.termsr   r   r   pypika.utilsr   r   r,   ABCMetarD   rS   rX   r\   r1   r   r   <module>rb      sh    
 
 *1D 1*;X ;4X *% " # r   