
    wi%                       d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ dZd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          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	          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          Z" G d- d.e          Z# G d/ d0e	          Z$ G d1 d2e	          Z% G d3 d4e	          Z& G d5 d6e	          Z' G d7 d8e	          Z( G d9 d:e	          Z) G d; d<e	          Z* G d= d>e	          Z+ G d? d@e	          Z, G dA dBe	          Z- G dC dDe	          Z. G dE dFe	          Z/ G dG dHe	          Z0 G dI dJe	          Z1 G dK dLe	          Z2 G dM dNe	          Z3 G dO dPe	          Z4 G dQ dRe	          Z5 G dS dTe	          Z6 G dU dVe	          Z7 G dW dXe	          Z8 G dY dZe	          Z9 G d[ d\e	          Z: G d] d^e	          Z; G d_ d`e	          Z< G da dbe	          Z= G dc dde	          Z> G de dfe	          Z? G dg dhe	          Z@ G di dje	          ZA G dk dle	          ZB G dm dne	          ZCdoS )pz$
Package for SQL functions wrappers
    )annotations)Field)SqlTypes)AggregateFunctionFunctionLiteralValueStarTerm)builderzTimothy Heysztheys@kayak.comc                  >     e Zd Z fdZ fdZed             Z xZS )DistinctOptionFunctionc                z    |                     d          } t                      j        |g|R d|i d| _        d S )NaliasF)getsuper__init__	_distinct)selfnameargskwargsr   	__class__s        C/var/www/icac/venv/lib/python3.11/site-packages/pypika/functions.pyr   zDistinctOptionFunction.__init__   sF    

7##2222E222    c                     t                      j        di |}t          | j                  dz   }| j        r|d |         dz   ||d          z   S |S )N   z	DISTINCT  )r   get_function_sqllenr   r   )r   r   snr   s       r   r   z'DistinctOptionFunction.get_function_sql   s`    $EGG$..v..	NNQ> 	/RaR5;&122..r   c                    d| _         d S )NT)r   )r   s    r   distinctzDistinctOptionFunction.distinct   s    r   )__name__
__module____qualname__r   r   r   r#   __classcell__r   s   @r   r   r      sl            
       W    r   r   c                  "     e Zd Zd	d
 fdZ xZS )CountNparam
