3
+��hK � @ sB d Z ddlmZ ddlmZmZmZmZmZ G dd� dej �Z
dS )z;Fixer for 'raise E(V).with_traceback(T)' -> 'raise E, V, T'� )�
fixer_base)�Comma�Node�Leaf�token�symsc @ s e Zd ZdZdd� ZdS )�FixRaisez�
raise_stmt< 'raise' (power< name=any [trailer< '(' val=any* ')' >]
[trailer< '.' 'with_traceback' > trailer< '(' trc=any ')' >] > | any) ['from' chain=any] >c C s� |j d�|j d�|j d� }}}|j d�}|d k rR| j|d� |jj� |j� |d k r�|rf|d n
ttjd�}d |_|_ttjd �|j� t � |j� t � |j� g}t
tj|�}|j
|� d S )
N�name�val�trc�chainz8explicit exception chaining is not supported in Python 2r �None� �raise)�get�warningZprev_sibling�remover r �NAME�prefix�cloner r r �
raise_stmt�replace) �self�node�resultsr r
r r Zkidsr � r �D/root/tmp/pip-build-yeh9mt8d/future/libpasteurize/fixes/fix_raise.py� transform s "
zFixRaise.transformN)�__name__�
__module__�__qualname__ZPATTERNr r r r r r s r N)�__doc__Zlib2to3r Zlib2to3.fixer_utilr r r r r ZBaseFixr r r r r �<module> s |