U
    I+|j™>  ã                   @   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k	r |t kr tdt › d�ƒ‚tdk	rFt| jƒtkrFtdt› d�ƒ‚g }d}t| ƒ}t|ƒD ]¢\}}|| }|jrvq^|jr˜t	||ƒs˜t
|||d ƒ q^|j|jŽ r°| |¡ q^|j|jŽ r^z| ¡ }	W n tk
rà   Y q^Y nX |}
|  ||	|
¡ ||
|	 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$   ú`c:\users\snmko\desktop\web_content\django_cbt\venv\Lib\site-packages\sqlparse/engine/grouping.pyr      s<    
ÿÿ
ÿ
r   c                 C   s   t | tjƒ d S ©N)r   r   ÚSquareBrackets©r   r$   r$   r%   Úgroup_bracketsL   s    r)   c                 C   s   t | tjƒ d S r&   )r   r   ÚParenthesisr(   r$   r$   r%   Úgroup_parenthesisP   s    r+   c                 C   s   t | tjƒ d S r&   )r   r   ÚCaser(   r$   r$   r%   Ú
group_caseT   s    r-   c                 C   s   t | tjƒ d S r&   )r   r   ZIfr(   r$   r$   r%   Úgroup_ifX   s    r.   c                 C   s   t | tjƒ d S r&   )r   r   ZForr(   r$   r$   r%   Ú	group_for\   s    r/   c                 C   s   t | tjƒ d S r&   )r   r   ZBeginr(   r$   r$   r%   Úgroup_begin`   s    r0   c                 C   s8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   s   |   tjd¡S )Nz::©r   ÚTÚPunctuation©r"   r$   r$   r%   r   e   s    zgroup_typecasts.<locals>.matchc                 S   s   | d k	S r&   r$   r4   r$   r$   r%   Úvalidh   s    zgroup_typecasts.<locals>.validc                 S   s   ||fS r&   r$   ©r   Úpidxr#   Únidxr$   r$   r%   Úpostk   s    zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   r5   r9   Ú
valid_prevÚ
valid_nextr$   r$   r%   Úgroup_typecastsd   s
    r@   c                 C   s8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	Nc                 S   s   | j tjjkS r&   )Úttyper2   ÚKeywordZTZCastr4   r$   r$   r%   r   s   s    zgroup_tzcasts.<locals>.matchc                 S   s   | d k	S r&   r$   r4   r$   r$   r%   r>   v   s    z!group_tzcasts.<locals>.valid_prevc                 S   s*   | d k	o(| j p(|  tjd¡p(| jtjjŽ S ©NÚAS)r   r   r2   rB   r   ÚTypedLiteralr   r4   r$   r$   r%   r?   y   s    ÿýz!group_tzcasts.<locals>.valid_nextc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9   €   s    zgroup_tzcasts.<locals>.postr:   ©r   r   r>   r?   r9   r$   r$   r%   Úgroup_tzcastsr   s
    rG   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   rE   r   r4   r$   r$   r%   r   Œ   s    z"group_typed_literal.<locals>.matchc                 S   s   t | tjƒS r&   )r   r   rE   r4   r$   r$   r%   Úmatch_to_extend�   s    z,group_typed_literal.<locals>.match_to_extendc                 S   s   | d k	S r&   r$   r4   r$   r$   r%   r>   ’   s    z'group_typed_literal.<locals>.valid_prevc                 S   s   | d k	o| j tjjŽ S r&   )r   r   rE   r   r4   r$   r$   r%   r?   •   s    z'group_typed_literal.<locals>.valid_nextc                 S   s   | d k	o| j tjjŽ S r&   )r   r   rE   ZM_EXTENDr4   r$   r$   r%   Úvalid_final˜   s    z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9   ›   s    z!group_typed_literal.<locals>.postF©ÚextendT)r;   r   rE   )r   r   rJ   r>   r?   rK   r9   r$   r$   r%   Úgroup_typed_literal†   s     ÿ ÿrN   c                 C   s8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	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)r2   r3   ÚOperatorr   )r"   rA   Ú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'   r<   r2   ÚNameÚStringÚSymbolr   )r"   ÚsqlclsÚttypesr$   r$   r%   r>   ­   s    z group_period.<locals>.valid_prevc                 S   s   dS ©NTr$   r4   r$   r$   r%   r?   ²   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 k	r4| | nd }t	|||d�}|rR||fS ||fS rR   )
r   r'   ÚFunctionr2   rV   rW   rX   ÚWildcardÚSingler   )r   r7   r#   r8   rY   rZ   Únext_r?   r$   r$   r%   r9   ¶   s
    zgroup_period.<locals>.postr:   rF   r$   r$   r%   Úgroup_period¤   s
    	r`   c                 C   s8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	Nc                 S   s   | j o| jdkS rC   )Ú
is_keywordÚ
normalizedr4   r$   r$   r%   r   Ã   s    zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rb   ra   r4   r$   r$   r%   r>   Æ   s    zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o$| d k	S ©N©rU   )r2   ZDMLZDDLZCTEr   )r"   rZ   r$   r$   r%   r?   É   s    zgroup_as.<locals>.valid_nextc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9   Í   s    zgroup_as.<locals>.postr:   rF   r$   r$   r%   Úgroup_asÂ   s
    rf   c                 C   s8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   s   |   tjd¡S )Nz:=)r   r2   Ú
Assignmentr4   r$   r$   r%   r   Ô   s    zgroup_assignment.<locals>.matchc                 S   s   | d k	o| j tjfkS r&   )rA   r2   rB   r4   r$   r$   r%   r5   ×   s    zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p"|}||fS )Nú;©rI   r!   )r2   r3   Útoken_next_by)r   r7   r#   r8   Zm_semicolonZsnidxÚ_r$   r$   r%   r9   Ú   s    
zgroup_assignment.<locals>.post)r;   r   rg   r=   r$   r$   r%   Úgroup_assignmentÓ   s
    rl   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   s   | j tjjkS r&   )rA   r2   rP   Ú
Comparisonr4   r$   r$   r%   r   é   s    zgroup_comparison.<locals>.matchc                    s2   t | ˆˆ d�rdS | r*| jr*| jdkr*dS dS d S )N)rU   rT   Trc   F)r   ra   rb   r4   ©rY   rZ   r$   r%   r5   ì   s
    zgroup_comparison.<locals>.validc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9   ô   s    zgroup_comparison.<locals>.postFrL   )r   r*   r\   r<   Ú	OperationrE   ÚT_NUMERICALÚT_STRINGÚT_NAMEr;   rm   r=   r$   rn   r%   Úgroup_comparisonä   s     ÿ
   ÿrs   c                 C   sJ   t jjt jf}| j|d�\}}|rF|  tj||¡ | j||d�\}}qd S )Nre   ©rU   r!   )r2   rW   rX   rV   rj   r   r   r<   )r   rZ   r#   r"   r$   r$   r%   Úgroup_identifierü   s
    ru   c                 C   sd   | j tjjd�\}}|r`|  |¡\}}t|tjtjd�rH|  	tj||¡ | j tjj|d�\}}qd S )NrH   rS   ri   )
