From: Raymond Hettinger Date: Sat, 11 Dec 2004 02:53:27 +0000 (+0000) Subject: SF bug #1083202: UnboundLocalError raised by atexit module X-Git-Tag: v2.4.1c1~167 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e0d3d4ef7140f5c81a8cafa0e1f0f25683cf19e5;p=thirdparty%2FPython%2Fcpython.git SF bug #1083202: UnboundLocalError raised by atexit module The sys module could be called before being imported. --- diff --git a/Lib/atexit.py b/Lib/atexit.py index e109eb590da7..c9f4cc677528 100644 --- a/Lib/atexit.py +++ b/Lib/atexit.py @@ -7,6 +7,8 @@ One public function, register, is defined. __all__ = ["register"] +import sys + _exithandlers = [] def _run_exitfuncs(): """run any registered exit functions @@ -23,7 +25,7 @@ def _run_exitfuncs(): except SystemExit: exc_info = sys.exc_info() except: - import sys, traceback + import traceback print >> sys.stderr, "Error in atexit._run_exitfuncs:" traceback.print_exc() exc_info = sys.exc_info() @@ -41,12 +43,10 @@ def register(func, *targs, **kargs): """ _exithandlers.append((func, targs, kargs)) -import sys if hasattr(sys, "exitfunc"): # Assume it's another registered exit function - append it to our list register(sys.exitfunc) sys.exitfunc = _run_exitfuncs -del sys if __name__ == "__main__": def x1(): diff --git a/Misc/NEWS b/Misc/NEWS index afc742fa2d1f..01d157cb4038 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -15,6 +15,9 @@ Core and builtins Library ------- +- atexit.register no longer references the sys module before importing it. + (Bug #1083202). + - unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully extended or overridden by subclasses. Formerly, the subclassed method would be ignored by the rest of the module. (Bug #1078905).