
    z%i                     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y)	   )pytree)token)
fixer_base)AssignAttrNameis_tupleis_listsymsc              #      K   t        |       D ]L  \  }}|j                  t        j                  k(  s$|j                  d   j
                  dk(  sA|| |dz      f N y w)N    exceptr   )	enumeratetyper   except_clausechildrenvalue)nodesins      L/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/lib2to3/fixes/fix_except.pyfind_exceptsr      sX     %  &166T'''zz!}""h.%!*o%&s   /AAAc                       e Zd ZdZdZd Zy)	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                   }|d   D cg c]  }|j                          }}|d   D cg c]  }|j                          }}t        |      D ]  \  }}	t        |j                        dk(  s |j                  dd \  }
}}|j                  t        dd             |j                  t        j                  k7  r	t        | j                         d      }|j                         }d|_        |j                  |       |j                         }|	j                  }t        |      D ]!  \  }}t        |t        j                        s! n t!        |      st#        |      r t%        |t'        |t        d	                  }nt%        ||      }t)        |d        D ]  }|	j+                  d
|        |	j+                  ||       v|j                  dk(  sd|_         |j                  d d D cg c]  }|j                          c}|z   |z   }t        j                  |j                  |      S c c}w c c}w c c}w )Ntailcleanup      as )prefix argsr      )r   cloner   lenr   replacer   r   r   NAMEnew_namer"   r   
isinstancer   Noder	   r
   r   r   reversedinsert_child)selfnoderesultsr   r   r   chtry_cleanupr   e_suiteEcommaNnew_Ntargetsuite_stmtsr   stmtassignchildcr   s                         r   	transformzFixExcept.transform/   s   yy#*6?3a	33,3I,>?brxxz??&2;&? $	#"M7=))*a/ - 6 6q ;E1d44566UZZ' =EWWYF$&FMIIe$!KKME #*"2"2K#,[#9 "4%dFKK8!"  {gaj!'UDL0I!J!'!6 "*+bq/!: 7,,Q67((F3XX^  #AHI$	#N (,}}Ra'89!AGGI9KG$N{{499h//W 4?P :s   H:H?:IN)__name__
__module____qualname__BM_compatiblePATTERNr?        r   r   r   $   s    MG.0rF   r   N)r#   r   pgen2r   r   
fixer_utilr   r   r   r	   r
   r   r   BaseFixr   rE   rF   r   <module>rJ      s2   0    D D&90
"" 90rF   