str | Termr   
str | NonereturnNonec                    t          |t                    od|k    }t                                          d|rt	                      n||           d S )N*COUNTr   )
isinstancestrr   r   r	   )r   r+   r   is_starr   s       r   r   zCount.__init__$   sM    UC((9SE\G">$&&&eLLLLLr   N)r+   r,   r   r-   r.   r/   r$   r%   r&   r   r'   r(   s   @r   r*   r*   #   sM        M M M M M M M M M M Mr   r*   c                  "     e Zd Zdd fdZ xZS )	SumNtermr
   r   r-   c                P    t                                          d||           d S )NSUMr3   r   r   r   r;   r   r   s      r   r   zSum.__init__+   (    E22222r   r7   r;   r
   r   r-   r8   r(   s   @r   r:   r:   *   B        3 3 3 3 3 3 3 3 3 3 3r   r:   c                  "     e Zd Zdd fdZ xZS )	AvgNr;   r
   r   r-   c                P    t                                          d||           d S )NAVGr3   r>   r?   s      r   r   zAvg.__init__0   r@   r   r7   rA   r8   r(   s   @r   rD   rD   /   rB   r   rD   c                  "     e Zd Zdd fdZ xZS )	MinNr;   r
   r   r-   c                P    t                                          d||           d S )NMINr3   r>   r?   s      r   r   zMin.__init__5   r@   r   r7   rA   r8   r(   s   @r   rH   rH   4   rB   r   rH   c                  "     e Zd Zdd fdZ xZS )	MaxNr;   r
   r   r-   c                P    t                                          d||           d S )NMAXr3   r>   r?   s      r   r   zMax.__init__:   r@   r   r7   rA   r8   r(   s   @r   rL   rL   9   rB   r   rL   c                  "     e Zd Zdd fdZ xZS )	StdNr;   r
   r   r-   c                P    t                                          d||           d S )NSTDr3   r>   r?   s      r   r   zStd.__init__?   r@   r   r7   rA   r8   r(   s   @r   rP   rP   >   rB   r   rP   c                  "     e Zd Zdd fdZ xZS )	StdDevNr;   r
   r   r-   c                P    t                                          d||           d S )NSTDDEVr3   r>   r?   s      r   r   zStdDev.__init__D   (    4u55555r   r7   rA   r8   r(   s   @r   rT   rT   C   B        6 6 6 6 6 6 6 6 6 6 6r   rT   c                  "     e Zd Zdd fdZ xZS )	AbsNr;   r
   r   r-   c                P    t                                          d||           d S )NABSr3   r>   r?   s      r   r   zAbs.__init__I   r@   r   r7   rA   r8   r(   s   @r   rZ   rZ   H   rB   r   rZ   c                  "     e Zd Zdd fdZ xZS )	FirstNr;   r
   r   r-   c                P    t                                          d||           d S )NFIRSTr3   r>   r?   s      r   r   zFirst.__init__N   (    $e44444r   r7   rA   r8   r(   s   @r   r^   r^   M   B        5 5 5 5 5 5 5 5 5 5 5r   r^   c                  "     e Zd Zdd fdZ xZS )	LastNr;   r
   r   r-   c                P    t                                          d||           d S )NLASTr3   r>   r?   s      r   r   zLast.__init__S   (    U33333r   r7   rA   r8   r(   s   @r   rd   rd   R   B        4 4 4 4 4 4 4 4 4 4 4r   rd   c                  "     e Zd Zdd fdZ xZS )	SqrtNr;   r
   r   r-   c                P    t                                          d||           d S )NSQRTr3   r>   r?   s      r   r   zSqrt.__init__X   rg   r   r7   rA   r8   r(   s   @r   rj   rj   W   rh   r   rj   c                  "     e Zd Zdd fdZ xZS )	FloorNr;   r
   r   r-   c                P    t                                          d||           d S )NFLOORr3   r>   r?   s      r   r   zFloor.__init__]   ra   r   r7   rA   r8   r(   s   @r   rn   rn   \   rb   r   rn   c                  &     e Zd Zd fd	Zd Z xZS )ApproximatePercentileNc                x    t                                          d||           t          |          | _        d S )NAPPROXIMATE_PERCENTILEr3   )r   r   float
percentile)r   r;   rv   r   r   s       r   r   zApproximatePercentile.__init__b   s6    14uEEE
++r   c                8    d                     | j                  S )Nz(USING PARAMETERS percentile={percentile})rv   )formatrv   r   r   s     r   get_special_params_sqlz,ApproximatePercentile.get_special_params_sqlf   s    9@@DO@\\\r   r7   r$   r%   r&   r   rz   r'   r(   s   @r   rr   rr   a   sS        , , , , , ,] ] ] ] ] ] ]r   rr   c                  &     e Zd Zd fd	Zd Z xZS )CastNc                ^    t                                          d||           || _        d S )NCASTr3   )r   r   as_typer   r;   r   r   r   s       r   r   zCast.__init__l   s-    U333r   c                    t          | j        d          r | j        j        di |n%t          | j                                                  }d                    |          S )Nget_sqlz	AS {type}typer   )hasattrr   r   r5   upperrx   )r   r   type_sqls      r   rz   zCast.get_special_params_sqlp   sc    5<T\95U5Ut'4<'11&111[^_c_k[l[l[r[r[t[t!!x!000r   r7   r{   r(   s   @r   r}   r}   k   sL             1 1 1 1 1 1 1r   r}   c                  &     e Zd Zd fd	Zd Z xZS )ConvertNc                ^    t                                          d||           || _        d S )NCONVERTr3   )r   r   encoding)r   r;   r   r   r   s       r   r   zConvert.__init__v   s-    D666 r   c                B    d                     | j        j                  S )NzUSING {type}r   )rx   r   valuery   s     r   rz   zConvert.get_special_params_sqlz   s    $$$-*=$>>>r   r7   r{   r(   s   @r   r   r   u   sL        ! ! ! ! ! !? ? ? ? ? ? ?r   r   c                        e Zd Zd fd	Z xZS )ToCharNc                R    t                                          d|||           d S )NTO_CHARr3   r>   r   s       r   r   zToChar.__init__   s*    D'?????r   r7   r8   r(   s   @r   r   r   ~   sG        @ @ @ @ @ @ @ @ @ @r   r   c                  "     e Zd Zdd fdZ xZS )	SignedNr;   r
   r   r-   c                d    t                                          |t          j        |           d S Nr3   )r   r   r   SIGNEDr?   s      r   r   zSigned.__init__   s*    xe<<<<<r   r7   rA   r8   r(   s   @r   r   r      sB        = = = = = = = = = = =r   r   c                  "     e Zd Zdd fdZ xZS )	UnsignedNr;   r
   r   r-   c                d    t                                          |t          j        |           d S r   )r   r   r   UNSIGNEDr?   s      r   r   zUnsigned.__init__   s+    x0>>>>>r   r7   rA   r8   r(   s   @r   r   r      sB        ? ? ? ? ? ? ? ? ? ? ?r   r   c                  "     e Zd Zdd fdZ xZS )	DateNr;   r
   r   r-   c                P    t                                          d||           d S )NDATEr3   r>   r?   s      r   r   zDate.__init__   rg   r   r7   rA   r8   r(   s   @r   r   r      rh   r   r   c                        e Zd Zd fd	Z xZS )DateDiffNc                T    t                                          d||||           d S )NDATEDIFFr3   r>   )r   interval
