ó
|£*^c           @   sÑ   d  Z  d d l Z d d l Z d d l m Z d d l m Z m Z d d l m	 Z	 d e
 f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 „  Z d d „ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d „ Z d S(   s	   SQL LexeriÿÿÿÿN(   t   tokens(   t   KEYWORDSt   KEYWORDS_COMMON(   t   StringIOt   includec           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR      s   t   combinedc           B   s    e  Z d  Z d „  Z d „  Z RS(   s0   Indicates a state combined from multiple states.c         G   s   t  j |  | ƒ S(   N(   t   tuplet   __new__(   t   clst   args(    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR	      s    c         G   s   d  S(   N(    (   t   selfR   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   __init__!   s    (   R   R   t   __doc__R	   R   (    (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR      s   	c         C   s1   |  j  ƒ  } t j | t j | t j ƒ ƒ |  f S(   N(   t   upperR   t   getR   R    t   Name(   t   valuet   test(    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt
   is_keyword&   s    c            s3   ‡  f d †  } x | D] } | | |  ƒ }  q W|  S(   s¤   
    Use this method to apply an iterable of filters to
    a stream. If lexer is given it's forwarded to the
    filter, otherwise the filter receives `None`.
    c         3   s&   x |  j  ˆ  | ƒ D] } | Vq Wd  S(   N(   t   filter(   t   filter_t   streamt   token(   t   lexer(    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   _apply2   s    (    (   R   t   filtersR   R   R   (    (   R   sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   apply_filters+   s    t	   LexerMetac           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sr   
    Metaclass for Lexer, creates the self._tokens attribute from
    self.tokens on the first instantiation.
    c         C   sR  t  | ƒ t k s" t d | ƒ ‚ | d d k sB t d | ƒ ‚ | | k rV | | Sg  } | | <|  j } xÞ| | D]Ò} t | t ƒ rÑ | | k s© t d | ƒ ‚ | j |  j | | t | ƒ ƒ ƒ qx n  t  | ƒ t k só t d | ƒ ‚ y t	 j
 | d | ƒ j } Wn3 t k
 rE} t d | d | |  | f ƒ ‚ n Xt  | d ƒ t j k s†t | d ƒ s†t d	 | d f ƒ ‚ t | ƒ d
 k r¡d  }	 n�| d
 }
 t |
 t ƒ r9|
 d k rÏd }	 q0|
 | k rç|
 f }	 q0|
 d k rü|
 }	 q0|
 d  d k r t |
 d ƒ }	 q0t s0t d |
 ƒ ‚ n÷ t |
 t ƒ rÉd |  j }	 |  j d 7_ g  } xF |
 D]> } | | k s“t d | ƒ ‚ | j |  j | | | ƒ ƒ qqW| | |	 <|	 f }	 ng t |
 t ƒ rx6 |
 D]. } | | k sß| d k sßt d | ƒ ‚ qßW|
 }	 n t s0t d |
 ƒ ‚ | j | | d |	 f ƒ qx W| S(   Ns   wrong state name %ri    t   #s   invalid state name %rs   circular state reference %rs   wrong rule def %rs+   uncompilable regex %r in state %r of %r: %si   s2   token type must be simple type or callable, not %ri   s   #popiÿÿÿÿs   #pushi   s   #pop:s   unknown new state %rs   _tmp_%ds   circular state ref %rs   unknown new state s   unknown new state def %r(   s   #pops   #push(   t   typet   strt   AssertionErrort   flagst
   isinstanceR   t   extendt   _process_stateR   t   ret   compilet   matcht	   Exceptiont
   ValueErrorR    t
   _TokenTypet   callablet   lent   Nonet   intt   FalseR   t   _tmpnamet   append(   R
   t   unprocessedt	   processedt   statet	   tokenlistt   rflagst   tdeft   rext   errt	   new_statet   tdef2t   itokenst   istate(    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR%   A   sl    " 	",	
		
	c         C   sZ   i  |  _  d |  _ i  } |  j  |  j <x- |  j j ƒ  D] } |  j |  j | | ƒ q6 W| S(   Ni    (   t   _all_tokensR1   R   R    t   keysR%   (   R
   R4   R5   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   process_tokendef…   s    		c         O   sa   t  |  d ƒ sN i  |  _ d |  _ t  |  d ƒ r< |  j r< qN |  j ƒ  |  _ n  t j |  | | Ž S(   Nt   _tokensi    t   token_variants(   t   hasattrR?   R1   RC   RA   RB   R   t   __call__(   R
   R   t   kwds(    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyRE   Ž   s    		(   R   R   R   R%   RA   RE   (    (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR   ;   s   	D		t   Lexerc        '   B   s®  e  Z e Z d  Z e Z e Z d Z e	 j
 e	 j BZ i d e j j f d e j j f d e j f d e j f d e j j d f d e j f d	 e j f d
 e j f d e j f d e j f d e j f d e j j f d e j j f d e j j f d e j j f d e j j f d e j f d e j f d e j f d e j f d e j j f d e j j f d e j j f d e j j f d e j j f d e j j f d e j f d e j f d e j f d  e j f d! e j j  f d" e j j f d# e j f d$ e! f d% e j f d& e j" j# f d' e j" f g% d( 6d e j j d f d) e j j d* f d+ e j j f d, e j j f g d 6Z d- „  Z$ d. „  Z% d/ „  Z& e d0 „ Z' d2 d1 „ Z( RS(3   s   utf-8i    s   (--|# ).*?(\r\n|\r|\n)s   (--|# ).*?$s   (\r\n|\r|\n)s   \s+s   /\*s   multiline-commentss   :=s   ::s   [*]s   CASE\bs   `(``|[^`])*`s   Â´(Â´Â´|[^Â´])*Â´s   \$([^\W\d]\w*)?\$s   \?{1}s	   %\(\w+\)ss   %ss   [$:?]\w+t   VALUESs   (@|##|#)[^\W\d_]\w+s   in\b(?=[ (])?s   [^\W\d_]\w*(?=[.(])s   [-]?0x[0-9a-fA-F]+s#   [-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+s   [-]?[0-9]*\.[0-9]+s
   [-]?[0-9]+s   '(''|\\\\|\\'|[^'])*'s   (""|".*?[^\\]")s   (?<![\w\])])(\[[^\]]+\])s[   ((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?|(CROSS\s+|NATURAL\s+)?)?JOIN\bs   END(\s+IF|\s+LOOP)?\bs
   NOT NULL\bs   CREATE(\s+OR\s+REPLACE)?\bs   DOUBLE\s+PRECISION\bs   (?<=\.)[^\W\d_]\w*s
   [^\W\d]\w*s   [;:()\[\],\.]s   [<>=~!]+s   [+/@#%^&|`?^-]+t   roots   \*/s   #pops   [^/\*]+s   [/*]c         C   s   g  |  _  d  S(   N(   R   (   R   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyR   Þ   s    c         K   sB   d d l  m } t | | ƒ s. | | �  } n  |  j j | ƒ d  S(   Niÿÿÿÿ(   t   Filter(   t   sqlparse.filtersRJ   R#   R   R2   (   R   R   t   optionsRJ   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt
   add_filterá   s    c         C   sô   t  j d d k r) t | t ƒ r) | Sn  |  j d k r“ y5 | j d ƒ } | j d ƒ rl | t d ƒ } n  WqÌ t k
 r� | j d ƒ } qÌ Xn9 y | j |  j ƒ } Wn  t k
 rË | j d ƒ } n X|  j	 d k rð | j
 |  j	 ƒ } n  | S(   Ni    i   t   guesss   utf-8u   ï»¿t   latin1s   unicode-escape(   t   syst   version_infoR#   R    t   encodingt   decodet
   startswithR-   t   UnicodeDecodeErrort   tabsizet
   expandtabs(   R   t   text(    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   _decodeç   s"    c            sÑ   t  ˆ t ƒ r” ˆ  j r' ˆ j ƒ  ‰ n ˆ  j rB ˆ j d ƒ ‰ n  t j d d k  r… t  ˆ t ƒ r… t ˆ j	 d ƒ ƒ ‰ d ˆ  _
 q” t ˆ ƒ ‰ n  ‡  ‡ f d †  } | ƒ  } | sÍ t | ˆ  j ˆ  ƒ } n  | S(   s=  
        Return an iterable of (tokentype, value) pairs generated from
        `text`. If `unfiltered` is set to `True`, the filtering mechanism
        is bypassed even if filters are defined.

        Also preprocess the text, i.e. expand tabs and strip it if
        wanted and applies registered filters.
        s   
i    i   s   utf-8c          3   s2   x+ ˆ  j  ˆ ƒ D] \ }  } } | | f Vq Wd  S(   N(   t   get_tokens_unprocessed(   t   it   tt   v(   R   RX   (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   streamer  s    (   R#   t
   basestringt   stripallt   stript   stripnlRP   RQ   t   unicodeR   t   encodeRR   R   R   (   R   RX   t
   unfilteredR^   R   (    (   R   RX   sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt
   get_tokensü   s    			"	c         c   s¹  d } |  j  } t | ƒ } | | d } i  } | j ƒ  } |  j | ƒ } xhxa| D]Ý\ }	 }
 } |	 | | ƒ } | rT | j ƒ  } | | k r¥ | | | | f Vn� t |
 ƒ t j k rË | |
 | f Vn[ t |
 d ƒ r|
 | ƒ \ } } | | | <| | | f Vn x |
 |  | ƒ D] } | VqW| j	 ƒ  } | d k	 r-t | t ƒ rÍxÌ | D]r } | d k rs| j ƒ  qT| d k r“| j | d ƒ qT| d k s¶| s¶| d d k rT| j | ƒ qTqTWnO t | t ƒ ræ| | 3n6 | d k r| j | d ƒ n t st d | ƒ ‚ | | d } n  PqT qT Wyg | | d k r|| d	 7} d
 g } | d
 } | t j d f VwM n  | t j | | f V| d	 7} WqM t k
 r°PqM XqM Wd S(   s}   
        Split ``text`` into (tokentype, text) pairs.

        ``stack`` is the inital stack (default: ``['root']``)
        i    iÿÿÿÿRE   s   #pops   #pushs   multiline-commentss   wrong state def: %rs   
i   RI   u   
N(   RB   t   listt   readRY   t   groupR   R    R+   RD   t   endR.   R#   R   t   popR2   R/   R0   R!   t   Textt   Errort
   IndexError(   R   R   t   stackt   post	   tokendefst
   statestackt   statetokenst   known_namesRX   t   rexmatcht   actionR;   t   mR   t   ttypet   itemR5   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyRZ     sh    	
	

	
(   RI   ()   R   R   R   t   __metaclass__RR   R0   R`   Rb   RV   R&   t
   IGNORECASEt   UNICODER"   R    t   Commentt   Singlet   Newlinet
   Whitespacet	   Multilinet
   Assignmentt   Punctuationt   Wildcardt   KeywordR   t   Builtint   Placeholdert   Numbert   Hexadecimalt   Floatt   Integert   Stringt   Symbolt   DDLR   t   Operatort
   ComparisonR   RM   RY   Rf   RZ   (    (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyRG   ›   sj   				c         C   s.   t  ƒ  } | d k	 r! | | _ n  | j |  ƒ S(   s�   Tokenize sql.

    Tokenize *sql* using the :class:`Lexer` and return a 2-tuple stream
    of ``(token type, value)`` items.
    N(   RG   R.   RR   Rf   (   t   sqlRR   R   (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   tokenizea  s    	(   R   R&   RP   t   sqlparseR    t   sqlparse.keywordsR   R   t	   cStringIOR   R    R   R   R   R   R.   R   R   R   t   objectRG   R’   (    (    (    sb   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/sqlparse/lexer.pyt   <module>   s   	`Æ