o
    vi;&                     @  s  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 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/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	Z0G dKdL dLe	Z1G dMdN dNe	Z2G dOdP dPe	Z3G dQdR dRe	Z4G dSdT dTe	Z5G dUdV dVe	Z6G dWdX dXe	Z7G dYdZ dZe	Z8G d[d\ d\e	Z9G 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	ZAG dmdn dne	ZBdoS )pz$
Package for SQL functions wrappers
    )annotations)Field)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                   s.   | d}t j|g|R d|i d| _d S )NaliasF)getsuper__init__	_distinct)selfnameargskwargsr   	__class__ O/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/pypika/functions.pyr      s   

zDistinctOptionFunction.__init__c                   sF   t  jdi |}t| jd }| jr!|d | d ||d   S |S )N   z	DISTINCT 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                      s    e Zd Zd
d fdd	Z  ZS )CountNparamstr | Fieldr   
str | NonereturnNonec                   s2   t |tod|k}t jd|rt n||d d S )N*COUNTr   )
isinstancestrr   r   r   )r   r#   r   is_starr   r   r   r   $   s    zCount.__init__N)r#   r$   r   r%   r&   r'   r   r   r    r   r!   r   r   r   r   r"   #       r"   c                          e Zd Zdd	 fddZ  ZS )
SumNtermr$   r   r%   c                      t  jd||d d S )NSUMr*   r   r   r   r3   r   r   r   r   r   +      zSum.__init__r.   r3   r$   r   r%   r/   r   r   r   r   r2   *   r0   r2   c                      r1   )
AvgNr3   r$   r   r%   c                   r4   )NAVGr*   r6   r7   r   r   r   r   0   r8   zAvg.__init__r.   r9   r/   r   r   r   r   r:   /   r0   r:   c                      r1   )
MinNr3   r$   r   r%   c                   r4   )NMINr*   r6   r7   r   r   r   r   5   r8   zMin.__init__r.   r9   r/   r   r   r   r   r<   4   r0   r<   c                      r1   )
MaxNr3   r$   r   r%   c                   r4   )NMAXr*   r6   r7   r   r   r   r   :   r8   zMax.__init__r.   r9   r/   r   r   r   r   r>   9   r0   r>   c                      r1   )
StdNr3   r$   r   r%   c                   r4   )NSTDr*   r6   r7   r   r   r   r   ?   r8   zStd.__init__r.   r9   r/   r   r   r   r   r@   >   r0   r@   c                      r1   )
StdDevNr3   r$   r   r%   c                   r4   )NSTDDEVr*   r6   r7   r   r   r   r   D   r8   zStdDev.__init__r.   r9   r/   r   r   r   r   rB   C   r0   rB   c                      r1   )
AbsNr3   r$   r   r%   c                   r4   )NABSr*   r6   r7   r   r   r   r   I   r8   zAbs.__init__r.   r9   r/   r   r   r   r   rD   H   r0   rD   c                      r1   )
FirstNr3   r$   r   r%   c                   r4   )NFIRSTr*   r6   r7   r   r   r   r   N   r8   zFirst.__init__r.   r9   r/   r   r   r   r   rF   M   r0   rF   c                      r1   )
LastNr3   r$   r   r%   c                   r4   )NLASTr*   r6   r7   r   r   r   r   S   r8   zLast.__init__r.   r9   r/   r   r   r   r   rH   R   r0   rH   c                      r1   )
SqrtNr3   r$   r   r%   c                   r4   )NSQRTr*   r6   r7   r   r   r   r   X   r8   zSqrt.__init__r.   r9   r/   r   r   r   r   rJ   W   r0   rJ   c                      r1   )
FloorNr3   r$   r   r%   c                   r4   )NFLOORr*   r6   r7   r   r   r   r   ]   r8   zFloor.__init__r.   r9   r/   r   r   r   r   rL   \   r0   rL   c                      &   e Zd Zd fdd	Zdd Z  ZS )ApproximatePercentileNc                   s    t  jd||d t|| _d S )NAPPROXIMATE_PERCENTILEr*   )r   r   float
percentile)r   r3   rR   r   r   r   r   r   b   s   zApproximatePercentile.__init__c                 K  s   dj | jdS )Nz(USING PARAMETERS percentile={percentile})rR   )formatrR   r   r   r   r   r   get_special_params_sqlf   s   z,ApproximatePercentile.get_special_params_sqlr.   r   r   r    r   rU   r!   r   r   r   r   rO   a       rO   c                      rN   )CastNc                      t  jd||d || _d S )NCASTr*   )r   r   as_typer   r3   r[   r   r   r   r   r   l      
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   )hasattrr[   r^   r,   upperrS   )r   r   type_sqlr   r   r   rU   p   s   ,zCast.get_special_params_sqlr.   rV   r   r   r   r   rX   k   rW   rX   c                      rN   )ConvertNc                   rY   )NCONVERTr*   )r   r   encoding)r   r3   rf   r   r   r   r   r   v   r]   zConvert.__init__c                 K  s   dj | jjdS )NzUSING {type}r_   )rS   rf   valuerT   r   r   r   rU   z   s   zConvert.get_special_params_sqlr.   rV   r   r   r   r   rd   u   rW   rd   c                         e Zd Zd fdd	Z  ZS )ToCharNc                      t  jd|||d d S )NTO_CHARr*   r6   r\   r   r   r   r         zToChar.__init__r.   r/   r   r   r   r   ri   ~       ri   c                      r1   )
SignedNr3   r$   r   r%   c                      t  j|tj|d d S Nr*   )r   r   r   SIGNEDr7   r   r   r   r      rl   zSigned.__init__r.   r9   r/   r   r   r   r   rn      r0   rn   c                      r1   )
UnsignedNr3   r$   r   r%   c                   ro   rp   )r   r   r   UNSIGNEDr7   r   r   r   r      rl   zUnsigned.__init__r.   r9   r/   r   r   r   r   rr      r0   rr   c                      r1   )
DateNr3   r$   r   r%   c                   r4   )NDATEr*   r6   r7   r   r   r   r      r8   zDate.__init__r.   r9   r/   r   r   r   r   rt      r0   rt   c                      rh   )DateDiffNc                      t  jd||||d d S )NDATEDIFFr*   r6   )r   interval
start_dateend_dater   r   r   r   r         zDateDiff.__init__r.   r/   r   r   r   r   rv      rm   rv   c                      rh   )TimeDiffNc                   rj   )NTIMEDIFFr*   r6   )r   
start_timeend_timer   r   r   r   r      rl   zTimeDiff.__init__r.   r/   r   r   r   r   r}      rm   r}   c                      r1   )
DateAddNr3   r,   r   r%   c                   *   t |d|}t jdt||||d d S )Nrg   DATE_ADDr*   getattrr   r   r   r   	date_partry   r3   r   r   r   r   r         zDateAdd.__init__r.   r3   r,   r   r%   r/   r   r   r   r   r      r0   r   c                      rh   )ToDateNc                   rj   )NTO_DATEr*   r6   )r   rg   format_maskr   r   r   r   r      rl   zToDate.__init__r.   r/   r   r   r   r   r      rm   r   c                      r1   )
	TimestampNr3   r$   r   r%   c                   r4   )N	TIMESTAMPr*   r6   r7   r   r   r   r      r8   zTimestamp.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      r1   )
