o
    wó·i  ã                   @   s"   d dl mZmZ G dd„ dƒZdS )é    )ÚsqlÚtokensc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚStatementSplitterz1Filter that split stream at individual statementsc                 C   s   |   ¡  d S ©N)Ú_reset©Úself© r	   úhC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\sqlparse/engine/statement_splitter.pyÚ__init__   s   zStatementSplitter.__init__c                 C   s4   d| _ d| _d| _d| _d| _d| _g | _d| _dS )z/Set the filter attributes to its default valuesFr   N)Ú_in_declareÚ_in_caseÚ
_is_createÚ_begin_depthÚ_seen_beginÚ
consume_wsr   Úlevelr   r	   r	   r
   r      s   
zStatementSplitter._resetc                 C   sT  |t ju r|dkrdS |t ju r|dkrdS |t jvrdS | ¡ }|t jju r1| d¡r1d| _dS |dkrB| jrB| jdkrBd| _dS |d	krW|  jd7  _d| _	| jrUdS dS | j	rv|t ju sd|t j
u rv|d
v rvtd| jd ƒ| _d| _	dS |dkr�| jsˆtd| jd ƒ| _dS d| _dS |dv r¢| jr¢| jdkr¢|dkr d| _dS |dv r¨dS dS )z<Get the new split level (increase, decrease or remain equal)ú(é   ú)éÿÿÿÿr   ZCREATETZDECLAREÚBEGIN)ZTRANSACTIONZWORKZTRANZDISTRIBUTEDZDEFERREDZ	IMMEDIATEZ	EXCLUSIVEFZEND)ZIFZFORZWHILEÚCASEr   )zEND IFzEND FORz	END WHILEN)ÚTÚPunctuationÚKeywordÚupperZDDLÚ
startswithr   r   r   r   ÚNameÚmaxr   )r   ÚttypeÚvalueZunifiedr	   r	   r
   Ú_change_splitlevel   s\   
ÿÿþÿÿÿz$StatementSplitter._change_splitlevelc                 c   sF  � t jt jjf}|D ]~\}}| jr ||vr t | j¡V  |  ¡  |  j	|  
||¡7  _	| j t ||¡¡ |t ju r[|dkr[| jrJtd| jd ƒ| _d| _| j	dkrZ| jdkrZd| _q
|t ju rl| ¡ d dkrld| _q
|t jt jt jjt jjfvrˆ|t ju r…| ¡ dksˆd| _q
| jrŸtdd	„ | jD ƒƒs¡t | j¡V  d
S d
S d
S )zProcess the streamú;r   r   FTZGOr   c                 s   s   � | ]}|j V  qd S r   )Zis_whitespace)Ú.0Útr	   r	   r
   Ú	<genexpr>�   s   € z,StatementSplitter.process.<locals>.<genexpr>N)r   Ú
WhitespaceÚCommentÚSingler   r   Z	Statementr   r   r   r"   ÚappendÚTokenr   r   r   r   r   ÚsplitZNewlineZ	Multiliner   Úall)r   ÚstreamZ	EOS_TTYPEr    r!   r	   r	   r
   Úprocess_   s:   €	€ÿþ
þ€ÿzStatementSplitter.processN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r/   r	   r	   r	   r
   r      s    Br   N)Zsqlparser   r   r   r   r	   r	   r	   r
   Ú<module>   s   