3
6b,                 @   sj  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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)d,d- Z*e d.d/ Z+d0d1 Z,d2d3 d4d3 d5d6d6fd7d8Z-d5S )9    )sql)tokens)recurseimtc       	      C   s   g }d}xt t| D ]\}}|| }|jr.q|jrLt|| rLt|| q|j|j rd|j| q|j|j	 ry|j
 }W n tk
r   wY nX |}| j||| ||| 7 }qW 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   W/var/www/html/sandeepIITI/myenv/lib/python3.6/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 )N)r   r   Parenthesis)r   r   r   r   group_parenthesis8   s    r   c             C   s   t | tj d S )N)r   r   Case)r   r   r   r   
group_case<   s    r    c             C   s   t | tj d S )N)r   r   If)r   r   r   r   group_if@   s    r"   c             C   s   t | tj d S )N)r   r   For)r   r   r   r   	group_forD   s    r$   c             C   s   t | tj d S )N)r   r   ZBegin)r   r   r   r   group_beginH   s    r%   c             C   s8   dd }dd }dd }| }}t | tj|||| d S )Nc             S   s   | j 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 )Nr   )r   r   r   r   validP   s    zgroup_typecasts.<locals>.validc             S   s   ||fS )Nr   )r   pidxr   nidxr   r   r   postS   s    zgroup_typecasts.<locals>.post)_groupr   
Identifier)r   r   r(   r+   
valid_prev
valid_nextr   r   r   group_typecastsL   s
    r0   c             C   s8   dd }dd }dd }dd }t | tj|||| d S )	Nc             S   s   | j tjdS )N.)r   r&   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   r-   r&   NameStringSymbolr   )r   sqlclsttypesr   r   r   r.   ^   s    z group_period.<locals>.valid_prevc             S   s   dS )NTr   )r   r   r   r   r/   c   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 )N)r2   r3   )	r   r   Functionr&   r4   r5   r6   Wildcardr   )r   r)   r   r*   r7   r8   next_r/   r   r   r   r+   g   s
    zgroup_period.<locals>.post)r,   r   r-   )r   r   r.   r/   r+   r   r   r   group_periodZ   s
    	r<   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
normalized)r   r   r   r   r   t   s    zgroup_as.<locals>.matchc             S   s   | j dkp| j S )NNULL)r>   r=   )r   r   r   r   r.   w   s    zgroup_as.<locals>.valid_prevc             S   s"   t jt jf}t| |d o | d k	S )N)r3   )r&   ZDMLZDDLr   )r   r8   r   r   r   r/   z   s    zgroup_as.<locals>.valid_nextc             S   s   ||fS )Nr   )r   r)   r   r*   r   r   r   r+   ~   s    zgroup_as.<locals>.post)r,   r   r-   )r   r   r.   r/   r+   r   r   r   group_ass   s
    r@   c             C   s8   dd }dd }dd }| }}t | tj|||| d S )Nc             S   s   | j tjdS )Nz:=)r   r&   
Assignment)r   r   r   r   r      s    zgroup_assignment.<locals>.matchc             S   s   | d k	o| j tjkS )N)ttyper&   Keyword)r   r   r   r   r(      s    zgroup_assignment.<locals>.validc             S   s,   t jdf}| j||d\}}|p"|}||fS )N;)mr   )r&   r'   token_next_by)r   r)   r   r*   Zm_semicolonZsnidx_r   r   r   r+      s    
zgroup_assignment.<locals>.post)r,   r   rA   )r   r   r(   r+   r.   r/   r   r   r   group_assignment   s
    rH   c          	      sb   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 )N)rB   r&   Operator
Comparison)r   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)r3   r2   Tr?   F)r   r=   r>   )r   )r7   r8   r   r   r(      s
    zgroup_comparison.<locals>.validc             S   s   ||fS )Nr   )r   r)   r   r*   r   r   r   r+      s    zgroup_comparison.<locals>.postF)extend)
r   r   r9   r-   	OperationT_NUMERICALT_STRINGT_NAMEr,   rJ   )r   r   r(   r+   r.   r/   r   )r7   r8   r   group_comparison   s    
rP   c             C   sN   t jjt jf}| j|d\}}x*|rH| jtj|| | j||d\}}q W d S )N)r3   )r3   r   )r&   r5   r6   r4   rF   r   r   r-   )r   r8   r   r   r   r   r   group_identifier   s
    rQ   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 )N)r
   r   r   )r   r   r   r   r      s    zgroup_arrays.<locals>.matchc                s   t |  dS )N)r2   r3   )r   )r   )r7   r8   r   r   r.      s    z group_arrays.<locals>.valid_prevc             S   s   dS )NTr   )r   r   r   r   r/      s    z group_arrays.<locals>.valid_nextc             S   s   ||fS )Nr   )r   r)   r   r*   r   r   r   r+      s    zgroup_arrays.<locals>.postTF)rK   r   )	r   r   r-   r9   r&   r4   r5   r6   r,   )r   r   r.   r/   r+   r   )r7   r8   r   group_arrays   s    
