]> granicus.if.org Git - python/commitdiff
Merged revisions 86229 via svnmerge from
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Sat, 6 Nov 2010 01:38:48 +0000 (01:38 +0000)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Sat, 6 Nov 2010 01:38:48 +0000 (01:38 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r86229 | alexander.belopolsky | 2010-11-05 21:31:16 -0400 (Fri, 05 Nov 2010) | 1 line

  Issue #10330: trace module can now be used with python built without threads.
........

Lib/trace.py

index 12e1b492072729c052b336354ede258b086769b7..97491db413e8daa225c9f3c15ecaec9ada67a727 100644 (file)
@@ -52,7 +52,6 @@ import linecache
 import os
 import re
 import sys
-import threading
 import time
 import token
 import tokenize
@@ -65,6 +64,22 @@ try:
 except ImportError:
     import pickle
 
+try:
+    import threading
+except ImportError:
+    _settrace = sys.settrace
+
+    def _unsettrace():
+        sys.settrace(None)
+else:
+    def _settrace(func):
+        threading.settrace(func)
+        sys.settrace(func)
+
+    def _unsettrace():
+        sys.settrace(None)
+        threading.settrace(None)
+
 def usage(outfile):
     outfile.write("""Usage: %s [OPTIONS] <file> [ARGS]
 
@@ -501,14 +516,12 @@ class Trace:
         if globals is None: globals = {}
         if locals is None: locals = {}
         if not self.donothing:
-            threading.settrace(self.globaltrace)
-            sys.settrace(self.globaltrace)
+            _settrace(self.globaltrace)
         try:
             exec cmd in globals, locals
         finally:
             if not self.donothing:
-                sys.settrace(None)
-                threading.settrace(None)
+                _unsettrace()
 
     def runfunc(self, func, *args, **kw):
         result = None