o
    Rh%                     @   sp  d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 dZ
dZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZ G d1d2 d2eZ!G d3d4 d4eZ"G d5d6 d6eZ#G d7d8 d8eZ$G d9d: d:eZ%G d;d< d<eZ&G d=d> d>eZ'G d?d@ d@eZ(G dAdB dBeZ)G dCdD dDeZ*G dEdF dFeZ+G dGdH dHeZ,G dIdJ dJeZ-G dKdL dLeZ.G dMdN dNeZ/G dOdP dPeZ0G dQdR dReZ1G dSdT dTeZ2G dUdV dVeZ3G dWdX dXeZ4G dYdZ dZeZ5G d[d\ d\eZ6G d]d^ d^eZ7G d_d` d`eZ8G dadb dbeZ9G dcdd ddeZ:G dedf dfeZ;G dgdh dheZ<G didj djeZ=G dkdl dleZ>dmS )nz$
Package for SQL functions wrappers
    )SqlTypes)AggregateFunctionFunctionLiteralValueStar)builderzTimothy Heysztheys@kayak.comc                       s4   e Zd Z fddZ fddZedd Z  ZS )DistinctOptionFunctionc                    s2   | d}tt| j|g|R d|i d| _d S )NaliasF)getsuperr   __init__	_distinct)selfnameargskwargsr	   	__class__ R/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/pypika/functions.pyr      s   

zDistinctOptionFunction.__init__c                    sJ   t t| jdi |}t| jd }| jr#|d | d ||d   S |S )N   z	DISTINCT r   )r   r   get_function_sqllenr   r   )r   r   snr   r   r   r      s
   z'DistinctOptionFunction.get_function_sqlc                 C   s
   d| _ d S )NT)r   )r   r   r   r   distinct   s   
zDistinctOptionFunction.distinct)__name__
__module____qualname__r   r   r   r   __classcell__r   r   r   r   r      s
    r   c                          e Zd Zd fdd	Z  ZS )CountNc                    s6   t |tod|k}tt| jd|rt n||d d S )N*COUNTr	   )