TimestampAddNr3   r,   r   r%   c                   r   )Nrg   TIMESTAMPADDr*   r   r   r   r   r   r      r   zTimestampAdd.__init__r.   r   r/   r   r   r   r   r      r0   r   c                      r1   )
AsciiNr3   r$   r   r%   c                   r4   )NASCIIr*   r6   r7   r   r   r   r      r8   zAscii.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                         e Zd Z fddZ  ZS )NullIfc                      t  jd||fi | d S )NNULLIFr6   )r   r3   	conditionr   r   r   r   r         zNullIf.__init__r/   r   r   r   r   r          r   c                      r1   )
BinNr3   r$   r   r%   c                   r4   )NBINr*   r6   r7   r   r   r   r      r8   zBin.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      r   )Concatc                   s   t  jdg|R i | d S )NCONCATr6   )r   termsr   r   r   r   r      s   zConcat.__init__r/   r   r   r   r   r      r   r   c                      rh   )InsertNc                   s:   dd ||||fD \}}}}t  jd|||||d d S )Nc                 S  s   g | ]}|qS r   r   ).0r3   r   r   r   
<listcomp>   s    z#Insert.__init__.<locals>.<listcomp>INSERTr*   r6   )r   r3   startstopsubtermr   r   r   r   r      s   zInsert.__init__r.   r/   r   r   r   r   r      rm   r   c                      r1   )
LengthNr3   r$   r   r%   c                   r4   )NLENGTHr*   r6   r7   r   r   r   r      r8   zLength.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      r1   )
UpperNr3   r$   r   r%   c                   r4   )NUPPERr*   r6   r7   r   r   r   r      r8   zUpper.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      r1   )
LowerNr3   r$   r   r%   c                   r4   )NLOWERr*   r6   r7   r   r   r   r      r8   zLower.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      rh   )	SubstringNc                   rw   )N	SUBSTRINGr*   r6   )r   r3   r   r   r   r   r   r   r      r|   zSubstring.__init__r.   r/   r   r   r   r   r      rm   r   c                      r1   )
ReverseNr3   r$   r   r%   c                   r4   )NREVERSEr*   r6   r7   r   r   r   r      r8   zReverse.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      r1   )
TrimNr3   r$   r   r%   c                   r4   )NTRIMr*   r6   r7   r   r   r   r      r8   zTrim.__init__r.   r9   r/   r   r   r   r   r      r0   r   c                      rh   )	SplitPartNc                   rw   )N
SPLIT_PARTr*   r6   )r   r3   	delimiterindexr   r   r   r   r      r|   zSplitPart.__init__r.   r/   r   r   r   r   r      rm   r   c                      rh   )RegexpMatchesNc                   rw   )NREGEXP_MATCHESr*   r6   r   r3   pattern	modifiersr   r   r   r   r      r|   zRegexpMatches.__init__NNr/   r   r   r   r   r      rm   r   c                      rh   )
RegexpLikeNc                   rw   )NREGEXP_LIKEr*   r6   r   r   r   r   r      r|   zRegexpLike.__init__r   r/   r   r   r   r   r      rm   r   c                      rh   )ReplaceNc                   rw   )NREPLACEr*   r6   )r   r3   find_stringreplace_withr   r   r   r   r      r|   zReplace.__init__r.   r/   r   r   r   r   r      rm   r   c                      rh   )NowNc                      t  jd|d d S )NNOWr*   r6   r   r   r   r   r   r        zNow.__init__r.   r/   r   r   r   r   r      rm   r   c                      rh   )UtcTimestampNc                   r   )NUTC_TIMESTAMPr*   r6   r   r   r   r   r     r   zUtcTimestamp.__init__r.   r/   r   r   r   r   r     rm   r   c                      rN   )CurTimestampNc                   r   )NCURRENT_TIMESTAMPr*   r6   r   r   r   r   r     r   zCurTimestamp.__init__c                 K  s   dS )Nr   r   rT   r   r   r   r     s   zCurTimestamp.get_function_sqlr.   )r   r   r    r   r   r!   r   r   r   r   r   
  s    r   c                      rh   )CurDateNc                   r   )NCURRENT_DATEr*   r6   r   r   r   r   r     r   zCurDate.__init__r.   r/   r   r   r   r   r     rm   r   c                      rh   )CurTimeNc                   r   )NCURRENT_TIMEr*   r6   r   r   r   r   r     r   zCurTime.__init__r.   r/   r   r   r   r   r     rm   r   c                      rN   )ExtractNc                   s,   t |d|}t jdt||d || _d S )Nrg   EXTRACTr*   )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   )rS   r   r^   rT   r   r   r   rU   $  r|   zExtract.get_special_params_sqlr.   rV   r   r   r   r   r     s    r   c                      r1   )
IsNullNr3   r$   r   r%   c                   r4   )NISNULLr*   r6   r7   r   r   r   r   *  r8   zIsNull.__init__r.   r9   r/   r   r   r   r   r   )  r0   r   c                      r   )Coalescec                   s    t  jd|g|R i | d S )NCOALESCEr6   )r   r3   default_valuesr   r   r   r   r   /  s    zCoalesce.__init__r/   r   r   r   r   r   .  r   r   c                      r   )IfNullc                   r   )NIFNULLr6   )r   r   r3   r   r   r   r   r   4  r   zIfNull.__init__r/   r   r   r   r   r   3  r   r   c                      r1   )
NVLNr3   r,   r   r%   c                   rj   )Nr   r*   r6   )r   r   r3   r   r   r   r   r   9  rl   zNVL.__init__r.   r   r/   r   r   r   r   r   8  r0   r   N)C__doc__
__future__r   pypikar   pypika.enumsr   pypika.termsr   r   r   r   pypika.utilsr	   
__author__	__email__r
   r"   r2   r:   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rO   rX   rd   ri   rn   rr   rt   rv   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   r   <module>   sv    

	
