
v^q4                 @   s8  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+ d0 d1   Z, e   d2 d3    Z- d4 d5   Z. d6 d7   Z/ d8 d9   d: d9   d; d< d< d= d>  Z0 d; S)?    )sql)tokens)recurseimtc       	      C   s   g  } d } x t  t |    D] \ } } | | } | j rA q | j rj t | |  rj t | |  q | j | j   r | j |  q | j | j	   r y | j
   } Wn t k
 r w Yn X| } |  j | | |  | | | 7} q Wd 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   </tmp/pip-build-8lau8j11/sqlparse/sqlparse/engine/grouping.pyr      s&    
	r   c             C   s   t  |  t j  d  S)N)r   r   SquareBrackets)r   r   r   r   group_brackets5   s    r   c             C   s   t  |  t j  d  S)N)r   r   Parenthesis)r   r   r   r   group_parenthesis9   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_ifA   s    r"   c             C   s   t  |  t j  d  S)N)r   r   For)r   r   r   r   	group_forE   s    r$   c             C   s   t  |  t j  d  S)N)r   r   ZBegin)r   r   r   r   group_beginI   s    r%   c             C   sN   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   N   s    zgroup_typecasts.<locals>.matchc             S   s
   |  d  k	 S)Nr   )r   r   r   r   validQ   s    zgroup_typecasts.<locals>.validc             S   s
   | | f S)Nr   )r   pidxr   nidxr   r   r   postT   s    zgroup_typecasts.<locals>.post)_groupr   
