o
    h4                     @   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 ]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tidxZopen_idxZ	close_idx r   `/var/www/html/magazine_api/magazine_env/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   Z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   r0   r   r   r   validP      zgroup_typecasts.<locals>.validc                 S      ||fS r   r   r   pidxr   nidxr   r   r   postS   r4   zgroup_typecasts.<locals>.post_groupr   
Identifierr   r   r3   r9   
valid_prev
valid_nextr   r   r   group_typecastsL   s
   r@   c                 C   s0   dd }dd }dd }t | tj|||| d S )Nc                 S      | j tjjkS r   )ttyper.   KeywordZTZCastr0   r   r   r   r   [   r1   zgroup_tzcasts.<locals>.matchc                 S   r2   r   r   r0   r   r   r   r3   ^   r4   zgroup_tzcasts.<locals>.validc                 S   r5   r   r   r6   r   r   r   r9   a   r4   zgroup_tzcasts.<locals>.postr:   )r   r   r3   r9   r   r   r   group_tzcastsZ   s   rD   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   r0   r   r   r   r   m   r!   z"group_typed_literal.<locals>.matchc                 S      t | tjS r   )r
   r   rG   r0   r   r   r   match_to_extendp      z,group_typed_literal.<locals>.match_to_extendc                 S   r2   r   r   r0   r   r   r   r>   s   r4   z'group_typed_literal.<locals>.valid_prevc                 S      | d uo
| j tjj S r   )r   r   rG   r   r0   r   r   r   r?   v      z'group_typed_literal.<locals>.valid_nextc                 S   rK   r   )r   r   rG   ZM_EXTENDr0   r   r   r   valid_finaly   rL   z(group_typed_literal.<locals>.valid_finalc                 S   s   ||fS r   r   r6   r   r   r   r9   |   r4   z!group_typed_literal.<locals>.postFextendT)r;   r   rG   )r   r   rI   r>   r?   rM   r9   r   r   r   group_typed_literalg   s   
rP   c                 C   8   dd }dd }dd }dd }t | tj|||| d S )	Nc                 S   r,   )N.r-   r0   r   r   r   r      r1   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<   r.   NameStringSymbolr   )r   sqlclsttypesr   r   r   r>      s   z group_period.<locals>.valid_prevc                 S      dS NTr   r0   r   r   r   r?      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}|r&||fS ||fS rS   )	r   r   Functionr.   rW   rX   rY   Wildcardr   )r   r7   r   r8   rZ   r[   next_r?   r   r   r   r9      s
   zgroup_period.<locals>.postr:   r   r   r>   r?   r9   r   r   r   group_period   s
   	rb   c                 C   rQ   )	Nc                 S   s   | j o| jdkS )NZAS)
is_keyword
normalizedr0   r   r   r   r      r!   zgroup_as.<locals>.matchc                 S   s   | j dkp| j S )NNULL)rd   rc   r0   r   r   r   r>      s   zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d o| d uS NrV   )r.   ZDMLZDDLZCTEr   )r   r[   r   r   r   r?      s   zgroup_as.<locals>.valid_nextc                 S   r5   r   r   r6   r   r   r   r9      r4   zgroup_as.<locals>.postr:   ra   r   r   r   group_as   s
   rh   c                 C   r+   )Nc                 S   r,   )Nz:=)r   r.   
Assignmentr0   r   r   r   r      r1   zgroup_assignment.<locals>.matchc                 S   s   | d uo	| j tjvS r   )rB   r.   rC   r0   r   r   r   r3         zgroup_assignment.<locals>.validc                 S   s,   t jdf}| j||d\}}|p|}||fS )N;rF   r   )r.   r/   token_next_by)r   r7   r   r8   Zm_semicolonZsnidx_r   r   r   r9      s   
zgroup_assignment.<locals>.post)r;   r   ri   r=   r   r   r   group_assignment   s
   ro   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   rA   r   )rB   r.   Operator
Comparisonr0   r   r   r   r      r1   zgroup_comparison.<locals>.matchc                    s.   t |  dr	dS | r| jr| jdkrdS dS )N)rV   rU   Tre   F)r   rc   rd   r0   rZ   r[   r   r   r3      s
   zgroup_comparison.<locals>.validc                 S   r5   r   r   r6   r   r   r   r9      r4   zgroup_comparison.<locals>.postFrN   )r   r"   r^   r<   	OperationrG   T_NUMERICALT_STRINGT_NAMEr;   rq   r=   r   rr   r   group_comparison   s   

rw   c                 C   sP   t jjt jf}| j|d\}}|r&| tj|| | j||d\}}|sd S d S )Nrg   rV   r   )r.   rX   rY   rW   rm   r   r   r<   )r   r[   r   r   r   r   r   group_identifier   s   ry   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   rH   r   )r
   r   r   r0   r   r   r   r      rJ   zgroup_arrays.<locals>.matchc                    s   t |  dS rS   r   r0   rr   r   r   r>      r1   z group_arrays.<locals>.valid_prevc                 S   r\   r]   r   r0   r   r   r   r?      s   z group_arrays.<locals>.valid_nextc                 S   s   ||fS r   r   r6   r   r   r   r9      r4   zgroup_arrays.<locals>.postTF)rO   r   )	r   r   r<   r^   r.   rW   rX   rY   r;   ra   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 rf   )r   r.   rp   r_   r0   r   r   r   r      rj   zgroup_operator.<locals>.matchc                    s    t |  dp| o| tjdS )NrT   )ZCURRENT_DATEZCURRENT_TIMEZCURRENT_TIMESTAMP)r   r   r.   rC   r0   rr   r   r   r3      s   zgroup_operator.<locals>.validc                 S   s   t j| | _||fS r   )r.   rp   rB   r6   r   r   r   r9     s   zgroup_operator.<locals>.postFrN   )rt   ru   rv   r   r   r"   r^   r<   rs   rG   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)nullZrolec                 S   r,   )N,r-   r0   r   r   r   r     r1   z$group_identifier_list.<locals>.matchc                    s   t |  dS )N)rU   rF   rV   rz   r0   Zm_rolerZ   r[   r   r   r3     r!   z$group_identifier_list.<locals>.validc                 S   r5   r   r   r6   r   r   r   r9     r4   z#group_identifier_list.<locals>.postTrN   )r.   rC   r   r^   r$   r<   rq   ZIdentifierListrs   rt   ru   rv   Commentr_   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 )Nrg   c                 S   s   t | tjdp	| jS rf   )r   r.   r   r   )tkr   r   r   <lambda>'  s    z group_comments.<locals>.<lambda>)r   F)Zskip_wsrx   )rm   r.   r   Z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\}}|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 )NrE   rl      )	rm   r   Wherer   r   Z_groupable_tokensr   Z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\}}|r@| 
|\}}t|t jr1| jt j||dd | j|tj	|d\}}|sd S d S )NrT   TrN   )rU   rV   r   )r   r"   r^   r$   r<   rs   rq   rm   r.   Number
token_nextr
   r   )r   ZI_ALIASr   r   r8   r`   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\}}|rL| |\}}t|tjr>| 	tj