rj   r   ÚOverr   Ú
token_nextr   r*   r2   rV   r   )r   r#   r"   r8   r_   r$   r$   r%   Ú
group_over  s    rx   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   s   t | tjƒS r&   )r   r   r'   r4   r$   r$   r%   r     s    zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rR   ©r   r4   rn   r$   r%   r>     s    z group_arrays.<locals>.valid_prevc                 S   s   dS r[   r$   r4   r$   r$   r%   r?     s    z group_arrays.<locals>.valid_nextc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9     s    zgroup_arrays.<locals>.postTF)rM   r   )	r   r'   r<   r\   r2   rV   rW   rX   r;   rF   r$   rn   r%   Úgroup_arrays  s    
    ÿrz   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 rd   )r   r2   rP   r]   r4   r$   r$   r%   r   )  s    zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )NrS   )ZCURRENT_DATEZCURRENT_TIMEZCURRENT_TIMESTAMP)r   r   r2   rB   r4   rn   r$   r%   r5   ,  s    þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r&   )r2   rP   rA   r6   r$   r$   r%   r9   2  s    zgroup_operator.<locals>.postFrL   )rp   rq   rr   r   r'   r*   r\   r<   ro   rE   r;   r=   r$   rn   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   s   |   tjd¡S )Nú,r1   r4   r$   r$   r%   r   B  s    z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rT   rI   rU   ry   r4   ©Zm_rolerY   rZ   r$   r%   r5   E  s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r&   r$   r6   r$   r$   r%   r9   H  s    z#group_identifier_list.<locals>.postTrL   )r2   rB   r   r\   r,   r<   rm   ZIdentifierListro   rp   rq   rr   ÚCommentr]   r;   r=   r$   r   r%   Úgroup_identifier_list;  s$    
 ÿ
ÿ
   ÿr�   c                 C   sp   | j tjd�\}}|rl| jdd„ |d�\}}|d k	rV| j|dd�\}}|  tj||¡ | j tj|d�\}}qd S )Nre   c                 S   s   t | tjd�p| jS rd   )r   r2   r€   Z
