a
    ÛEb´4  ã                   @   s‚  d dl mZ d dl mZ d dlmZm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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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ƒ d,d-„ ƒZ)eej*ƒd.d/„ ƒZ+d0d1„ Z,eƒ d2d3„ ƒZ-d4d5„ Z.d6d7„ Z/d8d9„ d:d9„ d;d<d<fd=d>„Z0d;S )?é    )Úsql)Útokens)ÚrecurseÚimtc           	   	   C   s´   g }d}t t| ƒƒD ]š\}}|| }|jr,q|jrHt||ƒsHt||ƒ q|j|jŽ r`| |¡ q|j|j	Ž rz| 
¡ }W n tyŽ   Y qY n0 |}|  |||¡ ||| 7 }qdS )z*Groups Tokens that have beginning and end.r   N)Ú	enumerateÚlistÚis_whitespaceÚis_groupÚ
isinstanceÚ_group_matchingÚmatchÚM_OPENÚappendÚM_CLOSEÚpopÚ
IndexErrorÚgroup_tokens)	ÚtlistÚclsZopensÚtidx_offsetÚidxÚtokenÚtidxZopen_idxZ	close_idx© r   úX/home/ja/django-apps/lartica_env/lib/python3.9/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_brackets4   s    r   c                 C   s   t | tjƒ d S r   )r   r   ÚParenthesisr   r   r   r   Úgroup_parenthesis8   s    r    c                 C   s   t | tjƒ d S r   )r   r   ÚCaser   r   r   r   Ú
group_case<   s    r"   c                 C   s   t | tjƒ d S r   )r   r   ÚIfr   r   r   r   Úgroup_if@   s    r$   c                 C   s   t | tjƒ d S r   )r   r   ÚForr   r   r   r   Ú	group_forD   s    r&   c                 C   s   t | tjƒ d S r   )r   r   ZBeginr   r   r   r   Úgroup_beginH   s    r'   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   M   s    zgroup_typecasts.<locals>.matchc                 S   s   | d uS r   r   r+   r   r   r   ÚvalidP   s    zgroup_typecasts.<locals>.validc                 S   s   ||fS r   r   ©r   Úpidxr   Únidxr   r   r   ÚpostS   s    zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   r,   r0   Ú
valid_prevÚ
valid_nextr   r   r   Úgroup_typecastsL   s
    r7   c                 C   s0   dd„ }dd„ }dd„ }t | tj||||ƒ d S )Nc                 S   s   | j tjjkS r   )Úttyper)   ÚKeywordZTZCastr+   r   r   r   r   [   s    zgroup_tzcasts.<locals>.matchc                 S   s   | d uS r   r   r+   r   r   r   r,   ^   s    zgroup_tzcasts.<locals>.validc                 S   s   ||fS r   r   r-   r   r   r   r0   a   s    zgroup_tzcasts.<locals>.postr1   )r   r   r,   r0   r   r   r   Úgroup_tzcastsZ   s    r:   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   ÚTypedLiteralr   r+   r   r   r   r   m   s    z"group_typed_literal.<locals>.matchc                 S   s   t | tjƒS r   )r
   r   r=   r+   r   r   r   Úmatch_to_extendp   s    z,group_typed_literal.<locals>.match_to_extendc                 S   s   | d uS r   r   r+   r   r   r   r5   s   s    z'group_typed_literal.<locals>.valid_prevc                 S   s   | d uo| j tjjŽ S r   )r   r   r=   r   r+   r   r   r   r6   v   s    z'group_typed_literal.<locals>.valid_nextc                 S   s   | d uo| j tjjŽ S r   )r   r   r=   ZM_EXTENDr+   r   r   r   Úvalid_finaly   s    z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r   r   r-   r   r   r   r0   |   s    z!group_typed_literal.<locals>.postF©ÚextendT)r2   r   r=   )r   r   r>   r5   r6   r?   r0   r   r   r   Úgroup_typed_literalg   s    ÿÿrB   c                 C   s8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	Nc                 S   s   |   tjd¡S )NÚ.r(   r+   r   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   r3   r)   ÚNameÚStringÚSymbolr   )r   ÚsqlclsÚttypesr   r   r   r5   ‰   s    z group_period.<locals>.valid_prevc                 S   s   dS ©NTr   r+   r   r   r   r6   Ž   s    z group_period.<locals>.valid_nextc                 S   sT   t jt jf}tjtjjtjf}|d ur.| | nd }t|||d�}|rL||fS ||fS rD   )	r   r   ÚFunctionr)   rH   rI   rJ   ÚWildcardr   )r   r.   r   r/   rK   rL   Únext_r6   r   r   r   r0   ’   s
    zgroup_period.<locals>.postr1   ©r   r   r5   r6   r0   r   r   r   Úgroup_period…   s
    	rR   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 )NZAS)Ú
is_keywordÚ
normalizedr+   r   r   r   r   Ÿ   s    zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rT   rS   r+   r   r   r   r5   ¢   s    zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o$| d uS ©N©rG   )r)   ZDMLZDDLZCTEr   )r   rL   r   r   r   r6   ¥   s    zgroup_as.<locals>.valid_nextc                 S   s   ||fS r   r   r-   r   r   r   r0   ©   s    zgroup_as.<locals>.postr1   rQ   r   r   r   Úgroup_asž   s
    rX   c                 C   s8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   s   |   tjd¡S )Nz:=)r   r)   Ú
Assignmentr+   r   r   r   r   °   s    zgroup_assignment.<locals>.matchc                 S   s   | d uo| j tjvS r   )r8   r)   r9   r+   r   r   r   r,   ³   s    zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p"|}||fS )Nú;©r<   r   )r)   r*   Útoken_next_by)r   r.   r   r/   Zm_semicolonZsnidxÚ_r   r   r   r0   ¶   s    
zgroup_assignment.<locals>.post)r2   r   rY   r4   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   s   | j tjjkS r   )r8   r)   ÚOperatorÚ
Comparisonr+   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)rG   rF   TrU   F)r   rS   rT   r+   ©rK   rL   r   r   r,   È   s
    zgroup_comparison.<locals>.validc                 S   s   ||fS r   r   r-   r   r   r   r0   Ð   s    zgroup_comparison.<locals>.postFr@   )r   r   rN   r3   Ú	Operationr=   ÚT_NUMERICALÚT_STRINGÚT_NAMEr2   r`   r4   r   ra   r   Úgroup_comparisonÀ   s    ÿ
