
    EȂi>                     D   S SK Jr  S SK Jr  S SKJr  S SKJrJr  Sr	Sr
\R                  \R                  R                  \R                  R                  4r\R                  \R                  R                   \R                  R"                  4r\R&                  \R&                  R(                  4rS'S jrS rS	 rS
 rS rS rS rS rS rS rS r S r!S r"S r#\" \RH                  5      S 5       r%\" \RL                  5      S 5       r'S r(S r)S r*\" \RV                  5      S 5       r,\" \RZ                  5      S 5       r.\" 5       S 5       r/\" \R`                  5      S 5       r1\" \RH                  5      S 5       r2\" 5       S 5       r3S  r4S! r5S" S# S$S%S%S 4S& jr6g$)(    )sql)tokens)SQLParseError)recurseimtd   i'  c                    [         b  U[         :  a  [        S[          S35      e[        b0  [        U R                  5      [        :  a  [        S[         S35      e/ nSn[        U 5      n[        U5       H  u  pgXd-
  nUR                  (       a  M  UR                  (       a!  [        Xq5      (       d  [        XqUS-   5        MN  UR                  " UR                  6 (       a  UR                  U5        M  UR                  " UR                  6 (       d  M   UR                  5       n	Un
U R#                  XU
5        XJU	-
  -  nM     g! [          a     M  f = f)z*Groups Tokens that have beginning and end.N!Maximum grouping depth exceeded ().#Maximum number of tokens exceeded (r      )MAX_GROUPING_DEPTHr   MAX_GROUPING_TOKENSlenr   list	enumerateis_whitespaceis_group
isinstance_group_matchingmatchM_OPENappendM_CLOSEpop
IndexErrorgroup_tokens)tlistclsdepthopenstidx_offset
token_listidxtokentidxopen_idx	close_idxs              ID:\sksbv-state-backend\venv\Lib\site-packages\sqlparse/engine/grouping.pyr   r      s9   %%2D*D/0B/C2F
 	

 &u||2212E1FbI
 	
 EKeJ
+
  >>*U"8"8 E	2;;

#LL[[#++&& 99;
 Isi8x//K9 ,,   s   E
EEc                 8    [        U [        R                  5        g N)r   r   SquareBracketsr   s    r)   group_bracketsr.   L   s    E3--.    c                 8    [        U [        R                  5        g r+   )r   r   Parenthesisr-   s    r)   group_parenthesisr2   P   s    E3??+r/   c                 8    [        U [        R                  5        g r+   )r   r   Caser-   s    r)   
group_caser5   T   s    E388$r/   c                 8    [        U [        R                  5        g r+   )r   r   Ifr-   s    r)   group_ifr8   X   s    E366"r/   c                 8    [        U [        R                  5        g r+   )r   r   Forr-   s    r)   	group_forr;   \   s    E377#r/   c                 8    [        U [        R                  5        g r+   )r   r   Beginr-   s    r)   group_beginr>   `   s    E399%r/   c                 T    S nS nS nU=pE[        U [        R                  XXS5        g )Nc                 B    U R                  [        R                  S5      $ )Nz::r   TPunctuationr%   s    r)   r   group_typecasts.<locals>.matche   s    {{1==$//r/   c                 
    U S L$ r+    rD   s    r)   validgroup_typecasts.<locals>.validh       D  r/   c                     X4$ r+   rG   r   pidxr&   nidxs       r)   postgroup_typecasts.<locals>.postk   
    zr/   _groupr   
Identifierr   r   rH   rO   
valid_prev
valid_nexts         r)   group_typecastsrX   d   s-    0! $#J
5#..%ZFr/   c                 T    S nS nS nS n[        U [        R                  XX45        g )Nc                 P    U R                   [        R                  R                  :H  $ r+   )ttyperB   KeywordTZCastrD   s    r)   r   group_tzcasts.<locals>.matchs   s    {{aii....r/   c                 
    U S L$ r+   rG   rD   s    r)   rV   !group_tzcasts.<locals>.valid_prevv   rJ   r/   c                     U S L=(       aa    U R                   =(       dN    U R                  [        R                  S5      =(       d'    U R                  " [        R
                  R                  6 $ NAS)r   r   rB   r\   r   TypedLiteralr   rD   s    r)   rW   !group_tzcasts.<locals>.valid_nexty   sQ    D  
 6{{199d+6{{C,,445	
r/   c                     X4$ r+   rG   rL   s       r)   rO   group_tzcasts.<locals>.post   rQ   r/   rR   r   r   rV   rW   rO   s        r)   group_tzcastsri   r   s*    /!
 5#..%ZFr/   c           
          S nS nS nS nS nS n[        U [        R                  XUUSS9  [        U [        R                  X#UUS	S9  g )
Nc                 F    [        U [        R                  R                  S9$ )Nm)r   r   rd   r   rD   s    r)   r   "group_typed_literal.<locals>.match   s    5C,,3344r/   c                 6    [        U [        R                  5      $ r+   )r   r   rd   rD   s    r)   match_to_extend,group_typed_literal.<locals>.match_to_extend   s    %!1!122r/   c                 
    U S L$ r+   rG   rD   s    r)   rV   'group_typed_literal.<locals>.valid_prev   rJ   r/   c                 f    U S L=(       a'    U R                   " [        R                  R                  6 $ r+   )r   r   rd   r   rD   s    r)   rW   'group_typed_literal.<locals>.valid_next   s'    D KU[[#2B2B2J2J%KKr/   c                 f    U S L=(       a'    U R                   " [        R                  R                  6 $ r+   )r   r   rd   M_EXTENDrD   s    r)   valid_final(group_typed_literal.<locals>.valid_final   s'    D LU[[#2B2B2K2K%LLr/   c                     X#4$ r+   rG   rL   s       r)   rO   !group_typed_literal.<locals>.post   rQ   r/   FextendT)rS   r   rd   )r   r   rp   rV   rW   rx   rO   s          r)   group_typed_literalr~      sZ    53!LM 5#""Ez
5#""Or/   c                 T    S nS nS nS n[        U [        R                  XX45        g )Nc                     [         R                  S4[         R                  S4[         R                  S44 H  u  pU R                  X5      (       d  M    g   g)N.z->z->>TF)rB   rC   Operatorr   )r%   r[   values      r)   r   group_period.<locals>.match   sM    mmS1jj$/jj%02LE {{5((	2
 r/   c                     [         R                  [         R                  4n[        R                  [        R
                  R                  4n[        XUS9$ Nit)r   r,   rT   rB   NameStringSymbolr   r%   sqlclsttypess      r)   rV    group_period.<locals>.valid_prev   s9    ##S^^3(5f--r/   c                     gNTrG   rD   s    r)   rW    group_period.<locals>.valid_next   s    r/   c                 &   [         R                  [         R                  4n[        R                  [        R
                  R                  [        R                  [        R
                  R                  4nUb  X   OS n[        XdUS9nU(       a  X4$ X4$ r   )
r   r,   FunctionrB   r   r   r   WildcardSingler   )r   rM   r&   rN   r   r   next_rW   s           r)   rO   group_period.<locals>.post   sg    ##S\\1!**ahhooE#/TF3
)|;|;r/   rR   rh   s        r)   group_periodr      s*    .
< 5#..%ZFr/   c                 T    S nS nS nS n[        U [        R                  XX45        g )Nc                 F    U R                   =(       a    U R                  S:H  $ rb   )
is_keyword
normalizedrD   s    r)   r   group_as.<locals>.match   s    <E$4$4$<<r/   c                 P    U R                   S:H  =(       d    U R                  (       + $ )NNULL)r   r   rD   s    r)   rV   group_as.<locals>.valid_prev   s!    6)A1A1A-AAr/   c                     [         R                  [         R                  [         R                  4n[	        XS9(       + =(       a    U S L$ Nr   )rB   DMLDDLCTEr   )r%   r   s     r)   rW   group_as.<locals>.valid_next   s2    quu$u''=E,==r/   c                     X4$ r+   rG   rL   s       r)   rO   group_as.<locals>.post   rQ   r/   rR   rh   s        r)   group_asr      s+    =B> 5#..%ZFr/   c                 T    S nS nS nU=pE[        U [        R                  XXS5        g )Nc                 B    U R                  [        R                  S5      $ )Nz:=)r   rB   
AssignmentrD   s    r)   r   group_assignment.<locals>.match   s    {{1<<..r/   c                 T    U S L=(       a    U R                   [        R                  4;  $ r+   )r[   rB   r\   rD   s    r)   rH   group_assignment.<locals>.valid   s!    D DU[[%DDr/   c                 d    [         R                  S4nU R                  XCS9u  pVU=(       d    UnX4$ )N;rm   r$   )rB   rC   token_next_by)r   rM   r&   rN   m_semicolonsnidx_s          r)   rO   group_assignment.<locals>.post   s6    mmS(&&&?}zr/   )rS   r   r   rU   s         r)   group_assignmentr      s.    /E $#J
5#..%ZFr/   c           
      "  ^^ [         R                  [         R                  [         R                  [         R                  [         R
                  4m[        [        -   [        -   mS nUU4S jnS nU=pE[        U [         R                  UXEUSS9  g )Nc                 P    U R                   [        R                  R                  :H  $ r+   )r[   rB   r   
ComparisonrD   s    r)   r   group_comparison.<locals>.match   s    {{ajj3333r/   c                 z   > [        U TTS9(       a  gU (       a"  U R                  (       a  U R                  S:X  a  gg)N)r   r   Tr   F)r   r   r   r   s    r)   rH   group_comparison.<locals>.valid   s0    u&)u''E,<,<,Fr/   c                     X4$ r+   rG   rL   s       r)   rO   group_comparison.<locals>.post   rQ   r/   Fr|   )r   r1   r   rT   	Operationrd   T_NUMERICALT_STRINGT_NAMErS   r   r   r   rH   rO   rV   rW   r   r   s         @@r)   group_comparisonr      sm    oos||S^^mmS--/F8#f,F4 $#J
5#..%47r/   c                     [         R                  R                  [         R                  4nU R	                  US9u  p#U(       a;  U R                  [        R                  X"5        U R	                  XS9u  p#U(       a  M:  g g )Nr   r   r$   )rB   r   r   r   r   r   r   rT   )r   r   r&   r%   s       r)   group_identifierr      s`    hhooqvv&F%%%/KD
3>>46))F)= %r/   c                    U R                  [        R                  R                  S9u  pU(       a  U R	                  U5      u  p4[        U[        R                  [        R                  S9(       a   U R                  [        R                  X5        U R                  [        R                  R                  US9u  pU(       a  M  g g )Nrl   r   r   )
r   r   Overr   
token_nextr   r1   rB   r   r   )r   r&   r%   rN   r   s        r)   
group_overr     s    %%%8KD
&&t,u1662sxx4))CHHOO)F	 %r/   c                   ^^ [         R                  [         R                  [         R                  4m[        R
                  [        R                  R                  4mS nUU4S jnS nS n[        U [         R                  UX#USSS9  g )Nc                 6    [        U [        R                  5      $ r+   )r   r   r,   rD   s    r)   r   group_arrays.<locals>.match  s    %!3!344r/   c                    > [        U TTS9$ r   r   r   s    r)   rV    group_arrays.<locals>.valid_prev  s    5Ff--r/   c                     gr   rG   rD   s    r)   rW    group_arrays.<locals>.valid_next  s    r/   c                     X4$ r+   rG   rL   s       r)   rO   group_arrays.<locals>.post  rQ   r/   TF)r}   r   )	r   r,   rT   r   rB   r   r   r   rS   )r   r   rV   rW   rO   r   r   s        @@r)   group_arraysr     se    =FVVQXX__$F5. 5#..%4eEr/   c           
      @  ^^ [         [        -   [        -   m[        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  4mS nUU4S jnS nU=pE[        U [        R                  UXEUSS9  g )Nc                 R    [        U [        R                  [        R                  4S9$ r   )r   rB   r   r   rD   s    r)   r   group_operator.<locals>.match)  s    5QZZ455r/   c                 z   > [        U TTS9=(       d)    U =(       a     U R                  [        R                  S5      $ )Nr   )CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP)r   r   rB   r\   r   s    r)   rH   group_operator.<locals>.valid,  s:    5Ff- H G%++		EG	Hr/   c                 6    [         R                  X   l        X4$ r+   )rB   r   r[   rL   s       r)   rO   group_operator.<locals>.post2  s    JJzr/   Fr|   )r   r   r   r   r,   r1   r   rT   r   rd   rS   r   s         @@r)   group_operatorr   $  sv    8#f,F  #//3<<nncmmS-=-=?F6H $#J
5#--47r/   c           
        ^^^ [         R                  S4m[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  4m[        [        -   [        -   [         R                  [         R                  [         R                  4-   mS nUUU4S jnS nU=pE[        U [        R                  UXEUSS9  g )N)nullrolec                 B    U R                  [        R                  S5      $ )N,rA   rD   s    r)   r   $group_identifier_list.<locals>.matchB  s    {{1==#..r/   c                    > [        U TTTS9$ )N)r   rm   r   r   )r%   m_roler   r   s    r)   rH   $group_identifier_list.<locals>.validE  s    5Ff77r/   c                     X4$ r+   rG   rL   s       r)   rO   #group_identifier_list.<locals>.postH  rQ   r/   Tr|   )rB   r\   r   r   r4   rT   r   IdentifierListr   r   r   r   Commentr   rS   )	r   r   rH   rO   rV   rW   r   r   r   s	         @@@r)   group_identifier_listr   ;  s    YY((FllCHHcnncnn  #--1FH$v-AIIqzz23F/8 $#J
5#$$e46r/   c                 4   U R                  [        R                  S9u  pU(       ar  U R                  S US9u  p4Ub2  U R	                  USS9u  p4U R                  [        R                  X5        U R                  [        R                  US9u  pU(       a  Mq  g g )Nr   c                 X    [        U [        R                  S9=(       d    U R                  $ r   )r   rB   r   
is_newline)tks    r)   <lambda> group_comments.<locals>.<lambda>U  s    s2+<r}}<r/   )r$   F)skip_wsr   )r   rB   r   token_not_matching
token_prevr   r   r   r&   r%   eidxends        r)   group_commentsr  P  s    %%		%2KD
,,<$ - H	?((u(=IDs{{D7))AII4)@ %r/   c                    U R                  [        R                  R                  S9u  pU(       a  U R                  [        R                  R                  US9u  p4Uc  U R
                  S   nOU R                  US-
     nU R                  U5      nU R                  [        R                  X5        U R                  [        R                  R                  US9u  pU(       a  M  g g )Nrl   r   r   )	r   r   Wherer   r   _groupable_tokensr   token_indexr   r   s        r)   group_wherer  ]  s    %%		(8(8%9KD
''#))*;*;'F	;))"-C,,tax(C   %399d1))CII,<,<$)G %r/   c                    [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  4nU R                  U[        R                  S9u  p#U(       a|  U R                  U5      u  pE[        U[         R                  5      (       a  U R                  [         R                  X$SS9  U R                  U[        R                  US9u  p#U(       a  M{  g g )Nr   Tr|   )r   r   r$   )r   r1   r   r4   rT   r   r   r   rB   Numberr   r   r   )r   I_ALIASr&   r%   rN   r   s         r)   group_aliasedr  n  s    chh}}cnn.G %%188%<KD
&&t,eS^^,,s~~t$G))GqxxT)J	 %r/   c                    SnSnSnU R                    HW  nUR                  R                  5       S:X  a  SnUR                  R                  5       S:X  a  SnUR                  S:X  d  MU  SnMY     U(       a  U(       a  U(       d  g U R                  [        R
                  S9u  pVU(       a  U R                  U5      u  px[        U[        R                  5      (       a^  U R                  U5      u  pU
(       a"  [        U
[        R                  5      (       a  U	nOUnU R                  [        R                  X[5        U R                  [        R
                  US9u  pVU(       a  M  g g )NFCREATETTABLErc   r   r   )r   r   upperr   rB   r   r   r   r   r1   r   r   r   )r   
has_create	has_tablehas_as	tmp_tokenr&   r%   rN   r   over_idxoverr   s               r)   group_functionsr  {  s   JIF\\	??  "h.J??  "g-I??d"F " i%%%/KD
&&t,eS__--"--d3NH
422s||T8))AFF)= %r/   c                    U R                  [        R                  R                  S9u  pU(       a  U R	                  U5      u  p4[        U[        R                  [        R                  S9(       a"  U R                  [        R                  X15        UnU R                  [        R                  R                  US9u  pU(       a  M  gg)z,Group together Identifier and Asc/Desc tokenr   r   r   N)
r   rB   r\   Orderr   r   r   rT   r	  r   r   r&   r%   rM   prev_s        r)   group_orderr    s     %%		%8KD
&&t,u!((3s~~t:D))AIIOO)F %r/   c                 J   U R                  [        R                  S9u  pU(       a}  U R                  U5      u  p4[	        U[        R
                  5      (       a!  U R                  [        R
                  X1SS9  UnU R                  [        R                  US9u  pU(       a  M|  g g )N)r   Tr|   )r   r$   )r   r   r   r   r   	TokenListr   r  s        r)   align_commentsr    s    %%%4KD
&&t,eS]]++s}}dFD))CKKT)B %r/   c                 "   U R                  [        R                  S4S9u  pUnSnU(       a=  [        U[        R
                  5      (       a  UnU R                  U5      u  pU(       a  M=  US:w  a   U R                  [        R                  X4SS9  g g )NVALUESrl   r  Tr|   )	r   rB   r\   r   r   r1   r   r   Values)r   r&   r%   	start_idxend_idxs        r)   group_valuesr$    s    %%H(=%>KDIG
eS__--G&&t, % "}3::y$G r/   c                 "   [         [        [        [        [        [
        [        [        [        [        [        [        [        [        [        [        [         ["        [$        [&        [(        [*        [,        [.        [0        4 H  nU" U 5        M     U $ r+   )r  r.   r2   r5   r8   r;   r>   r   r  r  r   r   r   r  rX   ri   r~   r   r   r   r  r   r  r   r$  )stmtfuncs     r)   groupr(    sl     	;> 	T
?@ Kr/   c                     gr   rG   r   s    r)   r   r         r/   c                     gr   rG   r   s    r)   r   r     r*  r/   NTc	                    [         b  U[         :  a  [        S[          S35      e[        b0  [        U R                  5      [        :  a  [        S[         S35      eSn	Su  p[        U 5      n[        U5       H  u  pX-
  nUS:  a  M  UR                  (       a  M$  U(       a4  UR                  (       a#  [        X5      (       d  [        XX#UXVSUS-   5	        U" U5      (       aa  U R                  U5      u  nnU(       aF  U" U5      (       a9  U" U5      (       a,  U" X
UU5      u  nnU R                  UUUUS	9nU	UU-
  -  n	UUpM  XpM     g)
zDGroups together tokens that are joined by a middle token. i.e. x < yNr
   r   r   r   )NNTr   r|   )r   r   r   r   r   r   r   r   r   r   rS   r   r   )r   r   r   rV   rW   rO   r}   r   r    r"   rM   r  r#   r$   r%   r&   rN   r   from_idxto_idxgrps                        r)   rS   rS     sT    %%2D*D/0B/C2F
 	

 &u||2212E1FbI
 	
 KKDeJ
+
 !8u~~j.D.D5u*uqy2 <<**40KD%E**z%/@/@#'T4#@ &((hv(Nv00&ee- ,r/   )r   )7sqlparser   r   rB   sqlparse.exceptionsr   sqlparse.utilsr   r   r   r   r	  IntegerFloatr   r   r   r   r   r   Placeholderr   r   r.   r2   r5   r8   r;   r>   rX   ri   r~   r   r   r   r   rT   r   r   r   r   r   r   r   r  r  r  r  r   r  r  r  r$  r(  rS   rG   r/   r)   <module>r6     s      - '  
  xx))188>>:HHahhooqxx7
&&!&&$$	%.0b/,%#$&GG(<G<G"G"70 	> > 	G GE(7.6* 		A 	A 	H H  		K 	K 	> >6 	G G 	C C	H!J %$/"r/   