
    h,                        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 eej<                        d        Zd Z d Z!d Z" eejF                        d        Z$ eejJ                        d        Z& e       d        Z' eejP                        d        Z)d Z* e       d        Z+d Z,d d dddfdZ-y)     )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	            [/var/www/html/ranktracker/api/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   s    D  r$   c                 
    ||fS r    r;   r   pidxr   nidxs       r   postzgroup_typecasts.<locals>.postS       Tzr$   _groupr   
Identifierr   r   r<   rA   
valid_prev
valid_nexts         r   group_typecastsrI   L   s3    0! $#J
5#..%ZFr$   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!   rE   r7   NameStringSymbolr   r   sqlclsttypess      r   rG   z group_period.<locals>.valid_prev^   s;    ##S^^3(5Ff--r$   c                      yNTr;   r9   s    r   rH   z group_period.<locals>.valid_nextc   s    r$   c                     t         j                  t         j                  f}t        j                  t        j
                  j                  t        j                  f}|| |   nd }t        |||      }|r||fS ||fS rO   )	r   r!   Functionr7   rS   rT   rU   Wildcardr   )r   r?   r   r@   rW   rX   next_rH   s           r   rA   zgroup_period.<locals>.postg   se    ##S\\1!**4#/dT&F3
)d|;d|;r$   rC   r   r   rG   rH   rA   s        r   group_periodr`   Z   s.    /.
< 5#..%ZFr$   c                 X    d }d }d }d }t        | t        j                  ||||       y )Nc                 <    | j                   xr | j                  dk(  S )NAS)
is_keyword
normalizedr9   s    r   r   zgroup_as.<locals>.matcht   s    <E$4$4$<<r$   c                 >    | j                   dk(  xs | j                   S )NNULL)re   rd   r9   s    r   rG   zgroup_as.<locals>.valid_prevw   s!    6)A1A1A-AAr$   c                 j    t         j                  t         j                  f}t        | |       xr | d uS NrR   )r7   DMLDDLr   )r   rX   s     r   rH   zgroup_as.<locals>.valid_nextz   s-    u''=E,==r$   c                 
    ||fS r    r;   r>   s       r   rA   zgroup_as.<locals>.post~   rB   r$   rC   r_   s        r   group_asrn   s   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    )ttyper7   Keywordr9   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;mr   )r7   r8   token_next_by)r   r?   r   r@   m_semicolonsnidx_s          r   rA   zgroup_assignment.<locals>.post   s<    mmS(&&$&?q}Tzr$   )rD   r   rq   rF   s         r   group_assignmentr}      s4    /D $#J
5#..%ZFr$   c           	         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    )rs   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)rR   rQ   Trg   F)r   rd   re   rV   s    r   r<   zgroup_comparison.<locals>.valid   s0    u&)u''E,<,<,Fr$   c                 
    ||fS r    r;   r>   s       r   rA   zgroup_comparison.<locals>.post   rB   r$   Fextend)
r   r&   r\   rE   	OperationT_NUMERICALT_STRINGT_NAMErD   r   r   r   r<   rA   rG   rH   rW   rX   s         @@r   group_comparisonr      si    oos||S^^mm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 )Nrj   rR   r   )r7   rT   rU   rS   ry   r   r   rE   )r   rX   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 rO   r   rV   s    r   rG   z group_arrays.<locals>.valid_prev       5Ff--r$   c                      yrZ   r;   r9   s    r   rH   z group_arrays.<locals>.valid_next   s    r$   c                 
    ||fS r    r;   r>   s       r   rA   zgroup_arrays.<locals>.post   rB   r$   TF)r   r   )	r   r!   rE   r\   r7   rS   rT   rU   rD   )r   r   rG   rH   rA   rW   rX   s        @@r   group_arraysr      sg    =FVVQXX__$F5. 5#..%z4eEr$   c           	      *   t         t        z   t        z   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 ri   )r   r7   r   r]   r9   s    r   r   zgroup_operator.<locals>.match   s    5QZZ455r$   c                      t        |       S rO   r   rV   s    r   r<   zgroup_operator.<locals>.valid   r   r$   c                 :    t         j                  | |   _        ||fS r    )r7   r   rs   r>   s       r   rA   zgroup_operator.<locals>.post   s    JJdTzr$   Fr   )
r   r   r   r   r!   r&   r\   rE   r   rD   r   s         @@r   group_operatorr      sq    8#f,F  #//3<<nncmm-F6. $#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   rM   r$   c                 "    t        |       S )N)rQ   rx   rR   r   )r   m_rolerW   rX   s    r   r<   z$group_identifier_list.<locals>.valid   s    5Ff77r$   c                 
    ||fS r    r;   r>   s       r   rA   z#group_identifier_list.<locals>.post   rB   r$   Tr   )r7   rt   r   r\   r)   rE   r   IdentifierListr   r   r   r   Commentr]   rD   )	r   r   r<   rA   rG   rH   r   rW   rX   s	         @@@r   group_identifier_listr      s    YY((FllCHHcnncnn  #--1FH$v-yy!))QZZ01F/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 )Nrj   c                 T    t        | t        j                        xs | j                  S ri   )r   r7   r   r
   )tks    r   <lambda>z group_comments.<locals>.<lambda>   s    s2+?r/?/? r$   )r   F)skip_wsr   )ry   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 )N)rx   rw      )	ry   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 )NrP   Tr   )rQ   rR   r   )r   r&   r\   r)   rE   r   r   ry   r7   Number
token_nextr   r   )r   I_ALIASr   r   r@   r^   s         r   group_aliasedr     s    chh}}cnn.G %%188%<KD%
&&t,eeS^^,s~~tT$G))GqxxT)Je	 r$   c                    d}d}| j                   D ]%  }|j                  dk(  rd}|j                  dk(  s$d}' |r|ry | j                  t        j                        \  }}|rw| j                  |      \  }}t        |t        j                        r!| j                  t        j                  ||       | j                  t        j                  |      \  }}|rvy y )NFCREATETTABLErj   r   )r   valuery   r7   rS   r   r   r   r&   r   r\   )r   
has_create	has_table	tmp_tokenr   r   r@   r^   s           r   group_functionsr     s    JI\\ 	??h&J??g%I	
 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 tokenrj   rP   r   N)
ry   r7   rt   Orderr   r   r   rE   r   r   r   r   r   r?   prev_s        r   group_orderr   3  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)rQ   Tr   )rQ   r   )ry   r   r   r   r   	TokenListr   r   s        r   align_commentsr   >  s    %%%4KD%
&&t,eeS]]+s}}dDFD))CKKT)Be r$   c                     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   rI   r   r   rn   r   r}   r   r   )stmtfuncs     r   groupr   I  sd     	3 6 	T
78 Kr$   c                      yrZ   r;   rj   s    r   r   r   j      r$   c                      yrZ   r;   rj   s    r   r   r   k  r   r$   NTc           
         d}d\  }	}
t        t        |             D ]  \  }}||z
  }|j                  r|r)|j                  rt	        ||      st        |||||||        ||      rV| j                  |      \  }}|
r@ ||
      r8 ||      r0 || |	||      \  }}| j                  ||||      }|||z
  z  }||}
}	||}
}	 y)zCGroups together tokens that are joined by a middle token. ie. x < yr   )NNr   N)r   r	   r
   r   r   rD   r   r   )r   r   r   rG   rH   rA   r   r   r   r?   r   r   r   r   r@   r^   from_idxto_idxgrps                      r   rD   rD   i  s     KKD%U, "
U[ u~~j.D5#uj*dFK<**40KD%E*z%/@#'tT4#@ &((hv(Nv00&eEe'"r$   ).sqlparser   r   r7   sqlparse.utilsr   r   r   IntegerFloatr   rT   SinglerU   r   rS   Placeholderr   r   r#   r'   r*   r-   r0   r3   rI   r`   rn   r}   r   rE   r   r   r   r   r   r   r   r   r   r\   r   r   r   r   rD   r;   r$   r   <module>r      s      'xx))188>>:HHahhooqxx7
&&!&&$$	% 0F/,%#$&GG2G"G"70 	> >E(7(6* 		A 	A 	H H  		K 	K 	> >&G 	C CB %$"r$   