
    +h6                        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 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j@                        d        Z!d Z"d Z#d Z$ eejJ                        d        Z& eejN                        d        Z( e       d        Z) eejT                        d        Z+d Z, e       d        Z-d Z.d Z/d d d d!d!fd"Z0y )#    )sql)tokens)recurseimtc                    g }d}t        t        |             D ]  \  }}||z
  }|j                  r|j                  rt	        ||      st        ||       = |j                  |j                   r|j                  |       h |j                  |j                   s	 |j                         }|}| j                  |||       |||z
  z  } y# t        $ r Y w xY w)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clsopenstidx_offsetidxtokentidxopen_idx	close_idxs	            K/var/www/html/venv/lib/python3.12/site-packages/sqlparse/engine/grouping.pyr   r      s    EKU, 0
U[  >>*UC"8 E3'5;;

#LLU[[#++& 99;
 IsHi89x//K90,   s   C	CCc                 8    t        | t        j                         y N)r   r   SquareBracketsr   s    r   group_bracketsr#   4   s    E3--.    c                 8    t        | t        j                         y r    )r   r   Parenthesisr"   s    r   group_parenthesisr'   8   s    E3??+r$   c                 8    t        | t        j                         y r    )r   r   Caser"   s    r   
group_caser*   <   s    E388$r$   c                 8    t        | t        j                         y r    )r   r   Ifr"   s    r   group_ifr-   @   s    E366"r$   c                 8    t        | t        j                         y r    )r   r   Forr"   s    r   	group_forr0   D   s    E377#r$   c                 8    t        | t        j                         y r    )r   r   Beginr"   s    r   group_beginr3   H   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>.matchM   s    {{1==$//r$   c                 
    | d uS r     r9   s    r   validzgroup_typecasts.<locals>.validP       D  r$   c                 
    ||fS r    r;   r   pidxr   nidxs       r   postzgroup_typecasts.<locals>.postS       Tzr$   _groupr   
Identifierr   r   r<   rB   
valid_prev
valid_nexts         r   group_typecastsrJ   L   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    )ttyper7   KeywordTZCastr9   s    r   r   zgroup_tzcasts.<locals>.match[   s    {{aii....r$   c                 
    | d uS r    r;   r9   s    r   rH   z!group_tzcasts.<locals>.valid_prev^   r=   r$   c                     | d uxrW | j                   xsI | j                  t        j                  d      xs'  | j                  t        j
                  j                   S NAS)r
   r   r7   rN   r   TypedLiteralr   r9   s    r   rI   z!group_tzcasts.<locals>.valid_nexta   sS    D  
 6{{199d+6u{{C,,445	
r$   c                 
    ||fS r    r;   r?   s       r   rB   zgroup_tzcasts.<locals>.posth   rC   r$   rD   r   r   rH   rI   rB   s        r   group_tzcastsrW   Z   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   rT   r   r9   s    r   r   z"group_typed_literal.<locals>.matcht   s    5C,,3344r$   c                 6    t        | t        j                        S r    )r   r   rT   r9   s    r   match_to_extendz,group_typed_literal.<locals>.match_to_extendw   s    %!1!122r$   c                 
    | d uS r    r;   r9   s    r   rH   z'group_typed_literal.<locals>.valid_prevz   r=   r$   c                 \    | d uxr'  | j                   t        j                  j                   S r    )r   r   rT   r   r9   s    r   rI   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   rT   M_EXTENDr9   s    r   valid_finalz(group_typed_literal.<locals>.valid_final   s)    D L[U[[#2B2B2K2K%LLr$   c                 
    ||fS r    r;   r?   s       r   rB   z!group_typed_literal.<locals>.post   rC   r$   FextendT)rE   r   rT   )r   r   r]   rH   rI   rb   rB   s          r   group_typed_literalrf   n   s^    53!LM 5#""E:z
5#""OZr$   c                 X    d }d }d }d }t        | t        j                  ||||       y )Nc                 B    | j                  t        j                  d      S )N.r6   r9   s    r   r   zgroup_period.<locals>.match       {{1==#..r$   c                     t         j                  t         j                  f}t        j                  t        j
                  j                  f}t        | ||      S Nit)r   r!   rF   r7   NameStringSymbolr   r   sqlclsttypess      r   rH   z group_period.<locals>.valid_prev   s;    ##S^^3(5Ff--r$   c                      yNTr;   r9   s    r   rI   z group_period.<locals>.valid_next   s    r$   c                     t         j                  t         j                  f}t        j                  t        j
                  j                  t        j                  f}|| |   nd }t        |||      }|r||fS ||fS rl   )	r   r!   Functionr7   rp   rq   rr   Wildcardr   )r   r@   r   rA   rt   ru   next_rI   s           r   rB   zgroup_period.<locals>.post   se    ##S\\1!**4#/dT&F3
)d|;d|;r$   rD   rV   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 rR   )
is_keyword
normalizedr9   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   r9   s    r   rH   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ro   )r7   DMLDDLCTEr   )r   ru   s     r   rI   zgroup_as.<locals>.valid_next   s4    quu$u''=E,==r$   c                 
    ||fS r    r;   r?   s       r   rB   zgroup_as.<locals>.post   rC   r$   rD   rV   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   r7   
