U
    •¾|e6  ã                   @   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k
r�   Y qY nX |}|  |||¡ ||| 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   úU/var/www/website-v5/atlas_env/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_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   Ú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 k	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-   r1   Ú
valid_prevÚ
valid_nextr   r   r   Úgroup_typecastsL   s
    r8   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   )Úttyper*   ÚKeywordZTZCastr,   r   r   r   r   [   s    zgroup_tzcasts.<locals>.matchc                 S   s   | d k	S r   r   r,   r   r   r   r6   ^   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   r*   r:   r   ÚTypedLiteralr   r,   r   r   r   r7   a   s    ÿýz!group_tzcasts.<locals>.valid_nextc                 S   s   ||fS r   r   r.   r   r   r   r1   h   s    zgroup_tzcasts.<locals>.postr2   ©r   r   r6   r7   r1   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   r=   r   r,   r   r   r   r   t   s    z"group_typed_literal.<locals>.matchc                 S   s   t | tjƒS r   )r
   r   r=   r,   r   r   r   Úmatch_to_extendw   s    z,group_typed_literal.<locals>.match_to_extendc                 S   s   | d k	S r   r   r,   r   r   r   r6   z   s    z'group_typed_literal.<locals>.valid_prevc                 S   s   | d k	o| j tjjŽ S r   )r   r   r=   r   r,   r   r   r   r7   }   s    z'group_typed_literal.<locals>.valid_nextc                 S   s   | d k	o| j tjjŽ S r   )r   r   r=   ÚM_EXTENDr,   r   r   r   Úvalid_final€   s    z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r   r   r.   r   r   r   r1   ƒ   s    z!group_typed_literal.<locals>.postF©ÚextendT)r3   r   r=   )r   r   rB   r6   r7   rD   r1   r   r   r   Úgroup_typed_literaln   s     ÿ ÿrG   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   r4   r*   ÚNameÚStringÚSymbolr   )r   ÚsqlclsÚttypesr   r   r   r6   �   s    z group_period.<locals>.valid_prevc                 S   s   dS ©NTr   r,   r   r   r   r7   •   s    z group_period.<locals>.valid_nextc                 S   sT   t jt jf}tjtjjtjf}|d k	r.| | nd }t|||d�}|rL||fS ||fS rI   )	r   r   ÚFunctionr*   rM   rN   rO   ÚWildcardr   )r   r/   r   r0   rP   rQ   Únext_r7   r   r   r   r1   ™   s
    zgroup_period.<locals>.postr2   r>   r   r   r   Úgroup_periodŒ   s
    	rV   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 r;   )Ú