is_newline)Ztkr$   r$   r%   Ú<lambda>U  ó    z group_comments.<locals>.<lambda>)r!   F)Zskip_wsrt   )rj   r2   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�\}}|r‚| j tjj|d�\}}|d krB| jd }n| j|d  }|  |¡}|  tj||¡ | j tjj|d�\}}qd S )NrH   ri   éÿÿÿÿr   )	rj   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�\}}|rz|  
|¡\}}t|t jƒrb| jt j||dd� | j|tj	|d�\}}q0d S )NrS   TrL   )rT   rU   r!   )r   r*   r\   r,   r<   ro   rm   rj   r2   ÚNumberrw   r   r   )r   ZI_ALIASr#   r"   r8   r_   r$   r$   r%   Úgroup_aliasedn  s     ÿr�   c                 C   sÜ   d}d}d}| j D ]6}|j ¡ dkr(d}|j ¡ dkr:d}|jdkrd}q|rZ|rZ|sZd S | jtjd�\}}|rØ|  |¡\}}t|tj	ƒrÂ|  |¡\}	}
|
r®t|
tj
ƒr®|	}n|}|  tj||¡ | jtj|d�\}}qld S )NFZCREATETZTABLErD   re   rt   )r   rQ   Úupperrj   r2   rV   rw   r   r   r*   rv   r   r\   )r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr#   r"   r8   r_   Zover_idxZoverr†   r$   r$   r%   Úgroup_functions{  s,    

r�   c                 C   sh   | j tjjd�\}}|rd|  |¡\}}t|tjtjd�rL|  	tj||¡ |}| j tjj|d�\}}qdS )z,Group together Identifier and Asc/Desc tokenre   rS   rt   N)
rj   r2   rB   ZOrderr„   r   r   r<   rŒ   r   ©r   r#   r"   r7   Úprev_r$   r$   r%   Úgroup_order—  s    r’   c                 C   sb   | j tjd�\}}|r^|  |¡\}}t|tjƒrH| jtj||dd� |}| j tj|d�\}}qd S )N)rT   TrL   )rT   r!   )rj   r   r€   r„   r   Z	TokenListr   r�   r$   r$   r%   Úalign_comments£  s    r“   c                 C   sb   | j tjdfd�\}}|}d}|rBt|tjƒr2|}|  |¡\}}q|dkr^| jtj||dd� d S )NZVALUESrH   r‰   TrL   )	rj   r2   rB   r   r   r*   rw   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 ]}|| ƒ q6| S r&   )rˆ   r)   r+   r-   r.   r/   r0   rx   r�   r‹   r`   rz   ru   r’   r@   rG   rN   r{   rs   rf   r�   rl   r“   r�   r•   )ZstmtÚfuncr$   r$   r%   Úgroupº  s8    ã
r—   c                 C   s   dS r[   r$   re   r$   r$   r%   r‚   ß  rƒ   r‚   c                 C   s   dS r[   r$   re   r$   r$   r%   r‚   à  rƒ   NTc	                 C   s2  t dk	r |t kr tdt › d�ƒ‚tdk	rFt| jƒtkrFtdt› d�ƒ‚d}	d\}
}t| ƒ}t|ƒD ]Ê\}}||	 }|dk r|qb|jr„qb|r´|jr´t	||ƒs´t
|||||||d|d ƒ	 ||ƒ�r"|  |¡\}}|�r"||ƒ�r"||ƒ�r"|| |
||ƒ\}}| j||||d	�}|	|| 7 }	|| }
}qb|| }
}qbdS )
zDGroups together tokens that are joined by a middle token. i.e. x < yNr   r	   r
   r   )NNTr   rL   )r   r   r   r   r   r   r   r   r   r   r;   rw   r   )r   r   r   r>   r?   r9   rM   r   r   r   r7   r‘   r    r!   r"   r#   r8   r_   Zfrom_idxZto_idxÚgrpr$   r$   r%   r;   Þ  sF    	
ÿÿ
ÿ   ÿ

r;   )r   )7Zsqlparser   r   r2   Zsqlparse.exceptionsr   Zsqlparse.utilsr   r   r   r   rŒ   ZIntegerZFloatrp   rW   r^   rX   rq   rV   ZPlaceholderrr   r   r)   r+   r-   r.   r/   r0   r@   rG   rN   r`   rf   rl   rs   r<   ru   rv   rx   rz   r{   r�   r€   rˆ   rŠ   r‹   r�   r\   r�   r’   r“   r•   r—   r;   r$   r$   r$   r%   Ú<module>   sd   
1
	
	






%ú