U
�AT^
c @ sJ d Z ddlmZ ddlmZmZmZmZmZm Z m
Z
G dd� dej�ZdS )z�Fixer for sys.exc_{type, value, traceback}
sys.exc_type -> sys.exc_info()[0]
sys.exc_value -> sys.exc_info()[1]
sys.exc_traceback -> sys.exc_info()[2]
i )�
fixer_base)�Attr�Call�Name�Number� Subscript�Node�symsc @ s: e Zd ZdddgZdZdd�dd� eD �� Zd d
� ZdS )� FixSysExcZexc_typeZ exc_valueZ
exc_tracebackTzN
power< 'sys' trailer< dot='.' attribute=(%s) > >
z|c c s | ]}d | V qdS )z'%s'N� )Z.0Zer r �1/usr/lib64/python3.8/lib2to3/fixes/fix_sys_exc.pyZ <genexpr> s zFixSysExc.<genexpr>c C st |d d }t | j�|j��}ttd�|jd�}ttd�|�}|d j|d jd _|� t
|�� ttj
||jd�S )NZ attributei �exc_info)�prefixZsysZdoti )r r �indexZvaluer r r r ZchildrenZappendr r r Zpower)ZselfZnodeZresultsZsys_attrr
ZcallZattrr r r
� transform s zFixSysExc.transformN)Z__name__Z
__module__Z__qualname__r Z
BM_compatibleZjoinZPATTERNr r r r r
r s
�r N)
Z__doc__Z r Z
fixer_utilr r r r r r r ZBaseFixr r r r r
Z<module> s
$