start_dateend_dater   r   s        r   r   zDateDiff.__init__   s,    Xz85QQQQQr   r7   r8   r(   s   @r   r   r      G        R R R R R R R R R Rr   r   c                        e Zd Zd fd	Z xZS )TimeDiffNc                R    t                                          d|||           d S )NTIMEDIFFr3   r>   )r   
start_timeend_timer   r   s       r   r   zTimeDiff.__init__   s*    ZGGGGGr   r7   r8   r(   s   @r   r   r      sG        H H H H H H H H H Hr   r   c                  "     e Zd Zdd fdZ xZS )	DateAddNr;   r
   r   r-   c                    t          |d|          }t                                          dt          |          |||           d S )Nr   DATE_ADDr3   getattrr   r   r   r   	date_partr   r;   r   r   s        r   r   zDateAdd.__init__   sF    Iw	::	\)%<%<hTYZZZZZr   r7   rA   r8   r(   s   @r   r   r      sM        [ [ [ [ [ [ [ [ [ [ [r   r   c                        e Zd Zd fd	Z xZS )ToDateNc                R    t                                          d|||           d S )NTO_DATEr3   r>   )r   r   format_maskr   r   s       r   r   zToDate.__init__   s*    E;eDDDDDr   r7   r8   r(   s   @r   r   r      sG        E E E E E E E E E Er   r   c                  "     e Zd Zdd fdZ xZS )		TimestampNr;   r
   r   r-   c                P    t                                          d||           d S )N	TIMESTAMPr3   r>   r?   s      r   r   zTimestamp.__init__   s(    d%88888r   r7   rA   r8   r(   s   @r   r   r      sB        9 9 9 9 9 9 9 9 9 9 9r   r   c                  "     e Zd Zdd fdZ xZS )	TimestampAddNr;   r
   r   r-   c                    t          |d|          }t                                          dt          |          |||           d S )Nr   TIMESTAMPADDr3   r   r   s        r   r   zTimestampAdd.__init__   sF    Iw	::	i)@)@(DX]^^^^^r   r7   rA   r8   r(   s   @r   r   r      sM        _ _ _ _ _ _ _ _ _ _ _r   r   c                  "     e Zd Zdd fdZ xZS )	AsciiNr;   r
   r   r-   c                P    t                                          d||           d S )NASCIIr3   r>   r?   s      r   r   zAscii.__init__   ra   r   r7   rA   r8   r(   s   @r   r   r      rb   r   r   c                       e Zd Z fdZ xZS )NullIfc                @     t                      j        d||fi | d S )NNULLIFr>   )r   r;   	conditionr   r   s       r   r   zNullIf.__init__   s,    4==f=====r   r8   r(   s   @r   r   r      8        > > > > > > > > >r   r   c                  "     e Zd Zdd fdZ xZS )	BinNr;   r
   r   r-   c                P    t                                          d||           d S )NBINr3   r>   r?   s      r   r   zBin.__init__   r@   r   r7   rA   r8   r(   s   @r   r   r      rB   r   r   c                       e Zd Z fdZ xZS )Concatc                B     t                      j        dg|R i | d S )NCONCATr>   )r   termsr   r   s      r   r   zConcat.__init__   s0    4E444V44444r   r8   r(   s   @r   r   r      s8        5 5 5 5 5 5 5 5 5r   r   c                        e Zd Zd fd	Z xZS )InsertNc                    d ||||fD             \  }}}}t                                          d|||||           d S )Nc                    g | ]}|S r   r   ).0r;   s     r   