rR   c          	      sf   t t t 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 )N)r3   )r   r&   rI   r:   )r   r   r   r   r      s    zgroup_operator.<locals>.matchc                s   t |  dS )N)r2   r3   )r   )r   )r7   r8   r   r   r(      s    zgroup_operator.<locals>.validc             S   s   t j| | _||fS )N)r&   rI   rB   )r   r)   r   r*   r   r   r   r+      s    zgroup_operator.<locals>.postF)rK   )
rM   rN   rO   r   r   r   r9   r-   rL   r,   )r   r   r(   r+   r.   r/   r   )r7   r8   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   | j tjdS )N,)r   r&   r'   )r   r   r   r   r      s    z$group_identifier_list.<locals>.matchc                s   t |  dS )N)r2   rE   r3   )r   )r   )m_roler7   r8   r   r   r(      s    z$group_identifier_list.<locals>.validc             S   s   ||fS )Nr   )r   r)   r   r*   r   r   r   r+      s    z#group_identifier_list.<locals>.postT)rK   )rT   rU   )r&   rC   r   r9   r   r-   rJ   ZIdentifierListrL   rM   rN   rO   Commentr:   r,   )r   r   r(   r+   r.   r/   r   )rW   r7   r8   r   group_identifier_list   s    


rY   c             C   st   | j tjd\}}x\|rn| jdd |d\}}|d k	rX| j|dd\}}| jtj|| | j tj|d\}}qW d S )N)r3   c             S   s   t | tjdp| jS )N)r3   )r   r&   rX   r   )Ztkr   r   r   <lambda>   s    z group_comments.<locals>.<lambda>)r   F)Zskip_ws)r3   r   )rF   r&   rX   Ztoken_not_matching
token_prevr   r   )r   r   r   eidxendr   r   r   group_comments   s    r^   c             C   s   | j tjjd\}}xp|r| j tjj|d\}}|d krD| jd }n| j|d  }| j|}| jtj|| | j tjj|d\}}qW d S )N)rE   )rE   r      )	rF   r   Wherer   r   Z_groupable_tokensr   Ztoken_indexr   )r   r   r   r\   r]   r   r   r   group_where  s    
rb   c             C   s   t jt jt jt jt jt jf}| j|tj	d\}}xL|r|| j
|\}}t|t jrd| jt j||dd | j|tj	|d\}}q2W d S )N)r2   r3   T)rK   )r2   r3   r   )r   r   r9   r   r-   rL   rJ   rF   r&   Number
token_nextr
   r   )r   ZI_ALIASr   r   r*   r;   r   r   r   group_aliased  s    re   c             C   s   d}d}x*| j D ] }|jdkr"d}|jdkrd}qW |r@|r@d S | jtjd\}}xF|r| j|\}}t|tjr| j	tj
|| | jtj|d\}}qTW d S )NFZCREATETZTABLE)r3   )r3   r   )r   valuerF   r&   r4   rd   r
   r   r   r   r9   )r   Z
has_createZ	has_tableZ	tmp_tokenr   r   r*   r;   r   r   r   group_functions  s    

rg   c             C   sl   | j tjjd\}}xR|rf| j|\}}t|tjtjdrN| j	tj|| |}| j tjj|d\}}qW dS )z,Group together Identifier and Asc/Desc token)r3   )r2   r3   )r3   r   N)
rF   r&   rC   ZOrderr[   r   r   r-   rc   r   )r   r   r   r)   prev_r   r   r   group_order3  s    ri   c             C   sf   | j tjd\}}xN|r`| j|\}}t|tjrJ| jtj||dd |}| j tj|d\}}qW d S )N)r2   T)rK   )r2   r   )rF   r   rX   r[   r
   Z	TokenListr   )r   r   r   r)   rh   r   r   r   align_comments>  s    rj   c             C   sD   x>t ttttttttt	t
ttttttttttgD ]}||  q0W | S )N)r^   r   r   r    r"   r$   r%   rg   rb   r<   rR   rQ   ri   r0   rS   rP   r@   re   rH   rj   rY   )stmtfuncr   r   r   groupI  s0    
rm   c             C   s   dS )NTr   )r3   r   r   r   rZ   j  s    rZ   c             C   s   dS )NTr   )r3   r   r   r   rZ   k  s    NTc          	   C   s   d}d\}	}
xt t| D ]\}}|| }|jr2q|r\|jr\t|| r\t||||||| ||r| j|\}}|
r||
r||r|| |	||\}}| j||||d}||| 7 }|| }	}
q|| }	}
qW dS )zCGroups together tokens that are joined by a middle token. ie. x < yr   N)rK   )NN)r   r   r   r	   r
   r,   rd   r   )r   r   r   r.   r/   r+   rK   r   r   r)   rh   r   r   r   r*   r;   Zfrom_idxZto_idxgrpr   r   r   r,   i  s"    	
r,   ).Zsqlparser   r   r&   Zsqlparse.utilsr   r   rc   ZIntegerZFloatrM   r5   Singler6   rN   r4   ZPlaceholderrO   r   r   r   r    r"   r$   r%   r0   r<   r@   rH   rP   r-   rQ   rR   rS   rY   rX   r^   ra   rb   re   r9   rg   ri   rj   rm   r,   r   r   r   r   <module>   sB   #
!