o
    ûÞh
9  ã                   @   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!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,ƒd0d1„ ƒZ-eej ƒd2d3„ ƒZ.eƒ d4d5„ ƒZ/d6d7„ Z0d8d9„ Z1d:d;„ d<d;„ d=d>d>fd?d@„Z2d=S )Aé    )Úsql)Útokens)ÚrecurseÚimtc           	   	   C   s°   g }d}t t| ƒƒD ]K\}}|| }|jrq
|jr$t||ƒs$t||ƒ q
|j|jŽ r0| |¡ q
|j|j	Ž rUz| 
¡ }W n	 tyE   Y q
w |}|  |||¡ ||| 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ÚclsÚopensÚtidx_offsetÚidxÚtokenÚtidxÚopen_idxÚ	close_idx© r   úX/var/www/html/premium_crap/venv/lib/python3.10/site-packages/sqlparse/engine/grouping.pyr      s,   
ý€är   c                 C   ó   t | tjƒ d S ©N)r   r   ÚSquareBrackets©r   r   r   r   Úgroup_brackets4   ó   r"   c                 C   r   r   )r   r   ÚParenthesisr!   r   r   r   Úgroup_parenthesis8   r#   r%   c                 C   r   r   )r   r   ÚCaser!   r   r   r   Ú
group_case<   r#   r'   c                 C   r   r   )r   r   ÚIfr!   r   r   r   Úgroup_if@   r#   r)   c                 C   r   r   )r   r   ÚForr!   r   r   r   Ú	group_forD   r#   r+   c                 C   r   r   )r   r   ÚBeginr!   r   r   r   Úgroup_beginH   r#   r-   c                 C   ó8   dd„ }dd„ }dd„ }| }}t | tj||||ƒ d S )Nc                 S   ó   |   tjd¡S )Nz::©r   ÚTÚPunctuation©r   r   r   r   r   M   ó   zgroup_typecasts.<locals>.matchc                 S   ó   | d uS r   r   r3   r   r   r   ÚvalidP   ó   zgroup_typecasts.<locals>.validc                 S   ó   ||fS r   r   ©r   Úpidxr   Únidxr   r   r   ÚpostS   r7   zgroup_typecasts.<locals>.post©Ú_groupr   Ú
Identifier©r   r   r6   r<   Ú
valid_prevÚ
valid_nextr   r   r   Úgroup_typecastsL   s
   rC   c                 C   ó8   dd„ }dd„ }dd„ }dd„ }t | tj||||ƒ d S )	Nc                 S   ó   | j tjjkS r   )Úttyper1   ÚKeywordÚTZCastr3   r   r   r   r   [   r4   zgroup_tzcasts.<locals>.matchc                 S   r5   r   r   r3   r   r   r   rA   ^   r7   z!group_tzcasts.<locals>.valid_prevc                 S   s*   | d uo| j p|  tjd¡p| jtjjŽ S ©NÚAS)r   r   r1   rG   r   ÚTypedLiteralr   r3   r   r   r   rB   a   s   ÿýz!group_tzcasts.<locals>.valid_nextc                 S   r8   r   r   r9   r   r   r   r<   h   r7   zgroup_tzcasts.<locals>.postr=   ©r   r   rA   rB   r<   r   r   r   Úgroup_tzcastsZ   s
   rM   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   rK   r   r3   r   r   r   r   t   r#   z"group_typed_literal.<locals>.matchc                 S   ó   t | tjƒS r   )r
   r   rK   r3   r   r   r   Úmatch_to_extendw   ó   z,group_typed_literal.<locals>.match_to_extendc                 S   r5   r   r   r3   r   r   r   rA   z   r7   z'group_typed_literal.<locals>.valid_prevc                 S   ó   | d uo
| j tjjŽ S r   )r   r   rK   r   r3   r   r   r   rB   }   ó   z'group_typed_literal.<locals>.valid_nextc                 S   rS   r   )r   r   rK   ÚM_EXTENDr3   r   r   r   Úvalid_final€   rT   z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r   r   r9   r   r   r   r<   ƒ   r7   z!group_typed_literal.<locals>.postF©ÚextendT)r>   r   rK   )r   r   rQ   rA   rB   rV   r<   r   r   r   Úgroup_typed_literaln   s   ÿ
ÿrY   c                 C   rD   )	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)r1   r2   ÚOperatorr   )r   rF   Ú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?   r1   ÚNameÚStringÚSymbolr   )r   ÚsqlclsÚttypesr   r   r   rA   •   s   z group_period.<locals>.valid_prevc                 S   ó   dS ©NTr   r3   r   r   r   rB   š   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 ur| | nd }t	|||d�}|r)||fS ||fS r]   )
r   r    ÚFunctionr1   ra   rb   rc   ÚWildcardÚSingler   )r   r:   r   r;   rd   re   Únext_rB   r   r   r   r<   ž   s
   zgroup_period.<locals>.postr=   rL   r   r   r   Úgroup_periodŒ   s
   	rl   c                 C   rD   )	Nc                 S   s   | j o| jdkS rI   )Ú