<listcomp>z#Insert.__init__.<locals>.<listcomp>   s    %T%T%Ttd%T%T%Tr   INSERTr3   r>   )r   r;   startstopsubtermr   r   s         r   r   zInsert.__init__   sS    %T%TeT77S%T%T%T"eT74gUKKKKKr   r7   r8   r(   s   @r   r   r      sG        L L L L L L L L L Lr   r   c                  "     e Zd Zdd fdZ xZS )	LengthNr;   r
   r   r-   c                P    t                                          d||           d S )NLENGTHr3   r>   r?   s      r   r   zLength.__init__   rW   r   r7   rA   r8   r(   s   @r   r   r      rX   r   r   c                  "     e Zd Zdd fdZ xZS )	UpperNr;   r
   r   r-   c                P    t                                          d||           d S )NUPPERr3   r>   r?   s      r   r   zUpper.__init__   ra   r   r7   rA   r8   r(   s   @r   r   r      rb   r   r   c                  "     e Zd Zdd fdZ xZS )	LowerNr;   r
   r   r-   c                P    t                                          d||           d S )NLOWERr3   r>   r?   s      r   r   zLower.__init__   ra   r   r7   rA   r8   r(   s   @r   r   r      rb   r   r   c                        e Zd Zd fd	Z xZS )	SubstringNc                T    t                                          d||||           d S )N	SUBSTRINGr3   r>   )r   r;   r   r   r   r   s        r   r   zSubstring.__init__   s,    dE4uEEEEEr   r7   r8   r(   s   @r   r   r      sG        F F F F F F F F F Fr   r   c                  "     e Zd Zdd fdZ xZS )	ReverseNr;   r
   r   r-   c                P    t                                          d||           d S )NREVERSEr3   r>   r?   s      r   r   zReverse.__init__   s(    D66666r   r7   rA   r8   r(   s   @r   r   r      sB        7 7 7 7 7 7 7 7 7 7 7r   r   c                  "     e Zd Zdd fdZ xZS )	TrimNr;   r
   r   r-   c                P    t                                          d||           d S )NTRIMr3   r>   r?   s      r   r   zTrim.__init__   rg   r   r7   rA   r8   r(   s   @r   r   r      rh   r   r   c                        e Zd Zd fd	Z xZS )	SplitPartNc                T    t                                          d||||           d S )N
SPLIT_PARTr3   r>   )r   r;   	delimiterindexr   r   s        r   r   zSplitPart.__init__   s,    tYUKKKKKr   r7   r8   r(   s   @r   r   r      sG        L L L L L L L L L Lr   r   c                        e Zd Zd fd	Z xZS )RegexpMatchesNc                T    t                                          d||||           d S )NREGEXP_MATCHESr3   r>   r   r;   pattern	modifiersr   r   s        r   r   zRegexpMatches.__init__   s-    )4)5QQQQQr   NNr8   r(   s   @r   r   r      r   r   r   c                        e Zd Zd fd	Z xZS )
RegexpLikeNc                T    t                                          d||||           d S )NREGEXP_LIKEr3   r>   r  s        r   r   zRegexpLike.__init__   s,    gyNNNNNr   r  r8   r(   s   @r   r  r     sG        O O O O O O O O O Or   r  c                        e Zd Zd fd	Z xZS )ReplaceNc                T    t                                          d||||           d S )NREPLACEr3   r>   )r   r;   find_stringreplace_withr   r   s        r   r   zReplace.__init__   s,    D+|5QQQQQr   r7   r8   r(   s   @r   r  r     r   r   r  c                        e Zd Zd fd	Z xZS )NowNc                N    t                                          d|           d S )NNOWr3   r>   r   r   r   s     r   r   zNow.__init__  s&    e,,,,,r   r7   r8   r(   s   @r   r  r     s=        - - - - - - - - - -r   r  c                        e Zd Zd fd	Z xZS )UtcTimestampNc                N    t                                          d|           d S )NUTC_TIMESTAMPr3   r>   r  s     r   r   zUtcTimestamp.__init__  s&    66666r   r7   r8   r(   s   @r   r  r    s=        7 7 7 7 7 7 7 7 7 7r   r  c                  &     e Zd Zd fd	Zd Z xZS )CurTimestampNc                N    t                                          d|           d S )NCURRENT_TIMESTAMPr3   r>   r  s     r   r   zCurTimestamp.__init__  s'    ,E:::::r   c                    dS )Nr  r   ry   s     r   r   zCurTimestamp.get_function_sql  s
     #"r   r7   )r$   r%   r&   r   r   r'   r(   s   @r   r  r  
  sL        ; ; ; ; ; ;# # # # # # #r   r  c                        e Zd Zd fd	Z xZS )CurDateNc                N    t                                          d|           d S )NCURRENT_DATEr3   r>   r  s     r   r   zCurDate.__init__  &    u55555r   r7   r8   r(   s   @r   r   r     =        6 6 6 6 6 6 6 6 6 6r   r   c                        e Zd Zd fd	Z xZS )CurTimeNc                N    t                                          d|           d S )NCURRENT_TIMEr3   r>   r  s     r   r   zCurTime.__init__  r#  r   r7   r8   r(   s   @r   r&  r&    r$  r   r&  c                  &     e Zd Zd fd	Zd Z xZS )ExtractNc                    t          |d|          }t                                          dt          |          |           || _        d S )Nr   EXTRACTr3   )r   r   r   r   field)r   r   r-  r   r   s       r   r   zExtract.__init__  sF    Iw	::	L$;$;5III


