a
    Qh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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clsopenstidx_offsetidxtokentidxZopen_idxZ	close_idx r   Q/var/www/sistema_ama/venv/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   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.   r2   
valid_prev
valid_nextr   r   r   group_typecastsL   s
    r9   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 uS r   r   r-   r   r   r   r7   ^   s    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   r+   r;   r   TypedLiteralr   r-   r   r   r   r8   a   s    z!group_tzcasts.<locals>.valid_nextc                 S   s   ||fS r   r   r/   r   r   r   r2   h   s    zgroup_tzcasts.<locals>.postr3   r   r   r7   r8   r2   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 uS r   r   r-   r   r   r   r7   z   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   r8   }   s    z'group_typed_literal.<locals>.valid_nextc                 S   s   | d u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   r2      s    z!group_typed_literal.<locals>.postFextendT)r4   r   r>   )r   r   rC   r7   r8   rE   r2   r   r   r   group_typed_literaln   s    rH   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   r5   r+   NameStringSymbolr   )r   sqlclsttypesr   r   r   r7      s    z group_period.<locals>.valid_prevc                 S   s   dS NTr   r-   r   r   r   r8      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 rJ   )	r   r   Functionr+   rN   rO   rP   Wildcardr   )r   r0   r   r1   rQ   rR   next_r8   r   r   r   r2      s
    zgroup_period.<locals>.postr3   r?   r   r   r   group_period   s
    	rW   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)rY   rX   r-   r   r   r   r7      s    zgroup_as.<locals>.valid_prevc                 S   s&   t jt jt jf}t| |d o$| d uS NrM   )r+   DMLDDLCTEr   )r   rR   r   r   r   r8      s    zgroup_as.<locals>.valid_nextc                 S   s   ||fS r   r   r/   r   r   r   r2      s    zgroup_as.<locals>.postr3   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 uo| j tjvS r   )r:   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;rB   r   )r+   r,   token_next_by)r   r0   r   r1   Zm_semicolonZsnidx_r   r   r   r2      s    
zgroup_assignment.<locals>.post)r4   r   ra   r6   r   r   r   group_assignment   s
    rf   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   )r:   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)rM   rL   TrZ   F)r   rX   rY   r-   rQ   rR   r   r   r.      s
    zgroup_comparison.<locals>.validc                 S   s   ||fS r   r   r/   r   r   r   r2      s    zgroup_comparison.<locals>.postFrF   )r   r    rT   r5   	Operationr>   T_NUMERICALT_STRINGT_NAMEr4   rh   r6   r   ri   r   group_comparison   s    
rn   c                 C   sJ   t jjt jf}| j|d\}}|rF| tj|| | j||d\}}qd S )Nr\   rM   r   )r+   rO   rP   rN   rd   r   r   r5   )r   rR   r   r   r   r   r   group_identifier   s
    rp   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 rJ   r   r-   ri   r   r   r7      s    z group_arrays.<locals>.valid_prevc                 S   s   dS rS   r   r-   r   r   r   r8      s    z group_arrays.<locals>.valid_nextc                 S   s   ||fS r   r   r/   r   r   r   r2      s    zgroup_arrays.<locals>.postTF)rG   r   )	r   r   r5   rT   r+   rN   rO   rP   r4   r?   r   ri   r   group_arrays   s    

rr   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 r[   )r   r+   rg   rU   r-   r   r   r   r     s    zgroup_operator.<locals>.matchc                    s    t |  dp| o| tjdS )NrK   )ZCURRENT_DATEZCURRENT_TIMECURRENT_TIMESTAMP)r   r   r+   r;   r-   ri   r   r   r.     s    zgroup_operator.<locals>.validc                 S   s   t j| | _||fS r   )r+   rg   r:   r/   r   r   r   r2     s    zgroup_operator.<locals>.postFrF   )rk   rl   rm   r   r   r    rT   r5   rj   r>   r4   r6   r   ri   r   group_operator   s    
rt   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)rL   rB   rM   rq   r-   Zm_rolerQ   rR   r   r   r.     s    z$group_identifier_list.<locals>.validc                 S   s   ||fS r   r   r/   r   r   r   r2   !  s    z#group_identifier_list.<locals>.postTrF   )r+   r;   r   rT   r"   r5   rh   IdentifierListrj   rk   rl   rm   CommentrU   r4   r6   r   rx   r   group_identifier_list  s    


r{   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 )Nr\   c                 S   s   t | tjdp| jS r[   )r   r+   rz   r   )tkr   r   r   <lambda>.      z group_comments.<locals>.<lambda>)r   F)skip_wsro   )rd   r+   rz   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 u rB| jd }n| j|d  }| |}| tj|| | j tjj|d\}}qd S )NrA   rc      )	rd   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 )NrK   TrF   )rL   rM   r   )r   r    rT   r"   r5   rj   rh   rd   r+   Number
token_nextr
   r   )r   ZI_ALIASr   r   r1   rV   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\   ro   )r   valueupperrd   r+   rN   r   r
   r   r    r   rT   )	r   Z
has_createZ	has_tableZhas_asZ	tmp_tokenr   r   r1   rV   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\   rK   ro   N)
rd   r+   r;   Orderr   r   r   r5   r   r   r   r   r   r0   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)rL   TrF   )rL   r   )rd   r   rz   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VALUESrA   r   TrF   )	rd   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   rW   rr   rp   r   r9   r@   rH   rt   rn   r`   r   rf   r   r{   r   )stmtfuncr   r   r   group  s6    
r   c                 C   s   dS rS   r   r\   r   r   r   r}     r~   r}   c                 C   s   dS rS   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   )NNrF   N)r   r   r   r	   r
   r4   r   r   )r   r   r   r7   r8   r2   rG   r   r   r0   r   r   r   r   r1   rV   Zfrom_idxZto_idxgrpr   r   r   r4     s&    	
r4   )1sqlparser   r   r+   sqlparse.utilsr   r   r   IntegerZFloatrk   rO   SinglerP   rl   rN   ZPlaceholderrm   r   r   r!   r#   r%   r'   r)   r9   r@   rH   rW   r`   rf   rn   r5   rp   rr   rt   r{   rz   r   r   r   r   rT   r   r   r   r   r   r4   r   r   r   r   <module>   sV   #
	





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