o
    ÍŸŽi™>  ã                   @   s¶  d dl mZ d dl mZ d dlmZ d dlmZmZ dZ	dZ
ejejjejjfZejejjejjfZejejjfZdDdd„Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd „ Z"d!d"„ Z#eej$ƒd#d$„ ƒZ%eej&ƒd%d&„ ƒZ'd'd(„ Z(d)d*„ Z)d+d,„ Z*eej+ƒd-d.„ ƒZ,eej-ƒd/d0„ ƒZ.eƒ d1d2„ ƒZ/eej0ƒd3d4„ ƒZ1eej$ƒd5d6„ ƒZ2eƒ d7d8„ ƒZ3d9d:„ Z4d;d<„ Z5d=d>„ d?d>„ d@dAdAd fdBdC„Z6d@S )Eé    )Úsql)Útokens)ÚSQLParseError)ÚrecurseÚimtéd   i'  c              	   C   s   t dur|t krtdt › d�ƒ‚tdur#t| jƒtkr#tdt› d�ƒ‚g }d}t| ƒ}t|ƒD ]N\}}|| }|jr;q/|jrLt	||ƒsLt
|||d ƒ q/|j|jŽ rX| |¡ q/|j|jŽ r}z| ¡ }	W n	 tym   Y q/w |}
|  ||	|
¡ ||
|	 7 }q/dS )z*Groups Tokens that have beginning and end.Nú!Maximum grouping depth exceeded (ú).ú#Maximum number of tokens exceeded (r   é   )ÚMAX_GROUPING_DEPTHr   ÚMAX_GROUPING_TOKENSÚlenr   ÚlistÚ	enumerateÚis_whitespaceÚis_groupÚ
isinstanceÚ_group_matchingÚmatchÚM_OPENÚappendÚM_CLOSEÚpopÚ
IndexErrorÚgroup_tokens)ÚtlistÚclsÚdepthZopensÚtidx_offsetÚ
token_listÚidxÚtokenÚtidxZopen_idxZ	close_idx© r$   úbC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\sqlparse/engine/grouping.pyr      sB   
ÿÿ
ÿý€är   c                 C   ó   t | tjƒ d S ©N)r   r   ÚSquareBrackets©r   r$   r$   r%   Úgroup_bracketsL   ó   r*   c                 C   r&   r'   )r   r   ÚParenthesisr)   r$   r$   r%   Úgroup_parenthesisP   r+   r-   c                 C   r&   r'   )r   r   ÚCaser)   r$   r$   r%   Ú
group_caseT   r+   r/   c                 C   r&   r'   )r   r   ÚIfr)   r$   r$   r%   Úgroup_ifX   r+   r1   c                 C   r&   r'   )r   r   ÚForr)   r$   r$   r%   Ú	group_for\   r+   r3   c                 C   r&   r'   )r   r   ZBeginr)   r$   r$   r%   Úgroup_begin`   r+   r4   c                 C   ó8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   ó   |   tjd¡S )Nz::©r   ÚTÚPunctuation©r"   r$   r$   r%   r   e   ó   zgroup_typecasts.<locals>.matchc                 S   ó   | d uS r'   r$   r:   r$   r$   r%   Úvalidh   ó   zgroup_typecasts.<locals>.validc                 S   ó   ||fS r'   r$   ©r   Úpidxr#   Únidxr$   r$   r%   Úpostk   r>   zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   r=   rC   Ú
valid_prevÚ
valid_nextr$   r$   r%   Úgroup_typecastsd   s
   rJ   c                 C   ó8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	Nc                 S   ó   | j tjjkS r'   )Úttyper8   ÚKeywordZTZCastr:   r$   r$   r%   r   s   r;   zgroup_tzcasts.<locals>.matchc                 S   r<   r'   r$   r:   r$   r$   r%   rH   v   r>   z!group_tzcasts.<locals>.valid_prevc                 S   s*   | d uo| j p|  tjd¡p| jtjjŽ S ©NÚAS)r   r   r8   rN   r   ÚTypedLiteralr   r:   r$   r$   r%   rI   y   s   ÿýz!group_tzcasts.<locals>.valid_nextc                 S   r?   r'   r$   r@   r$   r$   r%   rC   €   r>   zgroup_tzcasts.<locals>.postrD   ©r   r   rH   rI   rC   r$   r$   r%   Úgroup_tzcastsr   s
   rS   c              	   C   sd   dd„ }dd„ }dd„ }dd„ }d	d
