U
    Œû<ié<  ã                   @   sª  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dCd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.d/„ ƒZ,eƒ d0d1„ ƒZ-eej.ƒd2d3„ ƒZ/eej"ƒd4d5„ ƒZ0eƒ d6d7„ ƒZ1d8d9„ Z2d:d;„ Z3d<d=„ d>d=„ d?d@d@d fdAdB„Z4d?S )Dé    )Úsql)Útokens)ÚrecurseÚimtéd   i'  c              	   C   sî   t dk	r|t krdS tdk	r.t| jƒtkr.dS g }d}t| ƒ}t|ƒD ]¢\}}|| }|jr^qF|jr€t||ƒs€t	|||d ƒ qF|j
|jŽ r˜| |¡ qF|j
|jŽ rFz| ¡ }	W n tk
rÈ   Y qFY nX |}
|  ||	|
¡ ||
|	 7 }qFdS )z*Groups Tokens that have beginning and end.Nr   é   )ÚMAX_GROUPING_DEPTHÚ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!   úX/var/www/html/mysite/school/venv/lib/python3.8/site-packages/sqlparse/engine/grouping.pyr      s4    ÿ
r   c                 C   s   t | tjƒ d S ©N)r   r   ÚSquareBrackets©r   r!   r!   r"   Úgroup_bracketsG   s    r&   c                 C   s   t | tjƒ d S r#   )r   r   ÚParenthesisr%   r!   r!   r"   Úgroup_parenthesisK   s    r(   c                 C   s   t | tjƒ d S r#   )r   r   ÚCaser%   r!   r!   r"   Ú
group_caseO   s    r*   c                 C   s   t | tjƒ d S r#   )r   r   ÚIfr%   r!   r!   r"   Úgroup_ifS   s    r,   c                 C   s   t | tjƒ d S r#   )r   r   ÚForr%   r!   r!   r"   Ú	group_forW   s    r.   c                 C   s   t | tjƒ d S r#   )r   r   Ú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   `   s    zgroup_typecasts.<locals>.matchc                 S   s   | d k	S r#   r!   r4   r!   r!   r"   Úvalidc   s    zgroup_typecasts.<locals>.validc                 S   s   ||fS r#   r!   ©r   Úpidxr    Únidxr!   r!   r"   Úpostf   s    zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   r5   r9   Ú
valid_prevÚ
valid_nextr!   r!   r"   Úgroup_typecasts_   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   n   s    zgroup_tzcasts.<locals>.matchc                 S   s   | d k	S r#   r!   r4   r!   r!   r"   r>   q   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?   t   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_tzcastsm   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   Ú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?   rL   r9   r!   r!   r"   Úgroup_typed_literal�   s     ÿ ÿrO   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 rS   )
r   r$   ÚFunctionr2   rW   rX   rY   ÚWildcardÚSingler   )r   r7   r    r8   rZ   r[   Únext_r?   r!   r!   r"   r9   ±   s
    zgroup_period.<locals>.postr:   rF   r!   r!   r"   Úgroup_periodŸ   s
    	ra   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)rc   rb   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©rV   )r2   ÚDMLÚDDLÚCTEr   )r   r[   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
    rj   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   rk   r=   r!   r!   r"   Úgroup_assignmentÎ   s
    rp   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   rQ   Ú
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)rV   rU   Trd   F)r   rb   rc   r4   ©rZ   r[   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>.postFrM   )r   r'   r]   r<   Ú	OperationrE   ÚT_NUMERICALÚT_STRINGÚT_NAMEr;   rq   r=   r!   rr   r"   Úgroup_comparisonß   s     ÿ
   ÿrw   c                 C   sJ   t jjt jf}| j|d�\}}|rF|  tj||¡ | j||d�\}}qd S )Nrf   ©rV   r   )r2   rX   rY   rW   rn   r   r   r<   )r   r[   r    r   r!   r!   r"   Úgroup_identifier÷   s
    ry   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   rT   rm   )
