o
    Š�bc
  ã                   @   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 )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]
é   )Ú
fixer_base)ÚAttrÚCallÚNameÚNumberÚ	SubscriptÚNodeÚsymsc                   @   s8   e Zd Zg d¢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   ú0/usr/lib/python3.10/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 )NÚ	attributeé    Úexc_info)ÚprefixÚsysÚdoté   )r   r   ÚindexÚvaluer   r   r   r   ÚchildrenÚappendr   r   r	   Úpower)ÚselfÚnodeÚresultsÚsys_attrr   ÚcallÚattrr   r   r   Ú	transform   s   zFixSysExc.transformN)Ú__name__Ú
__module__Ú__qualname__r   ÚBM_compatibleÚjoinÚPATTERNr&   r   r   r   r   r
      s    þr
   N)Ú__doc__Ú r   Ú
fixer_utilr   r   r   r   r   r   r	   ÚBaseFixr
   r   r   r   r   Ú<module>   s    
$