„ }dd„ }t | tj||||dd� t | tj||||dd� d S )Nc                 S   s   t | tjjd�S )N©Úm)r   r   rQ   r   r:   r$   r$   r%   r   Œ   r+   z"group_typed_literal.<locals>.matchc                 S   ó   t | tjƒS r'   )r   r   rQ   r:   r$   r$   r%   Úmatch_to_extend�   ó   z,group_typed_literal.<locals>.match_to_extendc                 S   r<   r'   r$   r:   r$   r$   r%   rH   ’   r>   z'group_typed_literal.<locals>.valid_prevc                 S   ó   | d uo
| j tjjŽ S r'   )r   r   rQ   r   r:   r$   r$   r%   rI   •   ó   z'group_typed_literal.<locals>.valid_nextc                 S   rY   r'   )r   r   rQ   ZM_EXTENDr:   r$   r$   r%   Úvalid_final˜   rZ   z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r'   r$   r@   r$   r$   r%   rC   ›   r>   z!group_typed_literal.<locals>.postF©ÚextendT)rE   r   rQ   )r   r   rW   rH   rI   r[   rC   r$   r$   r%   Úgroup_typed_literal†   s   ÿ
ÿr^   c                 C   rK   )	Nc                 S   s<   t jdft jdft jdffD ]\}}|  ||¡r dS qdS )NÚ.z->z->>TF)r8   r9   ÚOperatorr   )r"   rM   Úvaluer$   r$   r%   r   ¥   s   þÿzgroup_period.<locals>.matchc                 S   s(   t jt jf}tjtjjf}t| ||d�S ©N©ÚiÚt)r   r(   rF   r8   ÚNameÚStringÚSymbolr   )r"   ÚsqlclsÚttypesr$   r$   r%   rH   ­   s   z group_period.<locals>.valid_prevc                 S   ó   dS ©NTr$   r:   r$   r$   r%   rI   ²   s   z group_period.<locals>.valid_nextc                 S   sZ   t jt jf}tjtjjtjtjjf}|d ur| | nd }t	|||d�}|r)||fS ||fS rb   )
r   r(   ÚFunctionr8   rf   rg   rh   ÚWildcardÚSingler   )r   rA   r#   rB   ri   rj   Únext_rI   r$   r$   r%   rC   ¶   s
   zgroup_period.<locals>.postrD   rR   r$   r$   r%   Úgroup_period¤   s
   	rq   c                 C   rK   )	Nc                 S   s   | j o| jdkS rO   )Ú
is_keywordÚ
normalizedr:   r$   r$   r%   r   Ã   r+   zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rs   rr   r:   r$   r$   r%   rH   Æ   s   zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o| d uS ©N©re   )r8   ZDMLZDDLZCTEr   )r"   rj   r$   r$   r%   rI   É   s   zgroup_as.<locals>.valid_nextc                 S   r?   r'   r$   r@   r$   r$   r%   rC   Í   r>   zgroup_as.<locals>.postrD   rR   r$   r$   r%   Úgroup_asÂ   s
   rw   c                 C   r5   )Nc                 S   r6   )Nz:=)r   r8   Ú
Assignmentr:   r$   r$   r%   r   Ô   r;   zgroup_assignment.<locals>.matchc                 S   s   | d uo
| j tjfvS r'   )rM   r8   rN   r:   r$   r$   r%   r=   ×   rZ   zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p|}||fS )Nú;©rU   r!   )r8   r9   Útoken_next_by)r   rA   r#   rB   Zm_semicolonZsnidxÚ_r$   r$   r%   rC   Ú   s   
zgroup_assignment.<locals>.post)rE   r   rx   rG   r$   r$   r%   Úgroup_assignmentÓ   s
   r}   c              	      sf   t jt jt jt jt jf‰ tt t ‰dd„ }‡ ‡fdd„}dd„ }| }}t	| t j
||||dd� d S )	Nc                 S   rL   r'   )rM   r8   r`   Ú
Comparisonr:   r$   r$   r%   r   é   r;   zgroup_comparison.<locals>.matchc                    s.   t | ˆˆ d�r	dS | r| jr| jdkrdS dS )N)re   rd   Trt   F)r   rr   rs   r:   ©ri   rj   r$   r%   r=   ì   s
   zgroup_comparison.<locals>.validc                 S   r?   r'   r$   r@   r$   r$   r%   rC   ô   r>   zgroup_comparison.<locals>.postFr\   )r   r,   rm   rF   Ú	OperationrQ   ÚT_NUMERICALÚT_STRINGÚT_NAMErE   r~   rG   r$   r   r%   Úgroup_comparisonä   s   ÿ

