
    ZQd                     z    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 Z G 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              #      K   t          |           D ]?\  }}|j        t          j        k    r%|j        d         j        dk    r|| |dz            fV  @d S )N    exceptr   )	enumeratetyper   except_clausechildrenvalue)nodesins      //usr/lib/python3.11/lib2to3/fixes/fix_except.pyfind_exceptsr      sh      %   & &16T'''z!}"h..%!*o%%%& &    c                       e Zd ZdZdZ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           
      j   | j         }d |d         D             }d |d         D             }t          |          D ]\  }}t          |j                  dk    r|j        dd         \  }}	}
|	                    t          dd	                     |
j        t          j        k    rAt          | 	                                d	          }|

                                }d
|_        |
                    |           |
                                }|j        }t          |          D ]!\  }}t          |t          j                  r n"t!          |
          st#          |
          r,t%          |t'          |t          d                              }nt%          ||          }t)          |d |                   D ]}|                    d|           |                    ||           |
j        d
k    rd|
_        d |j        d d         D             |z   |z   }t          j        |j        |          S )Nc                 6    g | ]}|                                 S  clone).0r   s     r   
<listcomp>z'FixExcept.transform.<locals>.<listcomp>2   s     333a		333r   tailc                 6    g | ]}|                                 S r   r   )r!   chs     r   r"   z'FixExcept.transform.<locals>.<listcomp>4   s     ???brxxzz???r   cleanup      as )prefix argsr   c                 6    g | ]}|                                 S r   r   )r!   cs     r   r"   z'FixExcept.transform.<locals>.<listcomp>\   s     999!AGGII999r      )r   r   lenr   replacer   r   r   NAMEnew_namer    r+   r   
isinstancer   Noder	   r
   r   r   reversedinsert_child)selfnoderesultsr   r#   try_cleanupr   e_suiteEcommaNnew_Ntargetsuite_stmtsr   stmtassignchildr   s                      r   	transformzFixExcept.transform/   s2   y3376?333??GI,>???&2;&?&? $	# $	#"M7=)**a// - 6qs ;E1d44445556UZ'' ===EWWYYF$&FMIIe$$$!KKMME #*"2K#,[#9#9 " "4%dFK88 "!E"
  {{ 7gajj 7!'UDLL0I0I!J!J!'!6!6 "*+bqb/!:!: 7 7,,Q6666((F3333X^^  #AH :9t}RaR'8999KG$N{49h///r   N)__name__
__module____qualname__BM_compatiblePATTERNrG   r   r   r   r   r   $   s/        MG.0 .0 .0 .0 .0r   r   N)__doc__r,   r   pgen2r   r   
fixer_utilr   r   r   r	   r
   r   r   BaseFixr   r   r   r   <module>rQ      s    0                   D D D D D D D D D D D D D D D D& & &90 90 90 90 90
" 90 90 90 90 90r   