
    GWPi>                     @   d dl mZ d dl mZ d dlmZ d dlmZmZ dZ	d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 Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z# eejH                        d        Z% eejL                        d        Z'd Z(d Z)d Z* eejV                        d        Z, eejZ                        d        Z. e       d        Z/ eej`                        d        Z1 eejH                        d        Z2 e       d        Z3d  Z4d! Z5d" d# d$d%d%d fd&Z6y$)(    )sql)tokens)SQLParseError)recurseimtd   i'  c                 p   t         |t         kD  rt        dt          d      t        /t        | j                        t        kD  rt        dt         d      g }d}t        |       }t        |      D ]  \  }}||z
  }|j                  r|j                  rt        ||      st        |||dz          A |j                  |j                   r|j                  |       l |j                  |j                   s	 |j                         }	|}
| j#                  ||	|
       ||
|	z
  z  } y# t         $ r Y w xY w)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              N/root/twitch_bot/venv/lib/python3.12/site-packages/sqlparse/engine/grouping.pyr   r      sH   %%2D*D/0B/C2F
 	

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

#LLU[[#++& 99;
 IsHi89x//K90,   s   9D))	D54D5c                 8    t        | t        j                         y N)r   r   SquareBracketsr   s    r)   group_bracketsr.   L   s    E3--.    c                 8    t        | t        j                         y r+   )r   r   Parenthesisr-   s    r)   group_parenthesisr2   P   s    E3??+r/   c                 8    t        | t        j                         y r+   )r   r   Caser-   s    r)   
group_caser5   T   s    E388$r/   c                 8    t        | t        j                         y r+   )r   r   Ifr-   s    r)   group_ifr8   X   s    E366"r/   c                 8    t        | t        j                         y r+   )r   r   Forr-   s    r)   	group_forr;   \   s    E377#r/   c                 8    t        | t        j                         y r+   )r   r   Beginr-   s    r)   group_beginr>   `   s    E399%r/   c                 Z    d }d }d }|x}}t        | t        j                  ||||       y )Nc                 B    | j                  t        j                  d      S )Nz::r   TPunctuationr%   s    r)   r   zgroup_typecasts.<locals>.matche   s    {{1==$//r/   c                 
    | d uS r+    rD   s    r)   validzgroup_typecasts.<locals>.validh       D  r/   c                 
    ||fS r+   rF   r   pidxr&   nidxs       r)   postzgroup_typecasts.<locals>.postk       Tzr/   _groupr   
Identifierr   r   rG   rM   
valid_prev
valid_nexts         r)   group_typecastsrU   d   s3    0! $#J
5#..%ZFr/   c                 X    d }d }d }d }t        | t        j                  ||||       y )Nc                 P    | j                   t        j                  j                  k(  S r+   )ttyperB   KeywordTZCastrD   s    r)   r   zgroup_tzcasts.<locals>.matchs   s    {{aii....r/   c                 
    | d uS r+   rF   rD   s    r)   rS   z!group_tzcasts.<locals>.valid_prevv   rH   r/   c                     | d uxrW | j                   xsI | j                  t        j                  d      xs'  | j                  t        j
                  j                   S NAS)r   r   rB   rY   r   TypedLiteralr   rD   s    r)   rT   z!group_tzcasts.<locals>.valid_nexty   sS    D  
 6{{199d+6u{{C,,445	
r/   c                 
    ||fS r+   rF   rJ   s       r)   rM   zgroup_tzcasts.<locals>.post   rN   r/   rO   r   r   rS   rT   rM   s        r)   group_tzcastsrb   r   s.    /!
 5#..%ZFr/   c           	          d }d }d }d }d }d }t        | t        j                  ||||d       t        | t        j                  ||||d	       y )
Nc                 L    t        | t        j                  j                        S )Nm)r   r   r_   r   rD   s    r)   r   z"group_typed_literal.<locals>.match   s    5C,,3344r/   c                 6    t        | t        j                        S r+   )r   r   r_   rD   s    r)   match_to_extendz,group_typed_literal.<locals>.match_to_extend   s    %!1!122r/   c                 
    | d uS r+   rF   rD   s    r)   rS   z'group_typed_literal.<locals>.valid_prev   rH   r/   c                 \    | d uxr'  | j                   t        j                  j                   S r+   )r   r   r_   r   rD   s    r)   rT   z'group_typed_literal.<locals>.valid_next   s)    D K[U[[#2B2B2J2J%KKr/   c                 \    | d uxr'  | j                   t        j                  j                   S r+   )r   r   r_   M_EXTENDrD   s    r)   valid_finalz(group_typed_literal.<locals>.valid_final   s)    D L[U[[#2B2B2K2K%LLr/   c                 
    ||fS r+   rF   rJ   s       r)   rM   z!group_typed_literal.<locals>.post   rN   r/   FextendT)rP   r   r_   )r   r   rh   rS   rT   rm   rM   s          r)   group_typed_literalrq      s^    53!LM 5#""E:z