is_keywordÚ
normalizedr,   r   r   r   r   ¦   s    zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rX   rW   r,   r   r   r   r6   ©   s    zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o$| d k	S ©N©rL   )r*   ÚDMLÚDDLÚCTEr   )r   rQ   r   r   r   r7   ¬   s    zgroup_as.<locals>.valid_nextc                 S   s   ||fS r   r   r.   r   r   r   r1   °   s    zgroup_as.<locals>.postr2   r>   r   r   r   Úgroup_as¥   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   r*   Ú
Assignmentr,   r   r   r   r   ·   s    zgroup_assignment.<locals>.matchc                 S   s   | d k	o| j tjkS r   )r9   r*   r:   r,   r   r   r   r-   º   s    zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p"|}||fS )Nú;©rA   r   )r*   r+   Útoken_next_by)r   r/   r   r0   Zm_semicolonZsnidxÚ_r   r   r   r1   ½   s    
zgroup_assignment.<locals>.post)r3   r   r`   r5   r   r   r   Úgroup_assignment¶   s
    re   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   )r9   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)rL   rK   TrY   F)r   rW   rX   r,   ©rP   rQ   r   r   r-   Ï   s
    zgroup_comparison.<locals>.validc                 S   s   ||fS r   r   r.   r   r   r   r1   ×   s    zgroup_comparison.<locals>.postFrE   )r   r   rS   r4   Ú	Operationr=   ÚT_NUMERICALÚT_STRINGÚT_NAMEr3   rg   r5   r   rh   r   Úgroup_comparisonÇ   s     ÿ
   ÿrm   c                 C   sJ   t jjt jf}| j|d�\}}|rF|  tj||¡ | j||d�\}}qd S )Nr[   ©rL   r   )r*   rN   rO   rM   rc   r   r   r4   )r   rQ   r   r   r   r   r   Úgroup_identifierß   s
    ro   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 rI   ©r   r,   rh   r   r   r6   ð   s    z group_arrays.<locals>.valid_prevc                 S   s   dS rR   r   r,   r   r   r   r7   ó   s    z group_arrays.<locals>.valid_nextc                 S   s   ||fS r   r   r.   r   r   r   r1   ö   s    zgroup_arrays.<locals>.postTF)rF   r   )	r   r   r4   rS   r*   rM   rN   rO   r3   r>   r   rh   r   Úgroup_arraysé   s    
    ÿrq   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 rZ   )r   r*   rf   rT   r,   r   r   r   r     s    zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )NrJ   )ZCURRENT_DATEZCURRENT_TIMEÚCURRENT_TIMESTAMP)r   r   r*   r:   r,   rh   r   r   r-     s    þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r   )r*   rf   r9   r.   r   r   r   r1     s    zgroup_operator.<locals>.postFrE   )rj   rk   rl   r   r   r   rS   r4   ri   r=   r3   r5   r   rh   r   Úgroup_operatorý   s       ÿ
   ÿrs   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)rK   rA   rL   rp   r,   ©Zm_rolerP   rQ   r   r   r-     s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r   r   r.   r   r   r   r1   !  s    z#group_identifier_list.<locals>.postTrE   )r*   r:   r   rS   r!   r4   rg   ÚIdentifierListri   rj   rk   rl   ÚCommentrT   r3   r5   r   rw   r   Úgroup_identifier_list  s$    
 ÿ
ÿ
   ÿrz   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 )Nr[   c                 S   s   t | tjd�p| jS rZ   )r   r*   ry   r   )Útkr   r   r   Ú<lambda>.  ó    z group_comments.<locals>.<lambda>)r   F)Úskip_wsrn   )rc   r*   ry   Útoken_not_matchingÚ
token_prevr   r   ©r   r   r   ZeidxÚendr   r   r   Úgroup_comments)  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 )Nr@   rb   éÿÿÿÿé   )	rc   r   ÚWherer   r   Ú_groupable_tokensr   Útoken_indexr   r�   r   r   r   Úgroup_where6  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 )NrJ   TrE   )rK   rL   r   )r   r   rS   r!   r4   ri   rg   rc   r*   ÚNumberÚ
token_nextr
   r   )r   ZI_ALIASr   r   r0   rU   r   r   r   Úgroup_aliasedG  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š|  
tj||¡ | jtj|d�\}}qld S )NFZCREATETZTABLEr<   r[   rn   )r   ÚvalueÚupperrc   r*   rM   r‹   r
   r   r   r   rS   )	r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr   r   r0   rU   r   r   r   Úgroup_functionsT  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 tokenr[   rJ   rn   N)
rc   r*   r:   ÚOrderr€   r   r   r4   rŠ   r   ©r   r   r   r/   Úprev_r   r   r   Úgroup_orderk  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)rK   TrE   )rK   r   )rc   r   ry   r€   r
   Ú	TokenListr   r‘   r   r   r   Úalign_commentsv  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@   r„   TrE   )	rc   r*   r:   r
   r   r   r‹   r   ÚValues)r   r   r   Ú	start_idxÚend_idxr   r   r   Úgroup_values�  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   )rƒ   r   r    r"   r$   r&   r(   r�   r‰   rV   rq   ro   r“   r8   r?   rG   rs   rm   r_   rŒ   re   r•   rz   r™   )ÚstmtÚfuncr   r   r   Úgroup�  s6    ä
rœ   c                 C   s   dS rR   r   r[   r   r   r   r|   ±  r}   r|   c                 C   s   dS rR   r   r[   r   r   r   r|   ²  r}   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   )NNrE   N)r   r   r   r	   r
   r3   r‹   r   )r   r   r   r6   r7   r1   rF   r   r   r/   r’   r   r   r   r0   rU   Zfrom_idxZto_idxÚgrpr   r   r   r3   °  s&    	
r3   )1Úsqlparser   r   r*   Úsqlparse.utilsr   r   rŠ   ÚIntegerZFloatrj   rN   ÚSinglerO   rk   rM   ZPlaceholderrl   r   r   r    r"   r$   r&   r(   r8   r?   rG   rV   r_   re   rm   r4   ro   rq   rs   rz   ry   rƒ   r†   r‰   rŒ   rS   r�   r“   r•   r™   rœ   r3   r   r   r   r   Ú<module>   sV   #
	





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