ÿrf   c                 C   sJ   t jjt jf}| j|d�\}}|rF|  tj||¡ | j||d�\}}qd S )NrW   ©rG   r   )r)   rI   rJ   rH   r\   r   r   r3   )r   rL   r   r   r   r   r   Úgroup_identifierØ   s
    rh   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   r+   r   r   r   r   æ   s    zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S rD   ©r   r+   ra   r   r   r5   é   s    z group_arrays.<locals>.valid_prevc                 S   s   dS rM   r   r+   r   r   r   r6   ì   s    z group_arrays.<locals>.valid_nextc                 S   s   ||fS r   r   r-   r   r   r   r0   ï   s    zgroup_arrays.<locals>.postTF)rA   r   )	r   r   r3   rN   r)   rH   rI   rJ   r2   rQ   r   ra   r   Úgroup_arraysâ   s    

ÿrj   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 rV   )r   r)   r_   rO   r+   r   r   r   r   û   s    zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )NrE   )ZCURRENT_DATEZCURRENT_TIMEZCURRENT_TIMESTAMP)r   r   r)   r9   r+   ra   r   r   r,   þ   s    þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r   )r)   r_   r8   r-   r   r   r   r0     s    zgroup_operator.<locals>.postFr@   )rc   rd   re   r   r   r   rN   r3   rb   r=   r2   r4   r   ra   r   Úgroup_operatorö   s    ÿ
ÿrk   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ú,r(   r+   r   r   r   r     s    z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)rF   r<   rG   ri   r+   ©Zm_rolerK   rL   r   r   r,     s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r   r   r-   r   r   r   r0     s    z#group_identifier_list.<locals>.postTr@   )r)   r9   r   rN   r!   r3   r`   ZIdentifierListrb   rc   rd   re   ÚCommentrO   r2   r4   r   ro   r   Úgroup_identifier_list  s    
ÿ
ÿ
ÿrq   c                 C   sp   | j tjd�\}}|rl| jdd„ |d�\}}|d urV| j|dd�\}}|  tj||¡ | j tj|d�\}}qd S )NrW   c                 S   s   t | tjd�p| jS rV   )r   r)   rp   r   )Ztkr   r   r   Ú<lambda>'  ó    z group_comments.<locals>.<lambda>)r   F)Zskip_wsrg   )r\   r)   rp   Ztoken_not_matchingÚ
token_prevr   r   ©r   r   r   ZeidxÚendr   r   r   Úgroup_comments"  s    ÿ
rw   c                 C   s†   | j tjjd�\}}|r‚| j tjj|d�\}}|d u rB| jd }n| j|d  }|  |¡}|  tj||¡ | j tjj|d�\}}qd S )Nr;   r[   éÿÿÿÿé   )	r\   r   ÚWherer   r   Z_groupable_tokensr   Ztoken_indexr   ru   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 )NrE   Tr@   )rF   rG   r   )r   r   rN   r!   r3   rb   r`   r\   r)   ÚNumberÚ
token_nextr
   r   )r   ZI_ALIASr   r   r/   rP   r   r   r   Úgroup_aliased@  s    ÿr~   c                 C   s–   d}d}| j D ] }|jdkr d}|jdkrd}q|r<|r<d S | jtjd�\}}|r’|  |¡\}}t|tjƒr||  	tj
||¡ | jtj|d�\}}qNd S )NFZCREATETZTABLErW   rg   )r   Úvaluer\   r)   rH   r}   r
   r   r   r   rN   )r   Z
has_createZ	has_tableZ	tmp_tokenr   r   r/   rP   r   r   r   Úgroup_functionsM  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 tokenrW   rE   rg   N)
r\   r)   r9   ZOrderrt   r   r   r3   r|   r   ©r   r   r   r.   Úprev_r   r   r   Úgroup_ordera  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)rF   Tr@   )rF   r   )r\   r   rp   rt   r
   Z	TokenListr   r�   r   r   r   Úalign_commentsl  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VALUESr;   rx   Tr@   )	r\   r)   r9   r
   r   r   r}   r   ÚValues)r   r   r   Z	start_idxZend_idxr   r   r   Úgroup_valuesw  s    r†   c                 C   sF   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 ]}|| ƒ q4| S r   )rw   r   r    r"   r$   r&   r'   r€   r{   rR   rj   rh   rƒ   r7   r:   rB   rk   rf   rX   r~   r^   r„   rq   r†   )ÚstmtÚfuncr   r   r   Úgroupƒ  s6    ä
r‰   c                 C   s   dS rM   r   rW   r   r   r   rr   §  rs   rr   c                 C   s   dS rM   r   rW   r   r   r   rr   ¨  rs   NTc              	   C   sØ   d}d\}	}
t t| ƒƒD ]º\}}|| }|dk r2q|jr:q|rb|jrbt||ƒsbt|||||||ƒ ||ƒrÈ|  |¡\}}|
rÈ||
ƒrÈ||ƒrÈ|| |	||ƒ\}}| j||||d�}||| 7 }|| }	}
q|| }	}
qdS )zDGroups together tokens that are joined by a middle token. i.e. x < yr   )NNr@   N)r   r   r   r	   r
   r2   r}   r   )r   r   r   r5   r6   r0   rA   r   r   r.   r‚   r   r   r   r/   rP   Zfrom_idxZto_idxÚgrpr   r   r   r2   ¦  s&    	
r2   )1Zsqlparser   r   r)   Zsqlparse.utilsr   r   r|   ÚIntegerÚFloatrc   rI   ÚSinglerJ   rd   rH   ZPlaceholderre   r   r   r    r"   r$   r&   r'   r7   r:   rB   rR   rX   r^   rf   r3   rh   rj   rk   rq   rp   rw   rz   r{   r~   rN   r€   rƒ   r„   r†   r‰   r2   r   r   r   r   Ú<module>   sV   #
	





$û