5#""OZr/   c                 X    d }d }d }d }t        | t        j                  ||||       y )Nc                     t         j                  dft         j                  dft         j                  dffD ]  \  }}| j                  ||      s y y)N.z->z->>TF)rB   rC   Operatorr   )r%   rX   values      r)   r   zgroup_period.<locals>.match   sS    mmS1jj$/jj%02 	LE5 {{5%(		
 r/   c                     t         j                  t         j                  f}t        j                  t        j
                  j                  f}t        | ||      S Nit)r   r,   rQ   rB   NameStringSymbolr   r%   sqlclsttypess      r)   rS   z group_period.<locals>.valid_prev   s;    ##S^^3(5Ff--r/   c                      yNTrF   rD   s    r)   rT   z group_period.<locals>.valid_next   s    r/   c                 (   t         j                  t         j                  f}t        j                  t        j
                  j                  t        j                  t        j
                  j                  f}|| |   nd }t        |||      }|r||fS ||fS rx   )
r   r,   FunctionrB   r|   r}   r~   WildcardSingler   )r   rK   r&   rL   r   r   next_rT   s           r)   rM   zgroup_period.<locals>.post   so    ##S\\1!**ahhooE#/dT&F3
)d|;d|;r/   rO   ra   s        r)   group_periodr      s.    .
< 5#..%ZFr/   c                 X    d }d }d }d }t        | t        j                  ||||       y )Nc                 <    | j                   xr | j                  dk(  S r]   )
is_keyword
normalizedrD   s    r)   r   zgroup_as.<locals>.match   s    <E$4$4$<<r/   c                 >    | j                   dk(  xs | j                   S )NNULL)r   r   rD   s    r)   rS   zgroup_as.<locals>.valid_prev   s!    6)A1A1A-AAr/   c                     t         j                  t         j                  t         j                  f}t	        | |       xr | d uS Nr{   )rB   DMLDDLCTEr   )r%   r   s     r)   rT   zgroup_as.<locals>.valid_next   s4    quu$u''=E,==r/   c                 
    ||fS r+   rF   rJ   s       r)   rM   zgroup_as.<locals>.post   rN   r/   rO   ra   s        r)   group_asr      s/    =B> 5#..%ZFr/   c                 Z    d }d }d }|x}}t        | t        j                  ||||       y )Nc                 B    | j                  t        j                  d      S )Nz:=)r   rB   
AssignmentrD   s    r)   r   zgroup_assignment.<locals>.match   s    {{1<<..r/   c                 H    | d uxr | j                   t        j                  fvS r+   )rX   rB   rY   rD   s    r)   rG   zgroup_assignment.<locals>.valid   s!    D DU[[%DDr/   c                 f    t         j                  df}| j                  ||      \  }}|xs |}||fS )N;rf   r$   )rB   rC   token_next_by)r   rK   r&   rL   m_semicolonsnidx_s          r)   rM   zgroup_assignment.<locals>.post   s<    mmS(&&$&?q}Tzr/   )rP   r   r   rR   s         r)   group_assignmentr      s4    /E $#J
5#..%ZFr/   c           	      *   t         j                  t         j                  t         j                  t         j                  t         j
                  ft        t        z   t        z   d }fd}d }|x}}t        | t         j                  ||||d       y )Nc                 P    | j                   t        j                  j                  k(  S r+   )rX   rB   ru   
