o
    µ„jn?  ã                   @   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)ÚimtÚrecurseé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ÚdepthÚopensÚtidx_offsetÚ
token_listÚidxÚtokenÚtidxÚopen_idxÚ	close_idx© r'   úV/var/www/html/django_cbt/venv/lib/python3.10/site-packages/sqlparse/engine/grouping.pyr      s@   
ÿ
ÿý€ä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.   r0   c                 C   r)   r*   )r   r   ÚCaser,   r'   r'   r(   Ú
group_caseT   r.   r2   c                 C   r)   r*   )r   r   ÚIfr,   r'   r'   r(   Úgroup_ifX   r.   r4   c                 C   r)   r*   )r   r   ÚForr,   r'   r'   r(   Ú	group_for\   r.   r6   c                 C   r)   r*   )r   r   ÚBeginr,   r'   r'   r(   Úgroup_begin`   r.   r8   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   rB   zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   rA   rG   Ú
valid_prevÚ
valid_nextr'   r'   r(   Úgroup_typecastsd   s
   rN   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*   )Úttyper<   ÚKeywordÚTZCastr>   r'   r'   r(   r   s   r?   zgroup_tzcasts.<locals>.matchc                 S   r@   r*   r'   r>   r'   r'   r(   rL   v   rB   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   r<   rR   r   ÚTypedLiteralr   r>   r'   r'   r(   rM   y   s   ÿýz!group_tzcasts.<locals>.valid_nextc                 S   rC   r*   r'   rD   r'   r'   r(   rG   €   rB   zgroup_tzcasts.<locals>.postrH   ©r   r   rL   rM   rG   r'   r'   r(   Úgroup_tzcastsr   s
   rX   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   rV   r   r>   r'   r'   r(   r   Œ   r.   z"group_typed_literal.<locals>.matchc                 S   ó   t | tjƒS r*   )r   r   rV   r>   r'   r'   r(   Úmatch_to_extend�   ó   z,group_typed_literal.<locals>.match_to_extendc                 S   r@   r*   r'   r>   r'   r'   r(   rL   ’   rB   z'group_typed_literal.<locals>.valid_prevc                 S   ó   | d uo
| j tjjŽ S r*   )r   r   rV   r   r>   r'   r'   r(   rM   •   ó   z'group_typed_literal.<locals>.valid_nextc                 S   r^   r*   )r   r   rV   ÚM_EXTENDr>   r'   r'   r(   Úvalid_final˜   r_   z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r*   r'   rD   r'   r'   r(   rG   ›   rB   z!group_typed_literal.<locals>.postF©ÚextendT)rI   r   rV   )r   r   r\   rL   rM   ra   rG   r'   r'   r(   Úgroup_typed_literal†   s   ÿ
ÿrd   c                 C   rO   )	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)r<   r=   ÚOperatorr   )r#   rQ   Ú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+   rJ   r<   ÚNameÚStringÚSymbolr   )r#   ÚsqlclsÚttypesr'   r'   r(   rL   ­   s   z group_period.<locals>.valid_prevc                 S   ó   dS ©NTr'   r>   r'   r'   r(   rM   ²   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 rh   )
r   r+   ÚFunctionr<   rl   rm   rn   ÚWildcardÚSingler   )r   rE   r$   rF   ro   rp   Únext_rM   r'   r'   r(   rG   ¶   s
   zgroup_period.<locals>.postrH   rW   r'   r'   r(   Úgroup_period¤   s
   	rw   c                 C   rO   )	Nc                 S   s   | j o| jdkS rT   )Ú
is_keywordÚ
normalizedr>   r'   r'   r(   r   Ã   r.   zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)ry   rx   r>   r'   r'   r(   rL   Æ   s   zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o| d uS ©N©rk   )r<   ÚDMLÚDDLÚCTEr   )r#   rp   r'   r'   r(   rM   É   s   zgroup_as.<locals>.valid_nextc                 S   rC   r*   r'   rD   r'   r'   r(   rG   Í   rB   zgroup_as.<locals>.postrH   rW   r'   r'   r(   Úgroup_asÂ   s
   r€   c                 C   r9   )Nc                 S   r:   )Nz:=)r   r<   Ú
Assignmentr>   r'   r'   r(   r   Ô   r?   zgroup_assignment.<locals>.matchc                 S   s   | d uo
| j tjfvS r*   )rQ   r<   rR   r>   r'   r'   r(   rA   ×   r_   zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p|}||fS )Nú;©rZ   r"   )r<   r=   Útoken_next_by)r   rE   r$   rF   Úm_semicolonÚsnidxÚ_r'   r'   r(   rG   Ú   s   
zgroup_assignment.<locals>.post)rI   r   r�   rK   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   rP   r*   )rQ   r<   rf   Ú
Comparisonr>   r'   r'   r(   r   é   r?   zgroup_comparison.<locals>.matchc                    s&   t t| ˆˆ d�p| o| jo| jdkƒS )N)rk   rj   rz   )Úboolr   rx   ry   r>   ©ro   rp   r'   r(   rA   ì   s   &zgroup_comparison.<locals>.validc                 S   rC   r*   r'   rD   r'   r'   r(   rG   ï   rB   zgroup_comparison.<locals>.postFrb   )r   r/   rs   rJ   Ú	OperationrV   ÚT_NUMERICALÚT_STRINGÚT_NAMErI   r‰   rK   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 )Nr|   ©rk   r"   )r<   rm   rn   rl   r„   r   r   rJ   )r   rp   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 )NrY   ri   rƒ   )
r„   r   ÚOverr   Ú
token_nextr   r/   r<   rl   r   )r   r$   r#   rF   rv   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   r[   r*   )r   r   r+   r>   r'   r'   r(   r     r]   zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rh   ©r   r>   r‹   r'   r(   rL     r?   z group_arrays.<locals>.valid_prevc                 S   rq   rr   r'   r>   r'   r'   r(   rM     s   z group_arrays.<locals>.valid_nextc                 S   s   ||fS r*   r'   rD   r'   r'   r(   rG     rB   zgroup_arrays.<locals>.postTF)rc   r   )	r   r+   rJ   rs   r<   rl   rm   rn   rI   rW   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 r{   )r   r<   rf   rt   r>   r'   r'   r(   r   $  s   zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )Nri   )ÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMP)r   r   r<   rR   r>   r‹   r'   r(   rA   '  s   þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r*   )r<   rf   rQ   rD   r'   r'   r(   rG   -  s   zgroup_operator.<locals>.postFrb   )r�   rŽ   r�   r   r+   r/   rs   rJ   rŒ   rV   rI   rK   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   r:   )Nú,r;   r>   r'   r'   r(   r   =  r?   z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rj   rZ   rk   r–   r>   ©Úm_rolero   rp   r'   r(   rA   @  r.   z$group_identifier_list.<locals>.validc                 S   rC   r*   r'   rD   r'   r'   r(   rG   C  rB   z#group_identifier_list.<locals>.postTrb   )r<   rR   r   rs   r1   rJ   r‰   ÚIdentifierListrŒ   r�   rŽ   r�   ÚCommentrt   rI   rK   r'   rŸ   r(   Úgroup_identifier_list6  s   
ÿ
ÿ

ÿr£   c                 C   sz   | j tjd�\}}|r;| jdd„ |d�\}}|d u rd S | j|dd�\}}|  tj||¡ | j tj|d�\}}|sd S d S )Nr|   c                 S   s   t | tjd�p	| jS r{   )r   r<   r¢   Ú
is_newline)Útkr'   r'   r(   Ú<lambda>P  s    z group_comments.<locals>.<lambda>)r"   F)Úskip_wsr‘   )r„   r<   r¢   Útoken_not_matchingÚ
token_prevr   r   ©r   r$   r#   ÚeidxÚendr'   r'   r(   Úgroup_commentsK  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 )NrY   rƒ   éÿÿÿÿr   )	r„   r   ÚWherer   r   Ú_groupable_tokensr   Ú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 )Nri   Trb   )rj   rk   r"   )r   r/   rs   r1   rJ   rŒ   r‰   r„   r<   ÚNumberr”   r   r   )r   ÚI_ALIASr$   r#   rF   rv   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�\}}|rq|  |¡\}}t|tj	ƒrc|  |¡\}	}
|
rYt|
tj
ƒrY|	}n|}|  tj||¡ | jtj|d�\}}|s:d S d S )NFÚCREATETÚTABLErU   r|   r‘   )r   rg   Úupperr„   r<   rl   r”   r   r   r/   r“   r   rs   )r   Ú
has_createÚ	has_tableÚhas_asÚ	tmp_tokenr$   r#   rF   rv   Úover_idxÚ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 tokenr|   ri   r‘   N)
r„   r<   rR   ÚOrderr©   r   r   rJ   r³   r   ©r   r$   r#   rE   Ú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)rj   Trb   )rj   r"   )r„   r   r¢   r©   r   Ú	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 )NÚVALUESrY   r®   Trb   )	r„   r<   rR   r   r   r/   r”   r   ÚValues)r   r$   r#   Ú	start_idxÚ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-   r0   r2   r4   r6   r8   r•   r¿   r²   rw   r—   r’   rÃ   rN   rX   rd   r›   r�   r€   rµ   rˆ   rÅ   r£   rÊ   )ÚstmtÚfuncr'   r'   r(   Úgroupº  s8   ã
rÍ   c                 C   rq   rr   r'   r|   r'   r'   r(   r¦   ß  ó    r¦   c                 C   rq   rr   r'   r|   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   rb   )r   r   r   r   r   r   r   r   r   r   rI   r”   r   )r   r   r   rL   rM   rG   rc   r   r   r    rE   rÂ   r!   r"   r#   r$   rF   rv   Úfrom_idxÚto_idxÚgrpr'   r'   r(   rI   Þ  s@   	
ÿ
ÿÿ
êrI   )r   )7Úsqlparser   r   r<   Úsqlparse.exceptionsr   Úsqlparse.utilsr   r   r   r   r³   ÚIntegerÚFloatr�   rm   ru   rn   rŽ   rl   ÚPlaceholderr�   r   r-   r0   r2   r4   r6   r8   rN   rX   rd   rw   r€   rˆ   r�   rJ   r’   r“   r•   r—   r›   r£   r¢   r­   r¯   r²   rµ   rs   r¿   rÃ   rÅ   rÊ   rÍ   rI   r'   r'   r'   r(   Ú<module>   sf   
1
	
	






%ú