File: //lib/python3/dist-packages/libfuturize/fixes/__pycache__/fix_raise.cpython-310.pyc
o
,�], � @ sb d Z ddlmZmZ ddlmZ ddlmZmZm Z m
Z
mZmZ ddl
mZ G dd� dej�ZdS ) a� Fixer for 'raise E, V'
From Armin Ronacher's ``python-modernize``.
raise -> raise
raise E -> raise E
raise E, 5 -> raise E(5)
raise E, 5, T -> raise E(5).with_traceback(T)
raise E, None, T -> raise E.with_traceback(T)
raise (((E, E'), E''), E'''), 5 -> raise E(5)
raise "foo", V, T -> warns about string exceptions
raise E, (V1, V2) -> raise E(V1, V2)
raise E, (V1, V2), T -> raise E(V1, V2).with_traceback(T)
CAVEATS:
1) "raise E, V, T" cannot be translated safely in general. If V
is not a tuple or a (number, string, None) literal, then:
raise E, V, T -> from future.utils import raise_
raise_(E, V, T)
� )�pytree�
fixer_base)�token)�Name�Call�is_tuple�Comma�Attr�ArgList)�touch_import_topc @ s e Zd ZdZdZdd� ZdS )�FixRaiseTzB
raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] >
c
C s� | j }|d �� }|jtjkrd}| �||� d S t|�r2t|�r/|jd jd �� }t|�s!d|_d|v r=|d �� }nd }d|v r�|d �� }t|�r_dd � |jdd
� D �}t ||�}n@|jtj
tjfv rrd|_t ||g�}n-|jtjkr~|jdkr~n!t
d
d|� d|_|t� |g}|d ur�|t� |g7 }t td�|�S |d ur�d|_t|td��t|g�g } n|g} tj|jtd�g| |jd�S )N�excz+Python 3 does not support string exceptions� r � �tb�valc S s g | ]}|� � �qS � )�clone)�.0�cr r �=/usr/lib/python3/dist-packages/libfuturize/fixes/fix_raise.py�
<listcomp>I s z&FixRaise.transform.<locals>.<listcomp>���� �Nonezfuture.utils�raise_�with_traceback�raise)�prefix)�symsr �typer �STRING�cannot_convertr �childrenr r �NUMBER�NAME�valuer r r r r
r �Node�
raise_stmt)
�self�node�resultsr r
�msgr r �args�exc_listr r r � transform* sL � �zFixRaise.transformN)�__name__�
__module__�__qualname__�
BM_compatible�PATTERNr/ r r r r r # s r N)�__doc__�lib2to3r r �
lib2to3.pgen2r �lib2to3.fixer_utilr r r r r r
�libfuturize.fixer_utilr �BaseFixr r r r r �<module> s