U
    5i                     @   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	   F/tmp/pip-unpacked-wheel-uuk014bl/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rd| _dS |d	kr|  jd7  _d| _	| jrdS dS | j	r|t jks|t j
kr|d
krt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rtd| jd | _d| _| j	dkr| jdkrd| _q|t jkr| d dkrd| _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   