509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \  ã               @   sf   d Z ddlmZ ddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZ dd„ ZG dd	„ d	ejƒZd
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   sH   xBt | ƒD ]6\}}|jtjkr
|jd jdkr
|| |d  fV  q
W d S )Né    Úexceptr   )Ú	enumerateÚtyper
   Úexcept_clauseÚchildrenÚvalue)ZnodesÚiÚn© r   ú0/usr/lib64/python3.6/lib2to3/fixes/fix_except.pyÚfind_excepts   s    r   c               @   s   e Zd ZdZdZdd„ ZdS )Ú	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   s†  | j }dd„ |d D ƒ}dd„ |d D ƒ}�x*t|ƒD �]\}}t|jƒdkr6|jdd… \}}	}
|	jtdd	d
�ƒ |
jtjk�rDt| j	ƒ d	d
�}|
j
ƒ }d|_|
j|ƒ |j
ƒ }|j}x"t|ƒD ]\}}t|tjƒrÂP qÂW t|
ƒsît|
ƒ�rt|t|tdƒƒƒ}n
t||ƒ}x&t|d |… ƒD ]}|jd|ƒ �q W |j||ƒ q6|
jdkr6d	|
_q6W dd„ |jd d… D ƒ| | }tj|j|ƒS )Nc             S   s   g | ]}|j ƒ ‘qS r   )Úclone)Ú.0r   r   r   r   ú
<listcomp>2   s    z'FixExcept.transform.<locals>.<listcomp>Útailc             S   s   g | ]}|j ƒ ‘qS r   )r   )r   Zchr   r   r   r   4   s    Zcleanupé   é   Úasú )ÚprefixÚ Úargsr   c             S   s   g | ]}|j ƒ ‘qS r   )r   )r   Úcr   r   r   r   \   s    é   )r
   r   Úlenr   Úreplacer   r   r   ÚNAMEÚnew_namer   r    r   Ú
isinstancer   ZNoder   r	   r   r   ÚreversedZinsert_child)ÚselfZnodeZresultsr
   r   Ztry_cleanupr   Ze_suiteÚEZcommaÚNZnew_NÚtargetZsuite_stmtsr   ZstmtZassignZchildr   r   r   r   Ú	transform/   s6    



 zFixExcept.transformN)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr/   r   r   r   r   r   $   s   r   N)Ú__doc__r!   r   Zpgen2r   r   Z
fixer_utilr   r   r   r   r	   r
   r   ZBaseFixr   r   r   r   r   Ú<module>   s    