a
´i
ã @ sf d Z ddlmZ ddlmZ ddlmZ ddlmZmZm Z m
Z
mZmZ dd„ Z
G dd „ d ejƒZd
S )aª Fixer for except statements with named exceptions.
The following cases will be converted:
- "except E, T:" where T is a name:
except E as T:
- "except E, T:" where T is not a name, tuple or list:
except E as t:
T = t
This is done because the target of an "except" clause must be a
name.
- "except E, T:" where T is a tuple or list literal:
except E as t:
T = t.args
é )Úpytree)Útoken)Ú
fixer_base)ÚAssignÚAttrÚNameÚis_tupleÚis_listÚsymsc c sD t | ƒD ]6\}}|jtjkr|jd jdkr|| |d fV qd S )Né Úexceptr )Ú enumerateÚtyper
Ú
except_clauseÚchildrenÚvalue)ZnodesÚiÚn© r ú0/usr/lib64/python3.9/lib2to3/fixes/fix_except.pyÚfind_excepts s r c @ s e Zd ZdZdZdd„ 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)]) >
c C sx | j }dd„ |d D ƒ}dd„ |d D ƒ}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|
jdkr2d |
_q2dd„ |jd d… D ƒ| | }t |j|¡S )Nc S s g | ]}| ¡ ‘qS r ©Úclone)Ú.0r r r r Ú