
    2i%                        S r SSKJr  SSKJrJrJrJr  SSKJ	r	  Sr
Sr " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r " S# S$\5      r " S% S&\5      r " S' S(\5      r " S) S*\5      r " S+ S,\5      r " S- S.\5      r " S/ S0\5      r  " S1 S2\5      r! " S3 S4\5      r" " S5 S6\5      r# " S7 S8\5      r$ " S9 S:\5      r% " S; S<\5      r& " S= S>\5      r' " S? S@\5      r( " SA SB\5      r) " SC SD\5      r* " SE SF\5      r+ " SG SH\5      r, " SI SJ\5      r- " SK SL\5      r. " SM SN\5      r/ " SO SP\5      r0 " SQ SR\5      r1 " SS ST\5      r2 " SU SV\5      r3 " SW SX\5      r4 " SY SZ\5      r5 " S[ S\\5      r6 " S] S^\5      r7 " S_ S`\5      r8 " Sa Sb\5      r9 " Sc Sd\5      r: " Se Sf\5      r; " Sg Sh\5      r< " Si Sj\5      r= " Sk Sl\5      r>gm)nz$
Package for SQL functions wrappers
    )SqlTypes)AggregateFunctionFunctionLiteralValueStar)builderzTimothy Heysztheys@kayak.comc                   D   ^  \ rS rSrU 4S jrU 4S jr\S 5       rSrU =r	$ )DistinctOptionFunction   c                 f   > UR                  S5      n[        [        U ]  " U/UQ7SU06  SU l        g )NaliasF)getsuperr
   __init__	_distinct)selfnameargskwargsr   	__class__s        J/home/james-whalen/.local/lib/python3.13/site-packages/pypika/functions.pyr   DistinctOptionFunction.__init__   s2    

7#$d4TNDNN    c                    > [         [        U ]
  " S0 UD6n[        U R                  5      S-   nU R
                  (       a  US U S-   X#S  -   $ U$ )N   z	DISTINCT  )r   r
   get_function_sqllenr   r   )r   r   snr   s       r   r   'DistinctOptionFunction.get_function_sql   sP    ($@J6J		NQ>>Ra5;&2..r   c                     SU l         g )NTr   )r   s    r   distinctDistinctOptionFunction.distinct   s	    r   r#   )