r   c                N    d                      | j        j        di |          S )NzFROM {field})r-  r   )rx   r-  r   ry   s     r   rz   zExtract.get_special_params_sql$  s/    $$+=4:+=+G+G+G+G$HHHr   r7   r{   r(   s   @r   r*  r*    sS             
I I I I I I Ir   r*  c                  "     e Zd Zdd fdZ xZS )	IsNullNr;   r
   r   r-   c                P    t                                          d||           d S )NISNULLr3   r>   r?   s      r   r   zIsNull.__init__*  rW   r   r7   rA   r8   r(   s   @r   r0  r0  )  rX   r   r0  c                       e Zd Z fdZ xZS )Coalescec                D     t                      j        d|g|R i | d S )NCOALESCEr>   )r   r;   default_valuesr   r   s       r   r   zCoalesce.__init__/  s2    TENEEEfEEEEEr   r8   r(   s   @r   r4  r4  .  sA        F F F F F F F F Fr   r4  c                       e Zd Z fdZ xZS )IfNullc                @     t                      j        d||fi | d S )NIFNULLr>   )r   r   r;   r   r   s       r   r   zIfNull.__init__4  s,    9d==f=====r   r8   r(   s   @r   r9  r9  3  r   r   r9  c                  "     e Zd Zdd fdZ xZS )	NVLNr;   r
   r   r-   c                R    t                                          d|||           d S )Nr=  r3   r>   )r   r   r;   r   r   s       r   r   zNVL.__init__9  s*    	4u=====r   r7   rA   r8   r(   s   @r   r=  r=  8  sB        > > > > > > > > > > >r   r=  N)D__doc__
__future__r   pypikar   pypika.enumsr   pypika.termsr   r   r   r	   r
   pypika.utilsr   
__author__	__email__r   r*   r:   rD   rH   rL   rP   rT   rZ   r^   rd   rj   rn   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r&  r*  r0  r4  r9  r=  r   r   r   <module>rG     s	    # " " " " "       ! ! ! ! ! ! N N N N N N N N N N N N N N            
	    .   &M M M M M" M M M3 3 3 3 3
  3 3 3
3 3 3 3 3
 3 3 3
3 3 3 3 3
 3 3 3
3 3 3 3 3
 3 3 3
3 3 3 3 3
 3 3 3
6 6 6 6 6 6 6 6
3 3 3 3 3
 3 3 3
5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4
4 4 4 4 48 4 4 4
5 5 5 5 5H 5 5 5
] ] ] ] ]- ] ] ]1 1 1 1 18 1 1 1? ? ? ? ?h ? ? ?@ @ @ @ @X @ @ @
= = = = =T = = =
? ? ? ? ?t ? ? ?
4 4 4 4 48 4 4 4
R R R R Rx R R R
H H H H Hx H H H
[ [ [ [ [h [ [ [E E E E EX E E E
9 9 9 9 9 9 9 9
_ _ _ _ _8 _ _ _5 5 5 5 5H 5 5 5
> > > > >X > > >
3 3 3 3 3( 3 3 3
5 5 5 5 5X 5 5 5
L L L L LX L L L6 6 6 6 6X 6 6 6
5 5 5 5 5H 5 5 5
5 5 5 5 5H 5 5 5
F F F F F F F F
7 7 7 7 7h 7 7 7
4 4 4 4 48 4 4 4
L L L L L L L L
R R R R RH R R R
O O O O O O O O
R R R R Rh R R R- - - - -( - - -
7 7 7 7 78 7 7 7
# # # # #8 # # #6 6 6 6 6h 6 6 6
6 6 6 6 6h 6 6 6
I I I I Ih I I I6 6 6 6 6X 6 6 6
F F F F Fx F F F
> > > > >X > > >
> > > > >( > > > > >r   