isinstancestrr   r!   r   r   )r   paramr	   is_starr   r   r   r   %   s   $zCount.__init__Nr   r   r   r   r   r   r   r   r   r!   $       r!   c                       r    )SumNc                       t t| jd||d d S )NSUMr$   )r   r,   r   r   termr	   r   r   r   r   ,      zSum.__init__r)   r*   r   r   r   r   r,   +   r+   r,   c                       r    )AvgNc                    r-   )NAVGr$   )r   r2   r   r/   r   r   r   r   1   r1   zAvg.__init__r)   r*   r   r   r   r   r2   0   r+   r2   c                       r    )MinNc                    r-   )NMINr$   )r   r4   r   r/   r   r   r   r   6   r1   zMin.__init__r)   r*   r   r   r   r   r4   5   r+   r4   c                       r    )MaxNc                    r-   )NMAXr$   )r   r6   r   r/   r   r   r   r   ;   r1   zMax.__init__r)   r*   r   r   r   r   r6   :   r+   r6   c                       r    )StdNc                    r-   )NSTDr$   )r   r8   r   r/   r   r   r   r   @   r1   zStd.__init__r)   r*   r   r   r   r   r8   ?   r+   r8   c                       r    )StdDevNc                    r-   )NSTDDEVr$   )r   r:   r   r/   r   r   r   r   E   r1   zStdDev.__init__r)   r*   r   r   r   r   r:   D   r+   r:   c                       r    )AbsNc                    r-   )NABSr$   )r   r<   r   r/   r   r   r   r   J   r1   zAbs.__init__r)   r*   r   r   r   r   r<   I   r+   r<   c                       r    )FirstNc                    r-   )NFIRSTr$   )r   r>   r   r/   r   r   r   r   O   r1   zFirst.__init__r)   r*   r   r   r   r   r>   N   r+   r>   c                       r    )LastNc                    r-   )NLASTr$   )r   r@   r   r/   r   r   r   r   T   r1   zLast.__init__r)   r*   r   r   r   r   r@   S   r+   r@   c                       r    )SqrtNc                    r-   )NSQRTr$   )r   rB   r   r/   r   r   r   r   Y   r1   zSqrt.__init__r)   r*   r   r   r   r   rB   X   r+   rB   c                       r    )FloorNc                    r-   )NFLOORr$   )r   rD   r   r/   r   r   r   r   ^   r1   zFloor.__init__r)   r*   r   r   r   r   rD   ]   r+   rD   c                       &   e Zd Zd fdd	Zdd Z  ZS )ApproximatePercentileNc                    s$   t t| jd||d t|| _d S )NAPPROXIMATE_PERCENTILEr$   )r   rG   r   float
percentile)r   r0   rJ   r	   r   r   r   r   c   s   zApproximatePercentile.__init__c                 K   s   dj | jdS )Nz(USING PARAMETERS percentile={percentile})rJ   )formatrJ   r   r   r   r   r   get_special_params_sqlg   s   z,ApproximatePercentile.get_special_params_sqlr)   r   r   r   r   rM   r   r   r   r   r   rG   b       rG   c                       rF   )CastNc                        t t| jd||d || _d S )NCASTr$   )r   rP   r   as_typer   r0   rS   r	   r   r   r   r   m      
zCast.__init__c                 K   s8   t | jdr| jjdi |nt| j }dj|dS )Nget_sqlz	AS {type}typer   )hasattrrS   rV   r&   upperrK   )r   r   type_sqlr   r   r   rM   q   s   ,zCast.get_special_params_sqlr)   rN   r   r   r   r   rP   l   rO   rP   c                       rF   )ConvertNc                    rQ   )NCONVERTr$   )r   r\   r   encoding)r   r0   r^   r	   r   r   r   r   x   rU   zConvert.__init__c                 K   s   dj | jjdS )NzUSING {type}rW   )rK   r^   valuerL   r   r   r   rM   |   s   zConvert.get_special_params_sqlr)   rN   r   r   r   r   r\   w   rO   r\   c                       r    )ToCharNc                       t t| jd|||d d S )NTO_CHARr$   )r   r`   r   rT   r   r   r   r         zToChar.__init__r)   r*   r   r   r   r   r`      r+   r`   c                       r    )SignedNc                       t t| j|tj|d d S Nr$   )r   rd   r   r   SIGNEDr/   r   r   r   r      rc   zSigned.__init__r)   r*   r   r   r   r   rd      r+   rd   c                       r    )UnsignedNc                    re   rf   )r   rh   r   r   UNSIGNEDr/   r   r   r   r      rc   zUnsigned.__init__r)   r*   r   r   r   r   rh      r+   rh   c                       r    )DateNc                    r-   )NDATEr$   )r   rj   r   r/   r   r   r   r      r1   zDate.__init__r)   r*   r   r   r   r   rj      r+   rj   c                       r    )DateDiffNc                       t t| jd||||d d S )NDATEDIFFr$   )r   rl   r   )r   interval
start_dateend_dater	   r   r   r   r         zDateDiff.__init__r)   r*   r   r   r   r   rl      r+   rl   c                       r    )TimeDiffNc                    ra   )NTIMEDIFFr$   )r   rs   r   )r   
start_timeend_timer	   r   r   r   r      rc   zTimeDiff.__init__r)   r*   r   r   r   r   rs      r+   rs   c                       r    )DateAddNc                    .   t |d|}tt| jdt||||d d S )Nr_   DATE_ADDr$   )getattrr   rw   r   r   r   	date_partro   r0   r	   r   r   r   r         "zDateAdd.__init__r)   r*   r   r   r   r   rw      r+   rw   c                       r    )ToDateNc                    ra   )NTO_DATEr$   )r   r~   r   )r   r_   format_maskr	   r   r   r   r      rc   zToDate.__init__r)   r*   r   r   r   r   r~      r+   r~   c                       r    )	TimestampNc                    r-   )N	TIMESTAMPr$   )r   r   r   r/   r   r   r   r      r1   zTimestamp.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )TimestampAddNc                    rx   )Nr_   TIMESTAMPADDr$   )rz   r   r   r   r   r{   r   r   r   r      r}   zTimestampAdd.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )AsciiNc                    r-   )NASCIIr$   )r   r   r   r/   r   r   r   r      r1   zAscii.__init__r)   r*   r   r   r   r   r      r+   r   c                          e Zd Z fddZ  ZS )NullIfc                        t t| jd||fi | d S )NNULLIF)r   r   r   )r   r0   	conditionr   r   r   r   r          zNullIf.__init__r*   r   r   r   r   r          r   c                       r    )BinNc                    r-   )NBINr$   )r   r   r   r/   r   r   r   r      r1   zBin.__init__r)   r*   r   r   r   r   r      r+   r   c                       r   )Concatc                    s"   t t| jdg|R i | d S )NCONCAT)r   r   r   )r   termsr   r   r   r   r      s   "zConcat.__init__r*   r   r   r   r   r      r   r   c                       r    )InsertNc                    s>   dd ||||fD \}}}}t t| jd|||||d d S )Nc                 S   s   g | ]}|qS r   r   ).0r0   r   r   r   
<listcomp>   s    z#Insert.__init__.<locals>.<listcomp>INSERTr$   )r   r   r   )r   r0   startstopsubtermr	   r   r   r   r      s    zInsert.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )LengthNc                    r-   )NLENGTHr$   )r   r   r   r/   r   r   r   r      r1   zLength.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )UpperNc                    r-   )NUPPERr$   )r   r   r   r/   r   r   r   r      r1   zUpper.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )LowerNc                    r-   )NLOWERr$   )r   r   r   r/   r   r   r   r      r1   zLower.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )	SubstringNc                    rm   )N	SUBSTRINGr$   )r   r   r   )r   r0   r   r   r	   r   r   r   r      rr   zSubstring.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )ReverseNc                    r-   )NREVERSEr$   )r   r   r   r/   r   r   r   r      r1   zReverse.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )TrimNc                    r-   )NTRIMr$   )r   r   r   r/   r   r   r   r      r1   zTrim.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )	SplitPartNc                    rm   )N
SPLIT_PARTr$   )r   r   r   )r   r0   	delimiterindexr	   r   r   r   r      rr   zSplitPart.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )RegexpMatchesNc                    rm   )NREGEXP_MATCHESr$   )r   r   r   r   r0   pattern	modifiersr	   r   r   r   r      rr   zRegexpMatches.__init__NNr*   r   r   r   r   r      r+   r   c                       r    )
RegexpLikeNc                    rm   )NREGEXP_LIKEr$   )r   r   r   r   r   r   r   r      rr   zRegexpLike.__init__r   r*   r   r   r   r   r      r+   r   c                       r    )ReplaceNc                    rm   )NREPLACEr$   )r   r   r   )r   r0   find_stringreplace_withr	   r   r   r   r      rr   zReplace.__init__r)   r*   r   r   r   r   r      r+   r   c                       r    )NowNc                       t t| jd|d d S )NNOWr$   )r   r   r   r   r	   r   r   r   r        zNow.__init__r)   r*   r   r   r   r   r     r+   r   c                       r    )UtcTimestampNc                    r   )NUTC_TIMESTAMPr$   )r   r   r   r   r   r   r   r     r   zUtcTimestamp.__init__r)   r*   r   r   r   r   r     r+   r   c                       rF   )CurTimestampNc                    r   )NCURRENT_TIMESTAMPr$   )r   r   r   r   r   r   r   r     r   zCurTimestamp.__init__c                 K   s   dS )Nr   r   rL   r   r   r   r     s   zCurTimestamp.get_function_sqlr)   )r   r   r   r   r   r   r   r   r   r   r     s    r   c                       r    )CurDateNc                    r   )NCURRENT_DATEr$   )r   r   r   r   r   r   r   r     r   zCurDate.__init__r)   r*   r   r   r   r   r     r+   r   c                       r    )CurTimeNc                    r   )NCURRENT_TIMEr$   )r   r   r   r   r   r   r   r     r   zCurTime.__init__r)   r*   r   r   r   r   r     r+   r   c                       rF   )ExtractNc                    s0   t |d|}tt| jdt||d || _d S )Nr_   EXTRACTr$   )rz   r   r   r   r   field)r   r|   r   r	   r   r   r   r   !  s   
zExtract.__init__c                 K   s   dj | jjdi |dS )NzFROM {field})r   r   )rK   r   rV   rL   r   r   r   rM   &  r1   zExtract.get_special_params_sqlr)   rN   r   r   r   r   r      s    r   c                       r    )IsNullNc                    r-   )NISNULLr$   )r   r   r   r/   r   r   r   r   ,  r1   zIsNull.__init__r)   r*   r   r   r   r   r   +  r+   r   c                       r   )Coalescec                    s$   t t| jd|g|R i | d S )NCOALESCE)r   r   r   )r   r0   default_valuesr   r   r   r   r   1  s   $zCoalesce.__init__r*   r   r   r   r   r   0  r   r   c                       r   )IfNullc                    r   )NIFNULL)r   r   r   )r   r   r0   r   r   r   r   r   6  r   zIfNull.__init__r*   r   r   r   r   r   5  r   r   c                       r    )NVLNc                    ra   )Nr   r$   )r   r   r   )r   r   r0   r	   r   r   r   r   ;  rc   zNVL.__init__r)   r*   r   r   r   r   r   :  r+   r   N)?__doc__pypika.enumsr   pypika.termsr   r   r   r   pypika.utilsr   
__author__	__email__r   r!   r,   r2   r4   r6   r8   r:   r<   r>   r@   rB   rD   rG   rP   r\   r`   rd   rh   rj   rl   rs   rw   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   <module>   sr    
	