ComparisonrD   s    r)   r   zgroup_comparison.<locals>.match   s    {{ajj3333r/   c                 `    t        |       ry| r| j                  r| j                  dk(  ryy)N)r{   rz   Tr   F)r   r   r   r   s    r)   rG   zgroup_comparison.<locals>.valid   s0    u&)u''E,<,<,Fr/   c                 
    ||fS r+   rF   rJ   s       r)   rM   zgroup_comparison.<locals>.post   rN   r/   Fro   )r   r1   r   rQ   	Operationr_   T_NUMERICALT_STRINGT_NAMErP   r   r   r   rG   rM   rS   rT   r   r   s         @@r)   group_comparisonr      sq    oos||S^^mmS--/F8#f,F4 $#J
5#..%z47r/   c                     t         j                  j                  t         j                  f}| j	                  |      \  }}|r;| j                  t        j                  ||       | j	                  ||      \  }}|r:y y )Nr   r{   r$   )rB   r}   r~   r|   r   r   r   rQ   )r   r   r&   r%   s       r)   group_identifierr      sf    hhooqvv&F%%%/KD%
3>>46))F)=e r/   c                    | j                  t        j                  j                        \  }}|r| j	                  |      \  }}t        |t        j                  t        j                        r!| j                  t        j                  ||       | j                  t        j                  j                  |      \  }}|ry y )Nre   ry   r   )
r   r   Overr   
token_nextr   r1   rB   r|   r   )r   r&   r%   rL   r   s        r)   
group_overr     s    %%%8KD%
&&t,eu1662sxxt4))CHHOO)Fe	 r/   c           
         t         j                  t         j                  t         j                  ft        j
                  t        j                  j                  fd }fd}d }d }t        | t         j                  ||||dd       y )Nc                 6    t        | t        j                        S r+   )r   r   r,   rD   s    r)   r   zgroup_arrays.<locals>.match  s    %!3!344r/   c                      t        |       S rx   r   r   s    r)   rS   z group_arrays.<locals>.valid_prev  s    5Ff--r/   c                      yr   rF   rD   s    r)   rT   z group_arrays.<locals>.valid_next  s    r/   c                 
    ||fS r+   rF   rJ   s       r)   rM   zgroup_arrays.<locals>.post  rN   r/   TF)rp   r   )	r   r,   rQ   r   rB   r|   r}   r~   rP   )r   r   rS   rT   rM   r   r   s        @@r)   group_arraysr     sg    =FVVQXX__$F5. 5#..%z4eEr/   c           	      H   t         t        z   t        z   t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  fd }fd}d }|x}}t        | t        j                  ||||d       y )Nc                 X    t        | t        j                  t        j                  f      S r   )r   rB   ru   r   rD   s    r)   r   zgroup_operator.<locals>.match)  s    5QZZ455r/   c                 l    t        |       xs$ | xr  | j                  t        j                  d      S )Nry   )CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP)r   r   rB   rY   r   s    r)   rG   zgroup_operator.<locals>.valid,  s:    5Ff- H G%++		EG	Hr/   c                 :    t         j                  | |   _        ||fS r+   )rB   ru   rX   rJ   s       r)   rM   zgroup_operator.<locals>.post2  s    JJdTzr/   Fro   )r   r   r   r   r,   r1   r   rQ   r   r_   rP   r   s         @@r)   group_operatorr   $  sz    8#f,F  #//3<<nncmmS-=-=?F6H $#J
5#--z47r/   c           	         t         j                  dft        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  ft        t        z   t        z   t         j                  t         j                  t         j                  fz   d }fd}d }|x}}t        | t        j                  ||||d       y )N)nullrolec                 B    | j                  t        j                  d      S )N,rA   rD   s    r)   r   z$group_identifier_list.<locals>.matchB  s    {{1==#..r/   c                 "    t        |       S )N)rz   rf   r{   r   )r%   m_roler   r   s    r)   rG   z$group_identifier_list.<locals>.validE  s    5Ff77r/   c                 
    ||fS r+   rF   rJ   s       r)   rM   z#group_identifier_list.<locals>.postH  rN   r/   Tro   )rB   rY   r   r   r4   rQ   r   IdentifierListr   r   r   r   Commentr   rP   )	r   r   rG   rM   rS   rT   r   r   r   s	         @@@r)   group_identifier_listr   ;  s    YY((FllCHHcnncnn  #--1FH$v-AIIqzz23F/8 $#J
5#$$ez46r/   c                 >   | j                  t        j                        \  }}|rx| j                  d |      \  }}|7| j	                  |d      \  }}| j                  t        j                  ||       | j                  t        j                  |      \  }}|rwy y )Nr   c                 T    t        | t        j                        xs | j                  S r   )r   rB   r   
is_newline)tks    r)   <lambda>z 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	c?((u(=ID#s{{D$7))AII4)@e r/   c                    | j                  t        j                  j                        \  }}|r| j                  t        j                  j                  |      \  }}|| j
                  d   }n| j                  |dz
     }| j                  |      }| j                  t        j                  ||       | j                  t        j                  j                  |      \  }}|ry y )Nre   r   r   )	r   r   Wherer   r   _groupable_tokensr   token_indexr   r   s        r)   group_wherer   ]  s    %%		(8(8%9KD%
''#))*;*;'F	c;))"-C,,tax(C   %399dD1))CII,<,<$)Ge r/   c                    t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  f}| j                  |t        j                        \  }}|rz| j                  |      \  }}t        |t         j                        r#| j                  t         j                  ||d       | j                  |t        j                  |      \  }}|ryy y )Nry   Tro   )rz   r{   r$   )r   r1   r   r4   rQ   r   r   r   rB   Numberr   r   r   )r   I_ALIASr&   r%   rL   r   s         r)   group_aliasedr   n  s    chh}}cnn.G %%188%<KD%
&&t,eeS^^,s~~tT$G))GqxxT)Je	 r/   c                    d}d}d}| j                   D ]R  }|j                  j                         dk(  rd}|j                  j                         dk(  rd}|j                  dk(  sQd}T |r|r|sy | j                  t        j
                        \  }}|r| j                  |      \  }}t        |t        j                        rV| j                  |      \  }	}
|
rt        |
t        j                        r|	}n|}| j                  t        j                  ||       | j                  t        j
                  |      \  }}|ry y )NFCREATETTABLEr^   r   r   )r   rv   upperr   rB   r|   r   r   r   r1   r   r   r   )r   
has_create	has_tablehas_as	tmp_tokenr&   r%   rL   r   over_idxoverr   s               r)   group_functionsr   {  s   JIF\\ 	??  "h.J??  "g-I??d"F i%%%/KD%
&&t,eeS__-"--d3NHd
42s||T48))AFF)=e r/   c                    | j                  t        j                  j                        \  }}|r| j	                  |      \  }}t        |t        j                  t        j                        r#| j                  t        j                  ||       |}| j                  t        j                  j                  |      \  }}|ryy)z,Group together Identifier and Asc/Desc tokenr   ry   r   N)
r   rB   rY   Orderr   r   r   rQ   r   r   r   r&   r%   rK   prev_s        r)   group_orderr     s     %%		%8KD%
&&t,eu!((3s~~tT:D))AIIOO)Fe r/   c                 D   | j                  t        j                        \  }}|r{| j                  |      \  }}t	        |t        j
                        r%| j                  t        j
                  ||d       |}| j                  t        j                  |      \  }}|rzy y )N)rz   Tro   )rz   r$   )r   r   r   r   r   	TokenListr   r   s        r)   align_commentsr     s    %%%4KD%
&&t,eeS]]+s}}dDFD))CKKT)Be r/   c                    | j                  t        j                  df      \  }}|}d}|r3t        |t        j
                        r|}| j                  |      \  }}|r3|dk7  r$| j                  t        j                  ||d       y y )NVALUESre   r   Tro   )	r   rB   rY   r   r   r1   r   r   Values)r   r&   r%   	start_idxend_idxs        r)   group_valuesr     s    %%H(=%>KD%IG
eS__-G&&t,e  "}3::y'$G r/   c                    t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        t        t         t"        t$        t&        t(        t*        t,        t.        t0        fD ]
  } ||         | S r+   )r   r.   r2   r5   r8   r;   r>   r   r   r   r   r   r   r   rU   rb   rq   r   r   r   r   r   r   r   r   )stmtfuncs     r)   groupr    sq     	; > 	T
?@ Kr/   c                      yr   rF   r   s    r)   r   r         r/   c                      yr   rF   r   s    r)   r   r     r  r/   NTc	                 P   t         |t         kD  rt        dt          d      t        /t        | j                        t        kD  rt        dt         d      d}	d\  }
}t        |       }t        |      D ]  \  }}||	z
  }|dk  r|j                  r|r.|j                  r"t        ||      st        |||||||d|dz   	        ||      rV| j                  |      \  }}|r@ ||      r8 ||      r0 || |
||      \  }}| j                  ||||	      }|	||z
  z  }	||}}
||}}
 y)
zDGroups together tokens that are joined by a middle token. i.e. x < yNr
   r   r   r   )NNTr   ro   )r   r   r   r   r   r   r   r   r   r   rP   r   r   )r   r   r   rS   rT   rM   rp   r   r    r"   rK   r   r#   r$   r%   r&   rL   r   from_idxto_idxgrps                        r)   rP   rP     sd    %%2D*D/0B/C2F
 	

 &u||2212E1FbI
 	
 KKD%eJ
+ "
U[ !8u~~j.D5#uj*uqy2 <**40KD%E*z%/@#'tT4#@ &((hv(Nv00&eEe-"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>   rU   rb   rq   r   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rP   rF   r/   r)   <module>r     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/   