Identifier)r   r   r(   r+   
valid_prev
valid_nextr   r   r   group_typecastsM   s
    
r0   c             C   sD   d d   } d d   } d d   } t  |  t j | | | |  d  S)Nc             S   s   |  j  t j j k S)N)ttyper&   KeywordZTZCast)r   r   r   r   r   \   s    zgroup_tzcasts.<locals>.matchc             S   s
   |  d  k	 S)Nr   )r   r   r   r   r(   _   s    zgroup_tzcasts.<locals>.validc             S   s
   | | f S)Nr   )r   r)   r   r*   r   r   r   r+   b   s    zgroup_tzcasts.<locals>.post)r,   r   r-   )r   r   r(   r+   r   r   r   group_tzcasts[   s    r3   c          	   C   s   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  |  d t j j S)Nm)r   r   TypedLiteralr   )r   r   r   r   r   n   s    z"group_typed_literal.<locals>.matchc             S   s   t  |  t j  S)N)r
   r   r5   )r   r   r   r   match_to_extendq   s    z,group_typed_literal.<locals>.match_to_extendc             S   s
   |  d  k	 S)Nr   )r   r   r   r   r.   t   s    z'group_typed_literal.<locals>.valid_prevc             S   s   |  d  k	 o |  j  t j j   S)N)r   r   r5   r   )r   r   r   r   r/   w   s    z'group_typed_literal.<locals>.valid_nextc             S   s   |  d  k	 o |  j  t j j   S)N)r   r   r5   ZM_EXTEND)r   r   r   r   valid_finalz   s    z(group_typed_literal.<locals>.valid_finalc             S   s
   | | f S)Nr   )r   r)   r   r*   r   r   r   r+   }   s    z!group_typed_literal.<locals>.postextendFT)r,   r   r5   )r   r   r6   r.   r/   r7   r+   r   r   r   group_typed_literalh   s    r9   c             C   sP   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 | 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/      s    z group_period.<locals>.valid_nextc             S   s{   t  j t  j f } t j t j j t j f } | d  k	 rC |  | n d  } t | d | d | } | rq | | f S| | f S)Nr;   r<   )	r   r   Functionr&   r=   r>   r?   Wildcardr   )r   r)   r   r*   r@   rA   next_r/   r   r   r   r+      s
    zgroup_period.<locals>.post)r,   r   r-   )r   r   r.   r/   r+   r   r   r   group_period   s
    	rE   c             C   sP   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      s    zgroup_as.<locals>.matchc             S   s   |  j  d k p |  j S)NNULL)rG   rF   )r   r   r   r   r.      s    zgroup_as.<locals>.valid_prevc             S   s5   t  j t  j t  j f } t |  d | o4 |  d  k	 S)Nr<   )r&   ZDMLZDDLZCTEr   )r   rA   r   r   r   r/      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_as   s
    rI   c             C   sN   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)r1   r&   r2   )r   r   r   r   r(      s    zgroup_assignment.<locals>.validc             S   sC   t  j d f } |  j d | d |  \ } } | p6 | } | | f S)N;r4   r   )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   rJ   )r   r   r(   r+   r.   r/   r   r   r   group_assignment   s
    
rN   c          	      s   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)r1   r&   Operator
Comparison)r   r   r   r   r      s    zgroup_comparison.<locals>.matchc                sF   t  |  d  d   r d S|  r> |  j r> |  j d k r> d Sd Sd  S)Nr<   r;   TrH   F)r   rF   rG   )r   )r@   rA   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>.postr8   F)
r   r   rB   r-   	OperationT_NUMERICALT_STRINGT_NAMEr,   rP   )r   r   r(   r+   r.   r/   r   )r@   rA   r   group_comparison   s    
rU   c             C   sr   t  j j t  j f } |  j d |  \ } } x> | rm |  j t j | |  |  j d | d |  \ } } q0 Wd  S)Nr<   r   )r&   r>   r?   r=   rL   r   r   r-   )r   rA   r   r   r   r   r   group_identifier   s
    	rV   c                s   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 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   d  S)Nr;   r<   )r   )r   )r@   rA   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>.postr8   Tr   F)	r   r   r-   rB   r&   r=   r>   r?   r,   )r   r   r.   r/   r+   r   )r@   rA   r   group_arrays   s    rW   c          	      s   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  |  d t j t j f S)Nr<   )r   r&   rO   rC   )r   r   r   r   r      s    zgroup_operator.<locals>.matchc                s1   t  |  d   d  p0 |  o0 |  j t j d  S)Nr;   r<   CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP)rX   rY   rZ   )r   r   r&   r2   )r   )r@   rA   r   r   r(      s    zgroup_operator.<locals>.validc             S   s   t  j |  | _ | | f S)N)r&   rO   r1   )r   r)   r   r*   r   r   r   r+     s    zgroup_operator.<locals>.postr8   F)rR   rS   rT   r   r   r   rB   r-   rQ   r5   r,   )r   r   r(   r+   r.   r/   r   )r@   rA   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   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  d   d  S)Nr;   r4   r<   )r   )r   )m_roler@   rA   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>.postr8   T)znullzrole)r&   r2   r   rB   r   r-   rP   ZIdentifierListrQ   rR   rS   rT   CommentrC   r,   )r   r   r(   r+   r.   r/   r   )r_   r@   rA   r   group_identifier_list  s    $
ra   c             C   s   |  j  d t j  \ } } x | r |  j d d   d | \ } } | d  k	 r |  j | d d \ } } |  j t j | |  |  j  d t j d |  \ } } q Wd  S)Nr<   c             S   s   t  |  d t j p |  j S)Nr<   )r   r&   r`   r   )Ztkr   r   r   <lambda>(  s    z group_comments.<locals>.<lambda>r   Zskip_wsF)rL   r&   r`   Ztoken_not_matching
token_prevr   r   )r   r   r   eidxendr   r   r   group_comments#  s    	rf   c             C   s   |  j  d t j j  \ } } x | r |  j  d t j j d |  \ } } | d  k rg |  j d } n |  j | d } |  j |  } |  j t j | |  |  j  d t j j d |  \ } } q! Wd  S)Nr4   r      )	rL   r   Wherer   r   Z_groupable_tokensr   Ztoken_indexr   )r   r   r   rd   re   r   r   r   group_where0  s    	$rj   c             C   s   t  j t  j t  j t  j t  j t  j f } |  j d | d t j	  \ } } xt | r |  j
 |  \ } } t | t  j  r |  j t  j | | d d |  j d | d t j	 d |  \ } } qN Wd  S)Nr;   r<   r8   Tr   )r   r   rB   r   r-   rQ   rP   rL   r&   Number
