28 lines
895 B
Python
28 lines
895 B
Python
import threading
|
|
|
|
class UserlessThread(Exception):
|
|
def __str__():
|
|
return "Current thread: %s is not an instance of InstanceThread \
|
|
of InstanceInheritingThread" % str(threading.current_thread())
|
|
|
|
class HasUser(object):
|
|
def user(self): return self._user
|
|
|
|
class InstanceThread(threading.Thread, HasUser):
|
|
def __init__(self,user, *args, **kwargs):
|
|
super(InstanceThread, self).__init__(*args, **kwargs)
|
|
self._user = user
|
|
|
|
class InstanceInheritingThread(threading.Thread, HasUser):
|
|
def __init__(self, *args, **kwargs):
|
|
self._user = threading.current_thread().user()
|
|
super(InstanceInheritingThread, self).__init__(*args, **kwargs)
|
|
|
|
def user():
|
|
try: return threading.current_thread().user()
|
|
except AttributeError: raise UserlessThread()
|
|
|
|
def apc(): return user().api_client
|
|
|
|
def getsig(s): return user().signal(s)
|