|| | jtj|d\}}|s)d S d S )NFZCREATETZTABLErg   rx   )r   valuerm   r.   rW   r   r
   r   r"   r   r^   )r   Z
has_createZ	has_tableZ	tmp_tokenr   r   r8   r`   r   r   r   group_functionsM  s"   


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 tokenrg   rT   rx   N)
rm   r.   rC   ZOrderr   r   r   r<   r   r   r   r   r   r7   prev_r   r   r   group_ordera  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)rU   TrN   )rU   r   )rm   r   r   r   r
   Z	TokenListr   r   r   r   r   align_commentsl  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 )NZVALUESrE   r   TrN   )	rm   r.   rC   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 ]}||  q| S r   )r   r    r#   r%   r'   r)   r*   r   r   rb   r{   ry   r   r@   rD   rP   r|   rw   rh   r   ro   r   r   r   )stmtfuncr   r   r   group  s6   
r   c                 C   r\   r]   r   rg   r   r   r   r         r   c                 C   r\   r]   r   rg   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   )NNrN   N)r   r   r   r	   r
   r;   r   r   )r   r   r   r>   r?   r9   rO   r   r   r7   r   r   r   r   r8   r`   Zfrom_idxZto_idxgrpr   r   r   r;     s(   	
r;   )1Zsqlparser   r   r.   Zsqlparse.utilsr   r   r   IntegerFloatrt   rX   SinglerY   ru   rW   ZPlaceholderrv   r   r    r#   r%   r'   r)   r*   r@   rD   rP   rb   rh   ro   rw   r<   ry   r{   r|   r   r   r   r   r   r   r^   r   r   r   r   r   r;   r   r   r   r   <module>   sX   #
	





$