
    daf	                     b    d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
  G d dej                        Zy)z7
Convert use of sys.exitfunc to use the atexit module.
    )pytree
fixer_base)NameAttrCallCommaNewlinesymsc                   :     e Zd ZdZdZdZ fdZ fdZd Z xZ	S )FixExitfuncTa  
              (
                  sys_import=import_name<'import'
                      ('sys'
                      |
                      dotted_as_names< (any ',')* 'sys' (',' any)* >
                      )
                  >
              |
                  expr_stmt<
                      power< 'sys' trailer< '.' 'exitfunc' > >
                  '=' func=any >
              )
              c                 &    t        t        | 
  |  y N)superr   __init__)selfargs	__class__s     5/root/Python-3.12.4/Lib/lib2to3/fixes/fix_exitfunc.pyr   zFixExitfunc.__init__   s    k4)40    c                 <    t         t        |   ||       d | _        y r   )r   r   
start_tree
sys_import)r   treefilenamer   s      r   r   zFixExitfunc.start_tree!   s    k4+D(;r   c           	         d|v r| j                   
|d   | _         y |d   j                         }d|_        t        j                  t
        j                  t        t        d      t        d                  }t        ||g|j                        }|j                  |       | j                   | j                  |d       y | j                   j                  d   }|j                  t
        j                  k(  r5|j                  t!                      |j                  t        dd             y | j                   j"                  }|j                  j%                  | j                         }|j"                  }	t        j                  t
        j&                  t        d	      t        dd      g      }
t        j                  t
        j(                  |
g      }|j+                  |dz   t-                      |j+                  |d
z   |       y )Nr   func atexitregisterzKCan't find sys import; Please add an atexit import at the top of your file.    import   )r   cloneprefixr   Noder
   powerr   r   r   replacewarningchildrentypedotted_as_namesappend_childr   parentindeximport_namesimple_stmtinsert_childr	   )r   noderesultsr   r   callnamescontaining_stmtpositionstmt_container
new_importnews               r   	transformzFixExitfunc.transform%   s   7"&"),"7v$$&;;tzz#DND4DE! Htfdkk2T??"LL  ? @ ((+::---uw'tHc23"oo44O&//55dooFH,33NT%5%5#H~tHc/BC J ++d..=C((AwyA((As;r   )
__name__
__module____qualname__keep_line_orderBM_compatiblePATTERNr   r   r<   __classcell__)r   s   @r   r   r      s#    OMG1#<r   r   N)__doc__lib2to3r   r   lib2to3.fixer_utilr   r   r   r   r	   r
   BaseFixr    r   r   <module>rI      s'    ' E E=<*$$ =<r   