a XC?h �@sbddlmZddlmZddlmZddlmZmZmZm Z m Z m Z dd�Z Gdd�dej �Zd S) �)�pytree)�token)� fixer_base)�Assign�Attr�Name�is_tuple�is_list�symsccsDt|�D]6\}}|jtjkr|jdjdkr|||dfVqdS)N��exceptr)� enumerate�typer � except_clause�children�value)Znodes�i�n�r�=/opt/alt/python39/lib64/python3.9/lib2to3/fixes/fix_except.py� find_exceptss rc@seZdZdZdZdd�ZdS)� FixExceptTa1 try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > cCsx|j}dd�|dD�}dd�|dD�}t|�D�]\}}t|j�dkr2|jdd�\}} } | �tdd d ��| jtjk�r8t|� �d d �} | � �} d | _ | �| �| � �} |j} t | �D]\}}t |tj�r�q�q�t| �s�t| �r�t| t| td ���}n t| | �}t| d|��D]}|�d |��q|�||�q2| j d kr2d | _ q2dd�|jdd�D�||}t�|j|�S)NcSsg|] }|���qSr��clone)�.0rrrr� 2�z'FixExcept.transform..�tailcSsg|] }|���qSrr)rZchrrrr4rZcleanup���as� )�prefix��argsr cSsg|] }|���qSrr)r�crrrr\r�)r r�lenr�replacerrr�NAME�new_namerr"r � isinstancerZNoderr rr�reversedZ insert_child)�selfZnodeZresultsr rZ try_cleanuprZe_suite�EZcomma�NZnew_N�targetZ suite_stmtsrZstmtZassign�childrrrr� transform/s6     zFixExcept.transformN)�__name__� __module__� __qualname__Z BM_compatibleZPATTERNr2rrrrr$srN)r#rZpgen2rrZ fixer_utilrrrrr r rZBaseFixrrrrr�s