##// END OF EJS Templates
avoid missing readline warning in zmqshell...
avoid missing readline warning in zmqshell InteractiveShell.set_autoindent() warns when readline is missing, and the zmqshell no longer loads readline. This changes the condition of the warning to only if it is being enabled, and prevents enabling autoindent in the zmqshell.

File last commit:

r2661:595fc3b9
r4828:33f6dc7f
Show More
thread_ex.py
50 lines | 1.7 KiB | text/x-python | PythonLexer
Ville M. Vainio
merge, fix crlf
r1112 """
Thread subclass that can deal with asynchronously function calls via
raise_exc.
"""
Ville M. Vainio
crlf -> lf
r1032 import threading
import inspect
import ctypes
def _async_raise(tid, exctype):
"""raises the exception, performs cleanup if needed"""
if not inspect.isclass(exctype):
raise TypeError("Only types can be raised (not instances)")
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
if res == 0:
raise ValueError("invalid thread id")
elif res != 1:
# """if it returns a number greater than one, you're in trouble,
# and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
raise SystemError("PyThreadState_SetAsyncExc failed")
Ville M. Vainio
merge, fix crlf
r1112 class ThreadEx(threading.Thread):
Ville M. Vainio
crlf -> lf
r1032 def _get_my_tid(self):
"""determines this (self's) thread id"""
if not self.isAlive():
raise threading.ThreadError("the thread is not active")
# do we have it cached?
if hasattr(self, "_thread_id"):
return self._thread_id
# no, look for it in the _active dict
for tid, tobj in threading._active.items():
if tobj is self:
self._thread_id = tid
return tid
raise AssertionError("could not determine the thread's id")
def raise_exc(self, exctype):
"""raises the given exception type in the context of this thread"""
_async_raise(self._get_my_tid(), exctype)
def kill(self):
"""raises SystemExit in the context of the given thread, which should
cause the thread to exit silently (unless caught)"""
self.raise_exc(SystemExit)