ÿr„   c                 C   sP   t jjt jf}| j|d�\}}|r&|  tj||¡ | j||d�\}}|sd S d S )Nrv   ©re   r!   )r8   rg   rh   rf   r{   r   r   rF   )r   rj   r#   r"   r$   r$   r%   Úgroup_identifierü   s   þr†   c                 C   sj   | j tjjd�\}}|r3|  |¡\}}t|tjtjd�r$|  	tj||¡ | j tjj|d�\}}|sd S d S )NrT   rc   rz   )
r{   r   ÚOverr   Ú
token_nextr   r,   r8   rf   r   )r   r#   r"   rB   rp   r$   r$   r%   Ú
group_over  s   ür‰   c              
      sb   t jt jt jf‰ tjtjjf‰dd„ }‡ ‡fdd„}dd„ }dd„ }t| t j||||d	d
d� d S )Nc                 S   rV   r'   )r   r   r(   r:   r$   r$   r%   r     rX   zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rb   ©r   r:   r   r$   r%   rH     r;   z group_arrays.<locals>.valid_prevc                 S   rk   rl   r$   r:   r$   r$   r%   rI     s   z group_arrays.<locals>.valid_nextc                 S   s   ||fS r'   r$   r@   r$   r$   r%   rC     r>   zgroup_arrays.<locals>.postTF)r]   r   )	r   r(   rF   rm   r8   rf   rg   rh   rE   rR   r$   r   r%   Úgroup_arrays  s   


ÿr‹   c              	      sj   t t t ‰tjtjtjtjtjtj	f‰ dd„ }‡ ‡fdd„}dd„ }| }}t
| tj||||dd� d S )	Nc                 S   s   t | tjtjfd�S ru   )r   r8   r`   rn   r:   r$   r$   r%   r   )  s   zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )Nrc   )ZCURRENT_DATEZCURRENT_TIMEZCURRENT_TIMESTAMP)r   r   r8   rN   r:   r   r$   r%   r=   ,  s   þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r'   )r8   r`   rM   r@   r$   r$   r%   rC   2  s   zgroup_operator.<locals>.postFr\   )r�   r‚   rƒ   r   r(   r,   rm   rF   r€   rQ   rE   rG   r$   r   r%   Úgroup_operator$  s   ÿ

ÿrŒ   c              	      s†   t jdf‰ tjtjtjtjtjtjf‰t	t
 t t jt jt jf ‰dd„ }‡ ‡‡fdd„}dd„ }| }}t| tj||||dd	� d S )
N)ÚnullÚrolec                 S   r6   )Nú,r7   r:   r$   r$   r%   r   B  r;   z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rd   rU   re   rŠ   r:   ©Zm_roleri   rj   r$   r%   r=   E  r+   z$group_identifier_list.<locals>.validc                 S   r?   r'   r$   r@   r$   r$   r%   rC   H  r>   z#group_identifier_list.<locals>.postTr\   )r8   rN   r   rm   r.   rF   r~   ZIdentifierListr€   r�   r‚   rƒ   ÚCommentrn   rE   rG   r$   r�   r%   Úgroup_identifier_list;  s   
ÿ
ÿ

ÿr’   c                 C   sv   | j tjd�\}}|r9| jdd„ |d�\}}|d ur+| j|dd�\}}|  tj||¡ | j tj|d�\}}|sd S d S )Nrv   c                 S   s   t | tjd�p	| jS ru   )r   r8   r‘   Z
is_newline)Ztkr$   r$   r%   Ú<lambda>U  s    z group_comments.<locals>.<lambda>)r!   F)Zskip_wsr…   )r{   r8   r‘   Ztoken_not_matchingÚ
token_prevr   r   ©r   r#   r"   ÚeidxÚendr$   r$   r%   Úgroup_commentsP  s   
ÿùr˜   c                 C   sŒ   | j tjjd�\}}|rD| j tjj|d�\}}|d u r!| jd }n| j|d  }|  |¡}|  tj||¡ | j tjj|d�\}}|sd S d S )NrT   rz   éÿÿÿÿr   )	r{   r   ÚWherer   r   Z_groupable_tokensr   Ztoken_indexr   r•   r$   r$   r%   Úgroup_where]  s   
õr›   c                 C   s„   t jt jt jt jt jt jf}| j|tj	d�\}}|r@|  
|¡\}}t|t jƒr1| jt j||dd� | j|tj	|d�\}}|sd S d S )Nrc   Tr\   )rd   re   r!   )r   r,   rm   r.   rF   r€   r~   r{   r8   ÚNumberrˆ   r   r   )r   ZI_ALIASr#   r"   rB   rp   r$   r$   r%   Úgroup_aliasedn  s   ÿür�   c                 C   sâ   d}d}d}| j D ]}|j ¡ dkrd}|j ¡ dkrd}|jdkr$d}q	|r-|r-|s-d S | jtjd�\}}|ro|  |¡\}}t|tj	ƒra|  |¡\}	}
|
rWt|
tj
ƒrW|	}n|}|  tj||¡ | jtj|d�\}}|s8d S d S )NFZCREATETZTABLErP   rv   r…   )r   ra   Úupperr{   r8   rf   rˆ   r   r   r,   r‡   r   rm   )r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr#   r"   rB   rp   Zover_idxZoverr–   r$   r$   r%   Úgroup_functions{  s0   

