U
    A`
                     @   sJ   d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 G dd dejZdS )zFixer 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]
   )
fixer_base)AttrCallNameNumber	SubscriptNodesymsc                   @   s:   e Zd ZdddgZdZdddd eD  Zd	d
 ZdS )	FixSysExcexc_type	exc_valueexc_tracebackTzN
              power< 'sys' trailer< dot='.' attribute=(%s) > >
              |c                 c   s   | ]}d | V  qdS )z'%s'N ).0er   r   //usr/lib/python3.8/lib2to3/fixes/fix_sys_exc.py	<genexpr>   s     zFixSysExc.<genexpr>c                 C   st   |d d }t | j|j}ttd|jd}ttd|}|d j|d jd _|	t
| ttj||jdS )NZ	attribute    exc_info)prefixsysdot   )r   r   indexvaluer   r   r   r   Zchildrenappendr   r   r	   Zpower)selfZnodeZresultsZsys_attrr   Zcallattrr   r   r   	transform   s    zFixSysExc.transformN)__name__
__module____qualname__r   ZBM_compatiblejoinZPATTERNr   r   r   r   r   r
      s   
r
   N)__doc__ r   Z
fixer_utilr   r   r   r   r   r   r	   ZBaseFixr
   r   r   r   r   <module>   s   
$