is_keywordÚ
normalizedr3   r   r   r   r   «   r#   zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NÚNULL)rn   rm   r3   r   r   r   rA   ®   s   zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d� o| d uS ©N©r`   )r1   ÚDMLÚDDLÚCTEr   )r   re   r   r   r   rB   ±   s   zgroup_as.<locals>.valid_nextc                 S   r8   r   r   r9   r   r   r   r<   µ   r7   zgroup_as.<locals>.postr=   rL   r   r   r   Úgroup_asª   s
   ru   c                 C   r.   )Nc                 S   r/   )Nz:=)r   r1   Ú
Assignmentr3   r   r   r   r   ¼   r4   zgroup_assignment.<locals>.matchc                 S   s   | d uo
| j tjfvS r   )rF   r1   rG   r3   r   r   r   r6   ¿   rT   zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d�\}}|p|}||fS )Nú;©rO   r   )r1   r2   Útoken_next_by)r   r:   r   r;   Úm_semicolonÚsnidxÚ_r   r   r   r<   Â   s   
zgroup_assignment.<locals>.post)r>   r   rv   r@   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   rE   r   )rF   r1   r[   Ú
Comparisonr3   r   r   r   r   Ñ   r4   zgroup_comparison.<locals>.matchc                    s.   t | ˆˆ d�r	dS | r| jr| jdkrdS dS )N)r`   r_   Tro   F)r   rm   rn   r3   ©rd   re   r   r   r6   Ô   s
   zgroup_comparison.<locals>.validc                 S   r8   r   r   r9   r   r   r   r<   Ü   r7   zgroup_comparison.<locals>.postFrW   )r   r$   rh   r?   Ú	OperationrK   ÚT_NUMERICALÚT_STRINGÚT_NAMEr>   r~   r@   r   r   r   Úgroup_comparisonÌ   s   ÿ

ÿr„   c                 C   sP   t jjt jf}| j|d�\}}|r&|  tj||¡ | j||d�\}}|sd S d S )Nrq   ©r`   r   )r1   rb   rc   ra   ry   r   r   r?   )r   re   r   r   r   r   r   Úgroup_identifierä   s   þr†   c                 C   sj   | j tjjd�\}}|r3|  |¡\}}t|tjtjd�r$|  	tj||¡ | j tjj|d�\}}|sd S d S )NrN   r^   rx   )
ry   r   ÚOverr   Ú
token_nextr   r$   r1   ra   r   )r   r   r   r;   rk   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   rP   r   )r
   r   r    r3   r   r   r   r   ü   rR   zgroup_arrays.<locals>.matchc                    s   t | ˆ ˆd�S r]   ©r   r3   r   r   r   rA   ÿ   r4   z group_arrays.<locals>.valid_prevc                 S   rf   rg   r   r3   r   r   r   rB     s   z group_arrays.<locals>.valid_nextc                 S   s   ||fS r   r   r9   r   r   r   r<     r7   zgroup_arrays.<locals>.postTF)rX   r   )	r   r    r?   rh   r1   ra   rb   rc   r>   rL   r   r   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 rp   )r   r1   r[   ri   r3   r   r   r   r     s   zgroup_operator.<locals>.matchc                    s    t | ˆ ˆd�p| o|  tjd¡S )Nr^   )ÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMP)r   r   r1   rG   r3   r   r   r   r6     s   þÿzgroup_operator.<locals>.validc                 S   s   t j| | _||fS r   )r1   r[   rF   r9   r   r   r   r<     s   zgroup_operator.<locals>.postFrW   )r�   r‚   rƒ   r   r    r$   rh   r?   r€   rK   r>   r@   r   r   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   r/   )Nú,r0   r3   r   r   r   r   *  r4   z$group_identifier_list.<locals>.matchc                    s   t | ˆˆ ˆd�S )N)r_   rO   r`   rŠ   r3   ©Úm_rolerd   re   r   r   r6   -  r#   z$group_identifier_list.<locals>.validc                 S   r8   r   r   r9   r   r   r   r<   0  r7   z#group_identifier_list.<locals>.postTrW   )r1   rG   r   rh   r&   r?   r~   ÚIdentifierListr€   r�   r‚   rƒ   ÚCommentri   r>   r@   r   r“   r   Úgroup_identifier_list#  s   
ÿ
ÿ

ÿr—   c                 C   sv   | j tjd�\}}|r9| jdd„ |d�\}}|d ur+| j|dd�\}}|  tj||¡ | j tj|d�\}}|sd S d S )Nrq   c                 S   s   t | tjd�p	| jS rp   )r   r1   r–   Ú
is_newline)Útkr   r   r   Ú<lambda>=  s    z group_comments.<locals>.<lambda>)r   F)Úskip_wsr…   )ry   r1   r–   Útoken_not_matchingÚ
token_prevr   r   ©r   r   r   ÚeidxÚendr   r   r   Úgroup_comments8  s   
ÿùr¡   c                 C   sŒ   | j tjjd�\}}|rD| j tjj|d�\}}|d u r!| jd }n| j|d  }|  |¡}|  tj||¡ | j tjj|d�\}}|sd S d S )NrN   rx   éÿÿÿÿé   )	ry   r   ÚWherer   r   Ú_groupable_tokensr   Útoken_indexr   rž   r   r   r   Úgroup_whereE  s   
õr§   c                 C   s„   t jt jt jt jt jt jf}| j|tj	d�\}}|r@|  
|¡\}}t|t jƒr1| jt j||dd� | j|tj	|d�\}}|sd S d S )Nr^   TrW   )r_   r`   r   )r   r$   rh   r&   r?   r€   r~   ry   r1   ÚNumberrˆ   r
   r   )r   ÚI_ALIASr   r   r;   rk   r   r   r   Úgroup_aliasedV  s   ÿürª   c                 C   sâ   d}d}d}| j D ]}|j ¡ dkrd}|j ¡ dkrd}|jdkr$d}q	|r-|r-|s-d S | jtjd�\}}|ro|  |¡\}}t|tj	ƒra|  |¡\}	}
