U
    I+|j  ã                   @   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	   újc:\users\snmko\desktop\web_content\django_cbt\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   s`  |t jkr|dkrdS |t jkr,|dkr,dS |t jkr:dS | ¡ }|t jjkrb| d¡rbd| _dS |dkr„| jr„| jdkr„d| _dS |d	kr®|  jd7  _d| _	| jrªdS dS | j	rì|t jksÈ|t j
krì|d
krìtd| jd ƒ| _d| _	dS |dk�r| j�std| jd ƒ| _nd| _dS |dk�rN| j�rN| jdk�rN|dk�rJd| _dS |dk�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 WHILE)ÚTÚPunctuationÚKeywordÚupperZDDLÚ
startswithr   r   r   r   ÚNameÚmaxr   )r   ÚttypeÚvalueZunifiedr	   r	   r
   Ú_change_splitlevel   sZ    
ÿÿþ

ÿÿ

z$StatementSplitter._change_splitlevelc                 c   sD  t jt jjf}|D � ]þ\}}| jr@||kr@t | j¡V  |  ¡  |  j	|  
||¡7  _	| j t ||¡¡ |t jkr¶|dkr¶| jr”td| jd ƒ| _d| _| j	dkr´| jdkr´d| _q|t jkrØ| ¡ d dkrØd| _q|t jt jt jjt jjfkr|t jk�r| ¡ dksd| _q| j�r@tdd	„ | jD ƒƒ�s@t | j¡V  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_   s2    	ÿþ
þ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   