
    j4                     0    S SK Jr  S SK Jr   " S S5      rg)    )sql)tokensc                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)StatementSplitter   z1Filter that split stream at individual statementsc                 $    U R                  5         g N)_resetselfs    Z/var/www/html/KUNJ/venv/lib/python3.13/site-packages/sqlparse/engine/statement_splitter.py__init__StatementSplitter.__init__   s        c                 t    / U l         SU l        SU l        SU l        SU l        SU l        / U l        SU l        g)z/Set the filter attributes to its default valuesr   NF)_block_stack_parenthesis_level_unconfirmed_start
_is_create_seen_begin
consume_wsr   levelr   s    r   r
   StatementSplitter._reset   s>    "#"& 
r   c                 J   US:X  a  SU l         gUS:X  a  SU l         gUS;   a_  U R                   S;   a-  U R                  R                  U R                   5        SU l         gUS:X  a  U R                  R                  S5        gUS	;   a  U R                  R                  U5        gg)
z:Check for nested loop or control structures inside a blockFORr   WHILE)LOOPDO)r   r   N   r   )IFCASE)r   r   appendr   unifieds     r   _handle_nested_block&StatementSplitter._handle_nested_block   s    e&+D#g&-D#n$&&*::!!(()@)@A*.'& !!((0n$$$W-r   c                 $   US:X  a@  U R                   (       a.  U R                   S   S:X  a  U R                   R                  5         ggUS:X  a@  U R                   (       a.  U R                   S   S:X  a  U R                   R                  5         ggUS:X  a@  U R                   (       a.  U R                   S   S:X  a  U R                   R                  5         ggUS:X  a@  U R                   (       a.  U R                   S   S	;   a  U R                   R                  5         ggUS
:X  a@  U R                   (       a.  U R                   S   S:X  a  U R                   R                  5         ggUS:X  a,  U R                   (       a  U R                   R                  5         gg)z"Handle closing keywords for blockszEND IFr    zEND FORr   z	END WHILEr   zEND LOOP)r   r   r   zEND CASEr!   ENDr   )r   popr#   s     r   _handle_closing_keyword)StatementSplitter._handle_closing_keyword3   sh   h  T%6%6r%:d%B!!%%', + 	!  T%6%6r%:e%C!!%%'$ # #  T%6%6r%:g%E!!%%'  
"!!%%b)-EE!!%%'  
"  T%6%6r%:f%D!!%%'
 	   !!%%'r   c                    U[         R                  L ae  US:X  a_  SU l        U R                  (       aF  SU l        U R                  (       a.  U R                  S   S:X  a  U R                  R                  5         ggU[         R                  L a  US:X  a  U =R                  S-  sl        gU[         R                  L a%  US	:X  a  [        SU R                  S-
  5      U l        gU[         R                  ;  a  gUR                  5       nU[         R                  R                  L a  UR                  S
5      (       a  SU l        gUS:X  a>  U R                  (       a-  U R                  (       d  U R                  R                  S5        gUS:X  a}  SU l        U R                  (       aI  U R                  S   S:X  a6  U R                  R                  5         U R                  R                  S5        gU R                  R                  S5        gU R                  (       as  U[         R                  L d  U[         R                  L aM  US;   aG  SU l        U R                  (       a.  U R                  S   S:X  a  U R                  R                  5         ggSU R                  ;   a  U R                  U5      nUb  U$ U R!                  U5      $ )z<Get the new split level (increase, decrease or remain equal);NFr(   BEGINr   (r   )CREATETDECLARE)TRANSACTIONWORKTRANDISTRIBUTEDDEFERRED	IMMEDIATE	EXCLUSIVE)TPunctuationr   r   r   r*   r   maxKeywordupperDDL
startswithr   r"   Namer%   r+   )r   ttypevaluer$   ress        r   _change_splitlevel$StatementSplitter._change_splitlevelP   sE   
 AMM!esl&*D##( $$):):2)>')I%%))+ AMM!esl##q(#amm#&)!T-D-Dq-H&ID#!))# ++- AIIMM!g&8&8&B&B"DO iDOOD<M<M$$Y/ g#D  T%6%6r%:i%G!!%%'!!((1!!((1 !))#u 6 6  %D  T%6%6r%:g%E!!%%' d'''++G4C
 ++G44r   c              #   r  #    [         R                  [         R                  R                  4nU GH  u  p4U R                  (       a7  X2;  a2  [
        R                  " U R                  5      v   U R                  5         U =R                  U R                  X45      -  sl	        U R                  R                  [
        R                  " X45      5        U[         R                  L a:  US:X  a4  SU l        U R                  S::  a  SU R                  ;  a	  SU l        M  M  M  U[         R                   L a!  UR#                  5       S   S:X  a
  SU l        GM"  U[         R                  [         R$                  [         R                  R                  [         R                  R&                  4;  d  GM{  U[         R                   L a  UR)                  5       S:X  a  GM  SU l        GM     U R                  (       aE  [+        S U R                   5       5      (       d#  [
        R                  " U R                  5      v   ggg7f)	zProcess the streamr.   Fr   r/   TGOc              3   8   #    U  H  oR                   v   M     g 7fr	   )is_whitespace).0ts     r   	<genexpr>,StatementSplitter.process.<locals>.<genexpr>   s     "HKq??Ks   N)r;   
WhitespaceCommentSingler   r   	Statementr   r
   r   rF   r"   Tokenr<   r   r   r>   splitNewline	Multiliner?   all)r   stream	EOS_TTYPErC   rD   s        r   processStatementSplitter.process   s    LL!))"2"22	 #LE
 5#9mmDKK00  JJ$11%??J KKsyy67 %%3,#( ::?wd6G6G'G&*DO (H?!))#a(8D(@"&aii9I9I !		 3 3 5 5 AII-%++-72J $) I #N ;;s"HDKK"HHH--,,  I;s   F#H7*%H7A#H7)r   r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r
   r%   r+   rF   r[   __static_attributes__ r   r   r   r      s%    ;
*:E5N--r   r   N)sqlparser   r   r;   r   rc   r   r   <module>re      s      x- x-r   