rn   r   ÚOverr   Ú
token_nextr   r'   r2   rW   r   )r   r    r   r8   r`   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$   r4   r!   r!   r"   r     s    zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rS   ©r   r4   rr   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)rN   r   )	r   r$   r<   r]   r2   rW   rX   rY   r;   rF   r!   rr   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 re   )r   r2   rQ   r^   r4   r!   r!   r"   r   $  s    zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )NrT   )ZCURRENT_DATEZCURRENT_TIMEÚCURRENT_TIMESTAMP)r   r   r2   rB   r4   rr   r!   r"   r5   '  s    þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r#   )r2   rQ   rA   r6   r!   r!   r"   r9   -  s    zgroup_operator.<locals>.postFrM   )rt   ru   rv   r   r$   r'   r]   r<   rs   rE   r;   r=   r!   rr   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   =  s    z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rU   rI   rV   r}   r4   ©Zm_rolerZ   r[   r!   r"   r5   @  s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r#   r!   r6   r!   r!   r"   r9   C  s    z#group_identifier_list.<locals>.postTrM   )r2   rB   r   r]   r)   r<   rq   ÚIdentifierListrs   rt   ru   rv   ÚCommentr^   r;   r=   r!   r„   r"   Úgroup_identifier_list6  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 )Nrf   c                 S   s   t | tjd�p| jS re   )r   r2   r†   Ú
is_newline)Útkr!   r!   r"   Ú<lambda>P  ó    z group_comments.<locals>.<lambda>)r   F)Úskip_wsrx   )rn   r2   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�\}}|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   rm   éÿÿÿÿr   )	rn   r   ÚWherer   r   Ú_groupable_tokensr   Útoken_indexr   r�   r!   r!   r"   Úgroup_whereX  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 )NrT   TrM   )rU   rV   r   )r   r'   r]   r)   r<   rs   rq   rn   r2   ÚNumberr{   r   r   )r   ZI_ALIASr    r   r8   r`   r!   r!   r"   Úgroup_aliasedi  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   rf   rx   )r   rR   Úupperrn   r2   rW   r{   r   r   r'   rz   r   r]   )r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr    r   r8   r`   Zover_idxZoverr�   r!   r!   r"   Úgroup_functionsv  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 tokenrf   rT   rx   N)
rn   r2   rB   Ú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)rU   TrM   )rU   r   )rn   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VALUESrH   r“   TrM   )	rn   r2   rB   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*   r,   r.   r0   r|   r›   r—   ra   r~   ry   rŸ   r@   rG   rO   r€   rw   rj   r™   rp   r¡   r‡   r¥   )ÚstmtÚfuncr!   r!   r"   Úgroupµ  s8    ã
r¨   c                 C   s   dS r\   r!   rf   r!   r!   r"   rŠ   Ú  r‹   rŠ   c                 C   s   dS r\   r!   rf   r!   r!   r"   rŠ   Û  r‹   NTc	                 C   s  t dk	r|t krdS tdk	r.t| jƒtkr.dS d}	d\}
}t| ƒ}t|ƒD ]Ê\}}||	 }|dk rdqJ|jrlqJ|rœ|jrœt||ƒsœt	|||||||d|d ƒ	 ||ƒ�r
|  
|¡\}}|�r
||ƒ�r
||ƒ�r
|| |
||ƒ\}}| j||||d�}|	|| 7 }	|| }
}qJ|| }
}qJdS )zDGroups together tokens that are joined by a middle token. i.e. x < yNr   )NNTr   rM   )r   r	   r
   r   r   r   r   r   r   r;   r{   r   )r   r   r   r>   r?   r9   rN   r   r   r   r7   rž   r   r   r   r    r8   r`   Zfrom_idxZto_idxÚgrpr!   r!   r"   r;   Ù  s>    	ÿ   ÿ

r;   )r   )5Úsqlparser   r   r2   Úsqlparse.utilsr   r   r   r	   r˜   ÚIntegerZFloatrt   rX   r_   rY   ru   rW   ZPlaceholderrv   r   r&   r(   r*   r,   r.   r0   r@   rG   rO   ra   rj   rp   rw   r<   ry   rz   r|   r~   r€   r‡   r†   r’   r”   r—   r™   r]   r›   rŸ   r¡   r¥   r¨   r;   r!   r!   r!   r"   Ú<module>   sb   
-
	
	






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