|
rWt|
tj
ƒrW|	}n|}|  tj||¡ | jtj|d�\}}|s8d S d S )NFÚCREATETÚTABLErJ   rq   r…   )r   r\   Úupperry   r1   ra   rˆ   r
   r   r$   r‡   r   rh   )r   Ú
has_createÚ	has_tableÚhas_asÚ	tmp_tokenr   r   r;   rk   Úover_idxÚoverrŸ   r   r   r   Úgroup_functionsc  s0   

€÷r´   c                 C   sn   | j tjjd�\}}|r5|  |¡\}}t|tjtjd�r&|  	tj||¡ |}| j tjj|d�\}}|sdS dS )z,Group together Identifier and Asc/Desc tokenrq   r^   r…   N)
ry   r1   rG   ÚOrderr�   r   r   r?   r¨   r   ©r   r   r   r:   Úprev_r   r   r   Úgroup_order  s   ûr¸   c                 C   sh   | j tjd�\}}|r2|  |¡\}}t|tjƒr$| jtj||dd� |}| j tj|d�\}}|sd S d S )N)r_   TrW   )r_   r   )ry   r   r–   r�   r
   Ú	TokenListr   r¶   r   r   r   Úalign_comments‹  s   ûrº   c                 C   sh   | j tjdfd�\}}|}d}|r"t|tjƒr|}|  |¡\}}|s|dkr2| jtj||dd� d S d S )NÚVALUESrN   r¢   TrW   )	ry   r1   rG   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 ]}|| ƒ q| S r   )r¡   r"   r%   r'   r)   r+   r-   r‰   r´   r§   rl   r‹   r†   r¸   rC   rM   rY   r�   r„   ru   rª   r}   rº   r—   r¿   )ÚstmtÚfuncr   r   r   Úgroup¢  s8   ã
rÂ   c                 C   rf   rg   r   rq   r   r   r   rš   Ç  ó    rš   c                 C   rf   rg   r   rq   r   r   r   rš   È  rÃ   NTc              	   C   sØ   d}d\}	}
t t| ƒƒD ]]\}}|| }|dk rq|jrq|r1|jr1t||ƒs1t|||||||ƒ ||ƒrd|  |¡\}}|
rd||
ƒrd||ƒrd|| |	||ƒ\}}| j||||d�}||| 7 }||}	}
q||}	}
qdS )zDGroups together tokens that are joined by a middle token. i.e. x < yr   )NNrW   N)r   r   r   r	   r
   r>   rˆ   r   )r   r   r   rA   rB   r<   rX   r   r   r:   r·   r   r   r   r;   rk   Úfrom_idxÚto_idxÚgrpr   r   r   r>   Æ  s(   	
ër>   )3Úsqlparser   r   r1   Úsqlparse.utilsr   r   r¨   ÚIntegerÚFloatr�   rb   rj   rc   r‚   ra   ÚPlaceholderrƒ   r   r"   r%   r'   r)   r+   r-   rC   rM   rY   rl   ru   r}   r„   r?   r†   r‡   r‰   r‹   r�   r—   r–   r¡   r¤   r§   rª   rh   r´   r¸   rº   r¿   rÂ   r>   r   r   r   r   Ú<module>   s^   #
	
	






%û