token_nextr
   r   )r   ZI_ALIASr   r   r*   rD   r   r   r   group_aliasedA  s    !	rm   c             C   s   d } d } x; |  j  D]0 } | j d k r1 d } | j d k r d } q W| rZ | rZ d  S|  j d t j  \ } } xh | r |  j |  \ } } t | t j  r |  j	 t j
 | |  |  j d t j d |  \ } } qx Wd  S)NFZCREATETZTABLEr<   r   )r   valuerL   r&   r=   rl   r
   r   r   r   rB   )r   Z
has_createZ	has_tableZ	tmp_tokenr   r   r*   rD   r   r   r   group_functionsN  s    
	ro   c             C   s   |  j  d t j j  \ } } x} | r |  j |  \ } } t | d t j d t j rv |  j	 t j | |  | } |  j  d t j j d |  \ } } q! Wd S)z,Group together Identifier and Asc/Desc tokenr<   r;   r   N)
rL   r&   r2   ZOrderrc   r   r   r-   rk   r   )r   r   r   r)   prev_r   r   r   group_orderb  s    	rq   c             C   s   |  j  d t j  \ } } xt | r |  j |  \ } } t | t j  rm |  j t j | | d d | } |  j  d t j d |  \ } } q Wd  S)Nr;   r8   Tr   )rL   r   r`   rc   r
   Z	TokenListr   )r   r   r   r)   rp   r   r   r   align_commentsm  s    	rr   c             C   s   |  j  d t j d f  \ } } | } d } x7 | rf t | t j  rN | } |  j |  \ } } q0 W| d k r |  j t j | | d d d  S)Nr4   ZVALUESrg   r8   Trh   rh   )	rL   r&   r2   r
   r   r   rl   r   Values)r   r   r   Z	start_idxZend_idxr   r   r   group_valuesx  s    !	rt   c             C   sg   x` t  t t t t t t t t t	 t
 t t t t t t t t t t t t t g D] } | |   qO W|  S)N)rf   r   r   r    r"   r$   r%   ro   rj   rE   rW   rV   rq   r0   r3   r9   r[   rU   rI   rm   rN   rr   ra   rt   )stmtfuncr   r   r   group  s6    rw   c             C   s   d S)NTr   )r<   r   r   r   rb     s    rb   c             C   s   d S)NTr   )r<   r   r   r   rb     s    NTc          	   C   s*  d } d \ }	 }
 xt  t |    D] \ } } | | } | j rG q% | r | j r t | |  r t | | | | | | |  | |  r|  j |  \ } } |
 r| |
  r| |  r| |  |	 | |  \ } } |  j | | | d | } | | | 7} | | }	 }
 q% | | }	 }
 q% Wd S)zDGroups together tokens that are joined by a middle token. i.e. x < yr   Nr8   )NN)r   r   r   r	   r
   r,   rl   r   )r   r   r   r.   r/   r+   r8   r   r   r)   rp   r   r   r   r*   rD   Zfrom_idxZto_idxgrpr   r   r   r,     s"    	
	r,   )1Zsqlparser   r   r&   Zsqlparse.utilsr   r   rk   ZIntegerZFloatrR   r>   Singler?   rS   r=   ZPlaceholderrT   r   r   r   r    r"   r$   r%   r0   r3   r9   rE   rI   rN   rU   r-   rV   rW   r[   ra   r`   rf   ri   rj   rm   rB   ro   rq   rr   rt   rw   r,   r   r   r   r   <module>	   sH   #
$		