Lc@sdZdgZddkZgZdZdZeedoeeinee_edjoVdZ d Z dd Z ee ee d ee d d ee dndS(s atexit.py - allow programmer to define multiple exit functions to be executed upon normal program termination. One public function, register, is defined. tregisteriNcCsd}xtoti\}}}y|||Wq tj oti}q ddk}tidIJ|iti}q Xq W|dj o|d|d|dndS(srun any registered exit functions _exithandlers is traversed in reverse order so functions are executed last in, first out. iNsError in atexit._run_exitfuncs:iii( tNonet _exithandlerstpopt SystemExittsystexc_infot tracebacktstderrt print_exc(RtfuncttargstkargsR((s/usr/lib64/python2.6/atexit.pyt_run_exitfuncs s    cOsti|||f|S(sregister 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 func is returned to facilitate usage as a decorator. (Rtappend(R R R ((s/usr/lib64/python2.6/atexit.pyR%s texitfunct__main__cCs dGHdS(Ns running x1((((s/usr/lib64/python2.6/atexit.pytx17scCsd|fGHdS(Nsrunning x2(%r)((tn((s/usr/lib64/python2.6/atexit.pytx29scCsd||fGHdS(Nsrunning x3(%r, kwd=%r)((Rtkwd((s/usr/lib64/python2.6/atexit.pytx3;si itbars no kwd args( t__doc__t__all__RRR RthasattrRt__name__RRRR(((s/usr/lib64/python2.6/atexit.pyts