€÷rŸ   c                 C   sn   | j tjjd�\}}|r5|  |¡\}}t|tjtjd�r&|  	tj||¡ |}| j tjj|d�\}}|sdS dS )z,Group together Identifier and Asc/Desc tokenrv   rc   r…   N)
r{   r8   rN   ZOrderr”   r   r   rF   rœ   r   ©r   r#   r"   rA   Úprev_r$   r$   r%   Úgroup_order—  s   ûr¢   c                 C   sh   | j tjd�\}}|r2|  |¡\}}t|tjƒr$| jtj||dd� |}| j tj|d�\}}|sd S d S )N)rd   Tr\   )rd   r!   )r{   r   r‘   r”   r   Z	TokenListr   r    r$   r$   r%   Úalign_comments£  s   ûr£   c                 C   sh   | j tjdfd�\}}|}d}|r"t|tjƒr|}|  |¡\}}|s|dkr2| jtj||dd� d S d S )NZVALUESrT   r™   Tr\   )	r{   r8   rN   r   r   r,   rˆ   r   ÚValues)r   r#   r"   Z	start_idxZend_idxr$   r$   r%   Úgroup_values®  s   ýÿr¥   c                 C   sH   t ttttttttt	t
ttttttttttttttfD ]}|| ƒ q| S r'   )r˜   r*   r-   r/   r1   r3   r4   r‰   rŸ   r›   rq   r‹   r†   r¢   rJ   rS   r^   rŒ   r„   rw   r�   r}   r£   r’   r¥   )ÚstmtÚfuncr$   r$   r%   Úgroupº  s8   ã
r¨   c                 C   rk   rl   r$   rv   r$   r$   r%   r“   ß  ó    r“   c                 C   rk   rl   r$   rv   r$   r$   r%   r“   à  r©   NTc	                 C   s*  t dur|t krtdt › d�ƒ‚tdur#t| jƒtkr#tdt› d�ƒ‚d}	d\}
}t| ƒ}t|ƒD ]a\}}||	 }|dk r>q1|jrBq1|rZ|jrZt	||ƒsZt
|||||||d|d ƒ	 ||ƒr�|  |¡\}}|r�||ƒr�||ƒr�|| |
||ƒ\}}| j||||d	�}|	|| 7 }	||}
}q1||}
}q1dS )
zDGroups together tokens that are joined by a middle token. i.e. x < yNr   r	   r
   r   )NNTr   r\   )r   r   r   r   r   r   r   r   r   r   rE   rˆ   r   )r   r   r   rH   rI   rC   r]   r   r   r   rA   r¡   r    r!   r"   r#   rB   rp   Zfrom_idxZto_idxÚgrpr$   r$   r%   rE   Þ  sB   	
ÿÿ
ÿÿ
êrE   )r   )7Zsqlparser   r   r8   Zsqlparse.exceptionsr   Zsqlparse.utilsr   r   r   r   rœ   ZIntegerZFloatr�   rg   ro   rh   r‚   rf   ZPlaceholderrƒ   r   r*   r-   r/   r1   r3   r4   rJ   rS   r^   rq   rw   r}   r„   rF   r†   r‡   r‰   r‹   rŒ   r’   r‘   r˜   rš   r›   r�   rm   rŸ   r¢   r£   r¥   r¨   rE   r$   r$   r$   r%   Ú<module>   sf   
1
	
	






%ú