__name__
__module____qualname____firstlineno__r   r   r   r$   __static_attributes____classcell__r   s   @r   r
   r
      s!    
  r   r
   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Count$   c                    > [        U[        5      =(       a    SU:H  n[        [        U ]  SU(       a
  [        5       OUUS9  g )N*COUNTr   )
isinstancestrr   r.   r   r   )r   paramr   is_starr   s       r   r   Count.__init__%   s5    UC(9SE\eT#GwTVEQV#Wr   r   Nr&   r'   r(   r)   r   r*   r+   r,   s   @r   r.   r.   $       X Xr   r.   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Sum+   c                 *   > [         [        U ]  SXS9  g )NSUMr3   )r   r=   r   r   termr   r   s      r   r   Sum.__init__,       c4!%!;r   r   r9   r:   r,   s   @r   r=   r=   +       < <r   r=   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Avg0   c                 *   > [         [        U ]  SXS9  g )NAVGr3   )r   rG   r   rA   s      r   r   Avg.__init__1   rD   r   r   r9   r:   r,   s   @r   rG   rG   0   rE   r   rG   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Min5   c                 *   > [         [        U ]  SXS9  g )NMINr3   )r   rM   r   rA   s      r   r   Min.__init__6   rD   r   r   r9   r:   r,   s   @r   rM   rM   5   rE   r   rM   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Max:   c                 *   > [         [        U ]  SXS9  g )NMAXr3   )r   rS   r   rA   s      r   r   Max.__init__;   rD   r   r   r9   r:   r,   s   @r   rS   rS   :   rE   r   rS   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Std?   c                 *   > [         [        U ]  SXS9  g )NSTDr3   )r   rY   r   rA   s      r   r   Std.__init__@   rD   r   r   r9   r:   r,   s   @r   rY   rY   ?   rE   r   rY   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )StdDevD   c                 *   > [         [        U ]  SXS9  g )NSTDDEVr3   )r   r_   r   rA   s      r   r   StdDev.__init__E       fd$Xt$Ar   r   r9   r:   r,   s   @r   r_   r_   D       B Br   r_   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )AbsI   c                 *   > [         [        U ]  SXS9  g )NABSr3   )r   rg   r   rA   s      r   r   Abs.__init__J   rD   r   r   r9   r:   r,   s   @r   rg   rg   I   rE   r   rg   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )FirstN   c                 *   > [         [        U ]  SXS9  g )NFIRSTr3   )r   rm   r   rA   s      r   r   First.__init__O       eT#GT#?r   r   r9   r:   r,   s   @r   rm   rm   N       @ @r   rm   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )LastS   c                 *   > [         [        U ]  SXS9  g )NLASTr3   )r   ru   r   rA   s      r   r   Last.__init__T       dD"64"=r   r   r9   r:   r,   s   @r   ru   ru   S       > >r   ru   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )SqrtX   c                 *   > [         [        U ]  SXS9  g )NSQRTr3   )r   r}   r   rA   s      r   r   Sqrt.__init__Y   rz   r   r   r9   r:   r,   s   @r   r}   r}   X   r{   r   r}   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Floor]   c                 *   > [         [        U ]  SXS9  g )NFLOORr3   )r   r   r   rA   s      r   r   Floor.__init__^   rr   r   r   r9   r:   r,   s   @r   r   r   ]   rs   r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ApproximatePercentileb   c                 J   > [         [        U ]  SXS9  [        U5      U l        g )NAPPROXIMATE_PERCENTILEr3   )r   r   r   float
percentile)r   rB   r   r   r   s       r   r   ApproximatePercentile.__init__c   s%    #T34Ld3`
+r   c                 4    SR                  U R                  S9$ )Nz(USING PARAMETERS percentile={percentile}r   )formatr   r   r   s     r   get_special_params_sql,ApproximatePercentile.get_special_params_sqlg   s    9@@DOO@\\r   r   r9   r&   r'   r(   r)   r   r   r*   r+   r,   s   @r   r   r   b   s    ,] ]r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Castl   c                 6   > [         [        U ]  SXS9  X l        g )NCASTr3   )r   r   r   as_typer   rB   r   r   r   s       r   r   Cast.__init__m   s    dD"64"=r   c                     [        U R                  S5      (       a  U R                  R                  " S0 UD6O"[        U R                  5      R	                  5       nSR                  US9$ )Nget_sqlz	AS {type}typer   )hasattrr   r   r5   upperr   )r   r   type_sqls      r   r   Cast.get_special_params_sqlq   sU    5<T\\95U5U4<<''1&1[^_c_k_k[l[r[r[t!!x!00r   )r   r9   r   r,   s   @r   r   r   l   s    1 1r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Convertw   c                 6   > [         [        U ]  SXS9  X l        g )NCONVERTr3   )r   r   r   encoding)r   rB   r   r   r   s       r   r   Convert.__init__x   s    gt%i%C r   c                 H    SR                  U R                  R                  S9$ )NzUSING {type}r   )r   r   valuer   s     r   r   Convert.get_special_params_sql|   s     $$$--*=*=$>>r   )r   r9   r   r,   s   @r   r   r   w   s    !? ?r   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ToChar   c                 ,   > [         [        U ]  SXUS9  g )NTO_CHARr3   )r   r   r   r   s       r   r   ToChar.__init__   s    fd$YU$Kr   r   r9   r:   r,   s   @r   r   r      s    L Lr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Signed   c                 H   > [         [        U ]  U[        R                  US9  g Nr3   )r   r   r   r   SIGNEDrA   s      r   r   Signed.__init__   s    fd$T8??%$Hr   r   r9   r:   r,   s   @r   r   r          I Ir   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Unsigned   c                 H   > [         [        U ]  U[        R                  US9  g r   )r   r   r   r   UNSIGNEDrA   s      r   r   Unsigned.__init__   s    h&tX->->e&Lr   r   r9   r:   r,   s   @r   r   r      s    M Mr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Date   c                 *   > [         [        U ]  SXS9  g )NDATEr3   )r   r   r   rA   s      r   r   Date.__init__   rz   r   r   r9   r:   r,   s   @r   r   r      r{   r   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DateDiff   c                 ,   > [         [        U ]  SXX4S9  g )NDATEDIFFr3   )r   r   r   )r   interval
start_dateend_dater   r   s        r   r   DateDiff.__init__   s    h&z8&_r   r   r9   r:   r,   s   @r   r   r      s    ` `r   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )TimeDiff   c                 ,   > [         [        U ]  SXUS9  g )NTIMEDIFFr3   )r   r   r   )r   
start_timeend_timer   r   s       r   r   TimeDiff.__init__   s    h&z:u&Ur   r   r9   r:   r,   s   @r   r   r      s    V Vr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DateAdd   c                 Z   > [        USU5      n[        [        U ]  S[	        U5      X#US9  g )Nr   DATE_ADDr3   )getattrr   r   r   r   r   	date_partr   rB   r   r   s        r   r   DateAdd.__init__   s/    Iw	:	gt%j,y2I8af%gr   r   r9   r:   r,   s   @r   r   r      s    h hr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ToDate   c                 ,   > [         [        U ]  SXUS9  g )NTO_DATEr3   )r   r   r   )r   r   format_maskr   r   s       r   r   ToDate.__init__   s    fd$Y%$Pr   r   r9   r:   r,   s   @r   r   r      s    Q Qr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )	Timestamp   c                 *   > [         [        U ]  SXS9  g )N	TIMESTAMPr3   )r   r   r   rA   s      r   r   Timestamp.__init__   s    i'T'Gr   r   r9   r:   r,   s   @r   r   r      s    H Hr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )TimestampAdd   c                 Z   > [        USU5      n[        [        U ]  S[	        U5      X#US9  g )Nr   TIMESTAMPADDr3   )r   r   r   r   r   r   s        r   r   TimestampAdd.__init__   s0    Iw	:	lD*><	;RT\jo*pr   r   r9   r:   r,   s   @r   r   r      s    q qr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Ascii   c                 *   > [         [        U ]  SXS9  g )NASCIIr3   )r   r   r   rA   s      r   r   Ascii.__init__   rr   r   r   r9   r:   r,   s   @r   r   r      rs   r   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NullIf   c                 2   > [         [        U ]
  " SX40 UD6  g )NNULLIF)r   r   r   )r   rB   	conditionr   r   s       r   r   NullIf.__init__   s    fd$XtI&Ir   r   r:   r,   s   @r   r   r          J Jr   r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Bin   c                 *   > [         [        U ]  SXS9  g )NBINr3   )r   r  r   rA   s      r   r   Bin.__init__   rD   r   r   r9   r:   r,   s   @r   r  r     rE   r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )Concat   c                 6   > [         [        U ]
  " S/UQ70 UD6  g )NCONCAT)r   r  r   )r   termsr   r   s      r   r   Concat.__init__   s    fd$X@@@r   r   r:   r,   s   @r   r  r     s    A Ar   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Insert   c           	      f   > XX44 Vs/ s H  oPM     snu  pp4[         [        U ]  SXX4US9  g s  snf )NINSERTr3   )r   r  r   )r   rB   startstopsubtermr   r   s         r   r   Insert.__init__   sB    8<T7S%T7Std7S%T"Tfd$XtDQV$W &Us   .r   r9   r:   r,   s   @r   r  r     r;   r   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Length   c                 *   > [         [        U ]  SXS9  g )NLENGTHr3   )r   r  r   rA   s      r   r   Length.__init__   rd   r   r   r9   r:   r,   s   @r   r  r     re   r   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Upper   c                 *   > [         [        U ]  SXS9  g )NUPPERr3   )r   r#  r   rA   s      r   r   Upper.__init__   rr   r   r   r9   r:   r,   s   @r   r#  r#     rs   r   r#  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Lower   c                 *   > [         [        U ]  SXS9  g )NLOWERr3   )r   r)  r   rA   s      r   r   Lower.__init__   rr   r   r   r9   r:   r,   s   @r   r)  r)     rs   r   r)  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )	Substring   c                 ,   > [         [        U ]  SXX4S9  g )N	SUBSTRINGr3   )r   r/  r   )r   rB   r  r  r   r   s        r   r   Substring.__init__   s    i'T$'Tr   r   r9   r:   r,   s   @r   r/  r/     s    U Ur   r/  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Reverse   c                 *   > [         [        U ]  SXS9  g )NREVERSEr3   )r   r5  r   rA   s      r   r   Reverse.__init__   s    gt%i%Cr   r   r9   r:   r,   s   @r   r5  r5     s    D Dr   r5  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Trim   c                 *   > [         [        U ]  SXS9  g )NTRIMr3   )r   r;  r   rA   s      r   r   Trim.__init__   rz   r   r   r9   r:   r,   s   @r   r;  r;     r{   r   r;  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )	SplitPart   c                 ,   > [         [        U ]  SXX4S9  g )N
SPLIT_PARTr3   )r   rA  r   )r   rB   	delimiterindexr   r   s        r   r   SplitPart.__init__   s    i'du'Zr   r   r9   r:   r,   s   @r   rA  rA     s    [ [r   rA  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )RegexpMatches   c                 ,   > [         [        U ]  SXX4S9  g )NREGEXP_MATCHESr3   )r   rI  r   r   rB   pattern	modifiersr   r   s        r   r   RegexpMatches.__init__   s    mT+,<dY+dr   r   NNr:   r,   s   @r   rI  rI     s    e er   rI  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )
RegexpLike   c                 ,   > [         [        U ]  SXX4S9  g )NREGEXP_LIKEr3   )r   rS  r   rM  s        r   r   RegexpLike.__init__   s    j$(y(^r   r   rQ  r:   r,   s   @r   rS  rS         _ _r   rS  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Replace   c                 ,   > [         [        U ]  SXX4S9  g )NREPLACEr3   )r   rZ  r   )r   rB   find_stringreplace_withr   r   s        r   r   Replace.__init__   s    gt%iL%^r   r   r9   r:   r,   s   @r   rZ  rZ     rX  r   rZ  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )Nowi  c                 *   > [         [        U ]  SUS9  g )NNOWr3   )r   rb  r   r   r   r   s     r   r   Now.__init__  s    c4!%u!5r   r   r9   r:   r,   s   @r   rb  rb    s    6 6r   rb  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )UtcTimestampi  c                 *   > [         [        U ]  SUS9  g )NUTC_TIMESTAMPr3   )r   rh  r   re  s     r   r   UtcTimestamp.__init__  s    lD*?%*Hr   r   r9   r:   r,   s   @r   rh  rh    r   r   rh  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )CurTimestampi  c                 *   > [         [        U ]  SUS9  g )NCURRENT_TIMESTAMPr3   )r   rm  r   re  s     r   r   CurTimestamp.__init__  s    lD*+>e*Lr   c                     g)Nro  r   r   s     r   r   CurTimestamp.get_function_sql  s     #r   r   r9   )r&   r'   r(   r)   r   r   r*   r+   r,   s   @r   rm  rm    s    M# #r   rm  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )CurDatei  c                 *   > [         [        U ]  SUS9  g )NCURRENT_DATEr3   )r   rt  r   re  s     r   r   CurDate.__init__      gt%nE%Br   r   r9   r:   r,   s   @r   rt  rt        C Cr   rt  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )CurTimei  c                 *   > [         [        U ]  SUS9  g )NCURRENT_TIMEr3   )r   r{  r   re  s     r   r   CurTime.__init__  rx  r   r   r9   r:   r,   s   @r   r{  r{    ry  r   r{  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Extracti   c                 d   > [        USU5      n[        [        U ]  S[	        U5      US9  X l        g )Nr   EXTRACTr3   )r   r   r  r   r   field)r   r   r  r   r   s       r   r   Extract.__init__!  s2    Iw	:	gt%ii1HPU%V
r   c                 T    SR                  U R                  R                  " S0 UD6S9$ )NzFROM {field}r  r   )r   r  r   r   s     r   r   Extract.get_special_params_sql&  s(    $$4::+=+=+G+G$HHr   r  r9   r   r,   s   @r   r  r     s    
I Ir   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )IsNulli+  c                 *   > [         [        U ]  SXS9  g )NISNULLr3   )r   r  r   rA   s      r   r   IsNull.__init__,  rd   r   r   r9   r:   r,   s   @r   r  r  +  re   r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )Coalescei0  c                 8   > [         [        U ]
  " SU/UQ70 UD6  g )NCOALESCE)r   r  r   )r   rB   default_valuesr   r   s       r   r   Coalesce.__init__1  s    h&z4S.SFSr   r   r:   r,   s   @r   r  r  0  s    T Tr   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )IfNulli5  c                 2   > [         [        U ]
  " SX40 UD6  g )NIFNULL)r   r  r   )r   r  rB   r   r   s       r   r   IfNull.__init__6  s    fd$XyI&Ir   r   r:   r,   s   @r   r  r  5  r  r   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )NVLi:  c                 ,   > [         [        U ]  SXUS9  g )Nr  r3   )r   r  r   )r   r  rB   r   r   s       r   r   NVL.__init__;  s    c4!%!Fr   r   r9   r:   r,   s   @r   r  r  :  s    G Gr   r  N)?__doc__pypika.enumsr   pypika.termsr   r   r   r   pypika.utilsr   
__author__	__email__r
   r.   r=   rG   rM   rS   rY   r_   rg   rm   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r)  r/  r5  r;  rA  rI  rS  rZ  rb  rh  rm  rt  r{  r  r  r  r  r  r   r   r   <module>r     s   "  !
	. &X" X<
  <
<
 <
<
 <
<
 <
<
 <
B B
<
 <
@ @
> >
>8 >
@H @
]- ]18 1?h ?LX L
IT I
Mt M
>8 >
`x `
Vx V
hh hQX Q
H H
q8 q@H @
JX J
<( <
AX A
XX XBX B
@H @
@H @
U U
Dh D
>8 >
[ [
eH e
_ _
_h _6( 6
I8 I
#8 #Ch C
Ch C
Ih IBX B
Tx T
JX J
G( Gr   