U
    ¸ßŽ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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ÚdepthÚopensÚtidx_offsetÚ
token_listÚidxÚtokenÚtidxZopen_idxZ	close_idx© r%   úV/var/www/html/IITS/school/venv/lib/python3.8/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   ÚIfr)   r%   r%   r&   Úgroup_ifX   s    r0   c                 C   s   t | tjƒ d S r'   )r   r   ÚForr)   r%   r%   r&   Ú	group_for\   s    r2   c                 C   s   t | tjƒ d S r'   )r   r   ÚBeginr)   r%   r%   r&   Úgroup_begin`   s    r4   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%   r8   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   r9   r=   Ú
valid_prevÚ
valid_nextr%   r%   r&   Úgroup_typecastsd   s
    rD   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'   )Úttyper6   ÚKeywordZTZCastr8   r%   r%   r&   r   s   s    zgroup_tzcasts.<locals>.matchc                 S   s   | d k	S r'   r%   r8   r%   r%   r&   rB   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   r6   rF   r   ÚTypedLiteralr   r8   r%   r%   r&   rC   y   s    ÿýz!group_tzcasts.<locals>.valid_nextc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=   €   s    zgroup_tzcasts.<locals>.postr>   ©r   r   rB   rC   r=   r%   r%   r&   Úgroup_tzcastsr   s
    rK   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   rI   r   r8   r%   r%   r&   r   Œ   s    z"group_typed_literal.<locals>.matchc                 S   s   t | tjƒS r'   )r   r   rI   r8   r%   r%   r&   Úmatch_to_extend�   s    z,group_typed_literal.<locals>.match_to_extendc                 S   s   | d k	S r'   r%   r8   r%   r%   r&   rB   ’   s    z'group_typed_literal.<locals>.valid_prevc                 S   s   | d k	o| j tjjŽ S r'   )r   r   rI   r   r8   r%   r%   r&   rC   •   s    z'group_typed_literal.<locals>.valid_nextc                 S   s   | d k	o| j tjjŽ S r'   )r   r   rI   ÚM_EXTENDr8   r%   r%   r&   Úvalid_final˜   s    z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=   ›   s    z!group_typed_literal.<locals>.postF©ÚextendT)r?   r   rI   )r   r   rN   rB   rC   rP   r=   r%   r%   r&   Úgroup_typed_literal†   s     ÿ ÿrS   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)r6   r7   ÚOperatorr   )r#   rE   Ú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@   r6   ÚNameÚStringÚSymbolr   )r#   ÚsqlclsÚttypesr%   r%   r&   rB   ­   s    z group_period.<locals>.valid_prevc                 S   s   dS ©NTr%   r8   r%   r%   r&   rC   ²   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 rW   )
r   r(   ÚFunctionr6   r[   r\   r]   ÚWildcardÚSingler   )r   r;   r$   r<   r^   r_   Únext_rC   r%   r%   r&   r=   ¶   s
    zgroup_period.<locals>.postr>   rJ   r%   r%   r&   Úgroup_period¤   s
    	re   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 rG   )Ú
is_keywordÚ
normalizedr8   r%   r%   r&   r   Ã   s    zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rg   rf   r8   r%   r%   r&   rB   Æ   s    zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o$| d k	S ©N©rZ   )r6   ÚDMLÚDDLÚCTEr   )r#   r_   r%   r%   r&   rC   É   s    zgroup_as.<locals>.valid_nextc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=   Í   s    zgroup_as.<locals>.postr>   rJ   r%   r%   r&   Úgroup_asÂ   s
    rn   c                 C   s8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   s   |   tjd¡S )Nz:=)r   r6   Ú
Assignmentr8   r%   r%   r&   r   Ô   s    zgroup_assignment.<locals>.matchc                 S   s   | d k	o| j tjfkS r'   )rE   r6   rF   r8   r%   r%   r&   r9   ×   s    zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p"|}||fS )Nú;©rM   r"   )r6   r7   Útoken_next_by)r   r;   r$   r<   Zm_semicolonZsnidxÚ_r%   r%   r&   r=   Ú   s    
zgroup_assignment.<locals>.post)r?   r   ro   rA   r%   r%   r&   Úgroup_assignmentÓ   s
    rt   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'   )rE   r6   rU   Ú
Comparisonr8   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)rZ   rY   Trh   F)r   rf   rg   r8   ©r^   r_   r%   r&   r9   ì   s
    zgroup_comparison.<locals>.validc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=   ô   s    zgroup_comparison.<locals>.postFrQ   )r   r+   ra   r@   Ú	OperationrI   ÚT_NUMERICALÚT_STRINGÚT_NAMEr?   ru   rA   r%   rv   r&   Úgroup_comparisonä   s     ÿ
   ÿr{   c                 C   sJ   t jjt jf}| j|d�\}}|rF|  tj||¡ | j||d�\}}qd S )Nrj   ©rZ   r"   )r6   r\   r]   r[   rr   r   r   r@   )r   r_   r$   r#   r%   r%   r&   Úgroup_identifierü   s
    r}   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 )NrL   rX   rq   )
rr   r   ÚOverr   Ú
token_nextr   r+   r6   r[   r   )r   r$   r#   r<   rd   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   s   t | tjƒS r'   )r   r   r(   r8   r%   r%   r&   r     s    zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rW   ©r   r8   rv   r%   r&   rB     s    z group_arrays.<locals>.valid_prevc                 S   s   dS r`   r%   r8   r%   r%   r&   rC     s    z group_arrays.<locals>.valid_nextc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=     s    zgroup_arrays.<locals>.postTF)rR   r   )	r   r(   r@   ra   r6   r[   r\   r]   r?   rJ   r%   rv   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 ri   )r   r6   rU   rb   r8   r%   r%   r&   r   )  s    zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )NrX   )ZCURRENT_DATEZCURRENT_TIMEÚCURRENT_TIMESTAMP)r   r   r6   rF   r8   rv   r%   r&   r9   ,  s    þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r'   )r6   rU   rE   r:   r%   r%   r&   r=   2  s    zgroup_operator.<locals>.postFrQ   )rx   ry   rz   r   r(   r+   ra   r@   rw   rI   r?   rA   r%   rv   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ú,r5   r8   r%   r%   r&   r   B  s    z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rY   rM   rZ   r�   r8   ©Zm_roler^   r_   r%   r&   r9   E  s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r'   r%   r:   r%   r%   r&   r=   H  s    z#group_identifier_list.<locals>.postTrQ   )r6   rF   r   ra   r-   r@   ru   ÚIdentifierListrw   rx   ry   rz   ÚCommentrb   r?   rA   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 )Nrj   c                 S   s   t | tjd�p| jS ri   )r   r6   rŠ   Ú
is_newline)Útkr%   r%   r&   Ú<lambda>U  ó    z group_comments.<locals>.<lambda>)r"   F)Úskip_wsr|   )rr   r6   rŠ   Ú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 )NrL   rq   éÿÿÿÿr   )	rr   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�\}}|rz|  
|¡\}}t|t jƒrb| jt j||dd� | j|tj	|d�\}}q0d S )NrX   TrQ   )rY   rZ   r"   )r   r+   ra   r-   r@   rw   ru   rr   r6   ÚNumberr   r   r   )r   ZI_ALIASr$   r#   r<   rd   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TABLErH   rj   r|   )r   rV   Úupperrr   r6   r[   r   r   r   r+   r~   r   ra   )r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr$   r#   r<   rd   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 tokenrj   rX   r|   N)
rr   r6   rF   ÚOrderr’   r   r   r@   rœ   r   ©r   r$   r#   r;   Ú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)rY   TrQ   )rY   r"   )rr   r   rŠ   r’   r   Ú	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VALUESrL   r—   TrQ   )	rr   r6   rF   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 ]}|| ƒ q6| S r'   )r–   r*   r,   r.   r0   r2   r4   r€   rŸ   r›   re   r‚   r}   r£   rD   rK   rS   r„   r{   rn   r�   rt   r¥   r‹   r©   )ÚstmtÚfuncr%   r%   r&   Úgroupº  s8    ã
r¬   c                 C   s   dS r`   r%   rj   r%   r%   r&   rŽ   ß  r�   rŽ   c                 C   s   dS r`   r%   rj   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   rQ   )r   r   r   r   r   r   r   r   r   r   r?   r   r   )r   r   r   rB   rC   r=   rR   r   r   r    r;   r¢   r!   r"   r#   r$   r<   rd   Zfrom_idxZto_idxÚgrpr%   r%   r&   r?   Þ  sF    	
ÿÿ
ÿ   ÿ

r?   )r   )7Úsqlparser   r   r6   Úsqlparse.exceptionsr   Úsqlparse.utilsr   r   r   r   rœ   ÚIntegerZFloatrx   r\   rc   r]   ry   r[   ZPlaceholderrz   r   r*   r,   r.   r0   r2   r4   rD   rK   rS   re   rn   rt   r{   r@   r}   r~   r€   r‚   r„   r‹   rŠ   r–   r˜   r›   r�   ra   rŸ   r£   r¥   r©   r¬   r?   r%   r%   r%   r&   Ú<module>   sd   
1
	
	






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