mς
­fIc           @   sΑ   d  Z  d g Z d k Z g  Z d   Z d   Z e e d  o e e i  n e e _ e d j oV d   Z	 d   Z
 d d	  Z e e	  e e
 d
  e e d d  e e d  n d S(   s   
atexit.py - allow programmer to define multiple exit functions to be executed
upon normal program termination.

One public function, register, is defined.
t   registerNc          C   sΌ   d } x t o~ t i   \ } } }  y | | |    Wq	 t j
 o t i   } q	 d k	 } t i
 d IJ| i   t i   } q	 Xq	 W| d j	 o | d | d | d  n d S(   s   run any registered exit functions

    _exithandlers is traversed in reverse order so functions are executed
    last in, first out.
    Ns   Error in atexit._run_exitfuncs:i    i   i   (   t   Nonet   exc_infot   _exithandlerst   popt   funct   targst   kargst
   SystemExitt   syst	   tracebackt   stderrt	   print_exc(   R   R
   R   R   R   (    (    t#   /mit/python/lib/python2.4/atexit.pyt   _run_exitfuncs   s       	
c         O   s   t  i |  | | f  d S(   sΧ   register a function to be executed upon normal program termination

    func - function to be called at exit
    targs - optional arguments to pass to func
    kargs - optional keyword arguments to pass to func
    N(   R   t   appendR   R   R   (   R   R   R   (    (    R   R    %   s     t   exitfunct   __main__c           C   s	   d GHd  S(   Ns
   running x1(    (    (    (    R   t   x14   s    c         C   s   d |  f GHd  S(   Ns   running x2(%r)(   t   n(   R   (    (    R   t   x26   s    c         C   s   d |  | f GHd  S(   Ns   running x3(%r, kwd=%r)(   R   t   kwd(   R   R   (    (    R   t   x38   s    i   i   t   bars   no kwd args(   t   __doc__t   __all__R	   R   R   R    t   hasattrR   t   __name__R   R   R   R   (   R   R   R   R    R	   R   R   R   (    (    R   t   ?   s    								
