
    ,i<                     4   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jD                        d        Z# eejH                        d        Z%d Z&d Z'd Z( eejR                        d        Z* eejV                        d        Z, e       d        Z- eej\                        d        Z/ eejD                        d        Z0 e       d        Z1d Z2d  Z3d! d" d#d$d$d fd%Z4y#)'    )sql)tokens)recurseimtd   i'  c                 (   t         
|t         kD  ryt        t        | j                        t        kD  ry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.Nr      )MAX_GROUPING_DEPTH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              L/var/www/mymood/env/lib/python3.12/site-packages/sqlparse/engine/grouping.pyr   r      s   %%2D*D &u||22EKeJ
+
U[  >>*UC"8 E3	25;;

#LLU[[#++& 99;
 IsHi89x//K9 ,,   s   D	DDc                 8    t        | t        j                         y N)r   r   SquareBracketsr   s    r%   group_bracketsr*   G   s    E3--.    c                 8    t        | t        j                         y r'   )r   r   Parenthesisr)   s    r%   group_parenthesisr.   K   s    E3??+r+   c                 8    t        | t        j                         y r'   )r   r   Caser)   s    r%   
group_caser1   O   s    E388$r+   c                 8    t        | t        j                         y r'   )r   r   Ifr)   s    r%   group_ifr4   S   s    E366"r+   c                 8    t        | t        j                         y r'   )r   r   Forr)   s    r%   	group_forr7   W   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>.match`   s    {{1==$//r+   c                 
    | d uS r'    r@   s    r%   validzgroup_typecasts.<locals>.validc       D  r+   c                 
    ||fS r'   rB   r   pidxr"   nidxs       r%   postzgroup_typecasts.<locals>.postf       Tzr+   _groupr   
Identifierr   r   rC   rI   
valid_prev
valid_nexts         r%   group_typecastsrQ   _   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'   )ttyper>   KeywordTZCastr@   s    r%   r   zgroup_tzcasts.<locals>.matchn   s    {{aii....r+   c                 
    | d uS r'   rB   r@   s    r%   rO   z!group_tzcasts.<locals>.valid_prevq   rD   r+   c                     | d uxrW | j                   xsI | j                  t        j                  d      xs'  | j                  t        j
                  j                   S NAS)r   r   r>   rU   r   TypedLiteralr   r@   s    r%   rP   z!group_tzcasts.<locals>.valid_nextt   sS    D  
 6{{199d+6u{{C,,445	
r+   c                 
    ||fS r'   rB   rF   s       r%   rI   zgroup_tzcasts.<locals>.post{   rJ   r+   rK   r   r   rO   rP   rI   s        r%   group_tzcastsr^   m   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   r@   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[   r@   s    r%   match_to_extendz,group_typed_literal.<locals>.match_to_extend   s    %!1!122r+   c                 
    | d uS r'   rB   r@   s    r%   rO   z'group_typed_literal.<locals>.valid_prev   rD   r+   c                 \    | d uxr'  | j                   t        j                  j                   S r'   )r   r   r[   r   r@   s    r%   rP   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_EXTENDr@   s    r%   valid_finalz(group_typed_literal.<locals>.valid_final   s)    D L[U[[#2B2B2K2K%LLr+   c                 
    ||fS r'   rB   rF   s       r%   rI   z!group_typed_literal.<locals>.post   rJ   r+   FextendT)rL   r   r[   )r   r   rd   rO   rP   ri   rI   s          r%   group_typed_literalrm      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)r>   r?   Operatorr   )r!   rT   values      r%   r   zgroup_period.<locals>.match   sN    mmS1jj$/jj%02LE5 {{5%(	2
 r+   c                     t         j                  t         j                  f}t        j                  t        j
                  j                  f}t        | ||      S Nit)r   r(   rM   r>   NameStringSymbolr   r!   sqlclsttypess      r%   rO   z group_period.<locals>.valid_prev   s;    ##S^^3(5Ff--r+   c                      yNTrB   r@   s    r%   rP   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 rt   )
r   r(   Functionr>   rx   ry   rz   WildcardSingler   )r   rG   r"   rH   r|   r}   next_rP   s           r%   rI   zgroup_period.<locals>.post   so    ##S\\1!**ahhooE#/dT&F3
)d|;d|;r+   rK   r]   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 rY   )
is_keyword
normalizedr@   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   r@   s    r%   rO   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rw   )r>   DMLDDLCTEr   )r!   r}   s     r%   rP   zgroup_as.<locals>.valid_next   s4    quu$u''=E,==r+   c                 
    ||fS r'   rB   rF   s       r%   rI   zgroup_as.<locals>.post   rJ   r+   rK   r]   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   r>   
Assignmentr@   s    r%   r   zgroup_assignment.<locals>.match   s    {{1<<..r+   c                 H    | d uxr | j                   t        j                  fvS r'   )rT   r>   rU   r@   s    r%   rC   zgroup_assignment.<locals>.valid   s!    D DU[[%DDr+   c                 f    t         j                  df}| j                  ||      \  }}|xs |}||fS )N;rb   r    )r>   r?   token_next_by)r   rG   r"   rH   m_semicolonsnidx_s          r%   rI   zgroup_assignment.<locals>.post   s<    mmS(&&$&?q}Tzr+   )rL   r   r   rN   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'   )rT   r>   rq   
Comparisonr@   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)rw   rv   Tr   F)r   r   r   r{   s    r%   rC   zgroup_comparison.<locals>.valid   s0    u&)u''E,<,<,Fr+   c                 
    ||fS r'   rB   rF   s       r%   rI   zgroup_comparison.<locals>.post   rJ   r+   Frk   )r   r-   r   rM   	Operationr[   T_NUMERICALT_STRINGT_NAMErL   r   r   r   rC   rI   rO   rP   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   rw   r    )r>   ry   rz   rx   r   r   r   rM   )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 )Nra   ru   r   )
r   r   Overr   
token_nextr   r-   r>   rx   r   )r   r"   r!   rH   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(   r@   s    r%   r   zgroup_arrays.<locals>.match  s    %!3!344r+   c                      t        |       S rt   r   r{   s    r%   rO   z group_arrays.<locals>.valid_prev  s    5Ff--r+   c                      yr   rB   r@   s    r%   rP   z group_arrays.<locals>.valid_next  s    r+   c                 
    ||fS r'   rB   rF   s       r%   rI   zgroup_arrays.<locals>.post  rJ   r+   TF)rl   r   )	r   r(   rM   r   r>   rx   ry   rz   rL   )r   r   rO   rP   rI   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   r>   rq   r   r@   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 )Nru   )CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP)r   r   r>   rU   r{   s    r%   rC   zgroup_operator.<locals>.valid'  s:    5Ff- H G%++		EG	Hr+   c                 :    t         j                  | |   _        ||fS r'   )r>   rq   rT   rF   s       r%   rI   zgroup_operator.<locals>.post-  s    JJdTzr+   Frk   )r   r   r   r   r(   r-   r   rM   r   r[   rL   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,r=   r@   s    r%   r   z$group_identifier_list.<locals>.match=  s    {{1==#..r+   c                 "    t        |       S )N)rv   rb   rw   r   )r!   m_roler|   r}   s    r%   rC   z$group_identifier_list.<locals>.valid@  s    5Ff77r+   c                 
    ||fS r'   rB   rF   s       r%   rI   z#group_identifier_list.<locals>.postC  rJ   r+   Trk   )r>   rU   r   r   r0   rM   r   IdentifierListr   r   r   r   Commentr   rL   )	r   r   rC   rI   rO   rP   r   r|   r}   s	         @@@r%   group_identifier_listr   6  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   r>   r   
is_newline)tks    r%   <lambda>z group_comments.<locals>.<lambda>P  s    s2+<r}}<r+   )r    F)skip_wsr   )r   r>   r   token_not_matching
token_prevr   r   r   r"   r!   eidxends        r%   group_commentsr   K  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 )Nra   r   r	   )	r   r   Wherer   r   _groupable_tokensr   token_indexr   r   s        r%   group_wherer   X  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 )Nru   Trk   )rv   rw   r    )r   r-   r   r0   rM   r   r   r   r>   Numberr   r   r   )r   I_ALIASr"   r!   rH   r   s         r%   group_aliasedr   i  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TABLErZ   r   r   )r   rr   upperr   r>   rx   r   r   r   r-   r   r   r   )r   
has_create	has_tablehas_as	tmp_tokenr"   r!   rH   r   over_idxoverr   s               r%   group_functionsr   v  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   ru   r   N)
r   r>   rU   Orderr   r   r   rM   r   r   r   r"   r!   rG   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)rv   Trk   )rv   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VALUESra   r   Trk   )	r   r>   rU   r   r   r-   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*   r.   r1   r4   r7   r:   r   r   r   r   r   r   r   rQ   r^   rm   r   r   r   r   r   r   r   r   )stmtfuncs     r%   groupr     sl     	;> 	T
?@ Kr+   c                      yr   rB   r   s    r%   r   r         r+   c                      yr   rB   r   s    r%   r   r     r   r+   NTc	                    t         
|t         kD  ryt        t        | j                        t        kD  ry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   )NNTr	   rk   )r
   r   r   r   r   r   r   r   r   rL   r   r   )r   r   r   rO   rP   rI   rl   r   r   r   rG   r   r   r    r!   r"   rH   r   from_idxto_idxgrps                        r%   rL   rL     s-    %%2D*D &u||22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   )5sqlparser   r   r>   sqlparse.utilsr   r   r
   r   r   IntegerFloatr   ry   r   rz   r   rx   Placeholderr   r   r*   r.   r1   r4   r7   r:   rQ   r^   rm   r   r   r   r   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rB   r+   r%   <module>r     s      '  
  xx))188>>:HHahhooqxx7
&&!&&$$	%*0Z/,%#$&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+   