Assignmentr9   s    r   r   zgroup_assignment.<locals>.match   s    {{1<<..r$   c                 F    | d uxr | j                   t        j                  vS r    )rM   r7   rN   r9   s    r   r<   zgroup_assignment.<locals>.valid   s    D CU[[%CCr$   c                 f    t         j                  df}| j                  ||      \  }}|xs |}||fS )N;r[   r   )r7   r8   token_next_by)r   r@   r   rA   m_semicolonsnidx_s          r   rB   zgroup_assignment.<locals>.post   s<    mmS(&&$&?q}Tzr$   )rE   r   r   rG   s         r   group_assignmentr      s4    /D $#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    )rM   r7   Operator
Comparisonr9   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)ro   rn   Tr   F)r   r   r   rs   s    r   r<   zgroup_comparison.<locals>.valid   s0    u&)u''E,<,<,Fr$   c                 
    ||fS r    r;   r?   s       r   rB   zgroup_comparison.<locals>.post   rC   r$   Frd   )r   r&   ry   rF   	OperationrT   T_NUMERICALT_STRINGT_NAMErE   r   r   r   r<   rB   rH   rI   rt   ru   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   ro   r   )r7   rq   rr   rp   r   r   r   rF   )r   ru   r   r   s       r   group_identifierr      sf    hhooqvv&F%%%/KD%
3>>46))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!   r9   s    r   r   zgroup_arrays.<locals>.match   s    %!3!344r$   c                      t        |       S rl   r   rs   s    r   rH   z group_arrays.<locals>.valid_prev   s    5Ff--r$   c                      yrw   r;   r9   s    r   rI   z group_arrays.<locals>.valid_next   s    r$   c                 
    ||fS r    r;   r?   s       r   rB   zgroup_arrays.<locals>.post   rC   r$   TF)re   r   )	r   r!   rF   ry   r7   rp   rq   rr   rE   )r   r   rH   rI   rB   rt   ru   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   r7   r   rz   r9   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 )Nrm   )CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP)r   r   r7   rN   rs   s    r   r<   zgroup_operator.<locals>.valid  s:    5Ff- H G%++		EG	Hr$   c                 :    t         j                  | |   _        ||fS r    )r7   r   rM   r?   s       r   rB   zgroup_operator.<locals>.post  s    JJdTzr$   Frd   )r   r   r   r   r!   r&   ry   rF   r   rT   rE   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,r6   r9   s    r   r   z$group_identifier_list.<locals>.match  rj   r$   c                 "    t        |       S )N)rn   r[   ro   r   )r   m_rolert   ru   s    r   r<   z$group_identifier_list.<locals>.valid  s    5Ff77r$   c                 
    ||fS r    r;   r?   s       r   rB   z#group_identifier_list.<locals>.post!  rC   r$   Trd   )r7   rN   r   ry   r)   rF   r   IdentifierListr   r   r   r   Commentrz   rE   )	r   r   r<   rB   rH   rI   r   rt   ru   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   r7   r   r
   )tks    r   <lambda>z group_comments.<locals>.<lambda>.  s    s2+?r/?/? r$   )r   F)skip_wsr   )r   r7   r   token_not_matching
token_prevr   r   r   r   r   eidxends        r   group_commentsr   )  s    %%		%2KD%
,,?T - K	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 )NrZ   r      )	r   r   Wherer   r   _groupable_tokensr   token_indexr   r   s        r   group_wherer   6  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 )Nrm   Trd   )rn   ro   r   )r   r&   ry   r)   rF   r   r   r   r7   Number
token_nextr   r   )r   I_ALIASr   r   rA   r{   s         r   group_aliasedr   G  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
                        \  }}|rw| j                  |      \  }}t        |t        j                        r!| j                  t        j                  ||       | j                  t        j
                  |      \  }}|rvy y )NFCREATETTABLErS   r   r   )r   valueupperr   r7   rp   r   r   r   r&   r   ry   )	r   
has_create	has_tablehas_as	tmp_tokenr   r   rA   r{   s	            r   group_functionsr   T  s    JIF\\ 	??  "h.J??  "g-I??d"F i%%%/KD%
&&t,eeS__-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   rm   r   N)
r   r7   rN   Orderr   r   r   rF   r   r   r   r   r   r@   prev_s        r   group_orderr   k  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)rn   Trd   )rn   r   )r   r   r   r   r   	TokenListr   r   s        r   align_commentsr   v  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VALUESrZ   r   Trd   )	r   r7   rN   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.        fD ]
  } ||         | S r    )r   r#   r'   r*   r-   r0   r3   r   r   r|   r   r   r   rJ   rW   rf   r   r   r   r   r   r   r   r   )stmtfuncs     r   groupr     sm     	9 < 	T
=> Kr$   c                      yrw   r;   r   s    r   r   r         r$   c                      yrw   r;   r   s    r   r   r     r   r$   NTc           
         d}d\  }	}
t        t        |             D ]  \  }}||z
  }|dk  r|j                  r|r)|j                  rt	        ||      st        |||||||        ||      rV| j                  |      \  }}|
r@ ||
      r8 ||      r0 || |	||      \  }}| j                  ||||      }|||z
  z  }||}
}	||}
}	 y)zDGroups together tokens that are joined by a middle token. i.e. x < yr   )NNrd   N)r   r	   r
   r   r   rE   r   r   )r   r   r   rH   rI   rB   re   r   r   r@   r   r   r   r   rA   r{   from_idxto_idxgrps                      r   rE   rE     s     KKD%U, "
U[ !8u~~j.D5#uj*dFK<**40KD%E*z%/@#'tT4#@ &((hv(Nv00&eEe+"r$   )1sqlparser   r   r7   sqlparse.utilsr   r   r   IntegerFloatr   rq   Singlerr   r   rp   Placeholderr   r   r#   r'   r*   r-   r0   r3   rJ   rW   rf   r|   r   r   r   rF   r   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   rE   r;   r$   r   <module>r      s      'xx))188>>:HHahhooqxx7
&&!&&$$	% 0F/,%#$&GG(<G2G"G"70 	> >E(7.6* 		A 	A 	H H  		K 	K 	> >,G 	C C	H H %$ "r$   