Your IP : 18.119.123.10


Current Path : /opt/alt/python310/lib64/python3.10/lib2to3/fixes/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/lib2to3/fixes/__pycache__/fix_except.cpython-310.pyc

o

6��f
�@sfdZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZdd�Z
Gdd	�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�symsccsF�t|�D]\}}|jtjkr |jdjdkr |||dfVqdS)N��exceptr)�	enumerate�typer
�
except_clause�children�value)Znodes�i�n�r�?/opt/alt/python310/lib64/python3.10/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)]) >
    cCsr|j}dd�|dD�}dd�|dD�}t|�D]�\}}t|j�dkr�|jdd�\}}	}
|	�tdd	d
��|
jtjkr�t|�	�d	d
�}|
�
�}d|_|
�|�|�
�}|j}
t|
�D]\}}t
|tj�rhnq\t|
�sqt|
�r|t|t|td���}nt||�}t|
d|��D]}|�d
|�q�|�||�q|
jdkr�d	|
_qdd�|jdd�D�||}t�|j|�S)NcS�g|]}|���qSr��clone)�.0rrrr�
<listcomp>2�z'FixExcept.transform.<locals>.<listcomp>�tailcSrrr)rZchrrrr4rZcleanup���as� )�prefix��argsrcSrrr)r�crrrr\r�)r
r�lenr�replacerrr�NAME�new_namerr#r
�
isinstancerZNoderr	rr�reversedZinsert_child)�selfZnodeZresultsr
rZtry_cleanuprZe_suite�EZcomma�NZnew_N�targetZsuite_stmtsrZstmtZassign�childrrrr�	transform/s:
�

� zFixExcept.transformN)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr3rrrrr$srN)�__doc__r$rZpgen2rrZ
fixer_utilrrrrr	r
rZBaseFixrrrrr�<module>s 

?>