MCPcopy Create free account
hub / github.com/ActiveState/code / _Delegate

Class _Delegate

recipes/Python/578151_affinitypy/recipe-578151.py:49–79  ·  view source on GitHub ↗

_Delegate(func, args, kwargs) -> _Delegate instance

Source from the content-addressed store, hash-verified

47################################################################################
48
49class _Delegate:
50
51 "_Delegate(func, args, kwargs) -> _Delegate instance"
52
53 slots('func, args, kwargs, mutex, value, error')
54
55 def __init__(self, func, args, kwargs):
56 "Initializes instance from arguments and prepares to run."
57 self.__func = func
58 self.__args = args
59 self.__kwargs = kwargs
60 self.__mutex = _thread.allocate_lock()
61 self.__mutex.acquire()
62
63 def __call__(self):
64 "Executes code with arguments and allows value retrieval."
65 try:
66 self.__value = self.__func(*self.__args, **self.__kwargs)
67 self.__error = False
68 except:
69 self.__value = sys.exc_info()[1]
70 self.__error = True
71 self.__mutex.release()
72
73 @property
74 def value(self):
75 "Waits for value availability and raises or returns data."
76 self.__mutex.acquire()
77 if self.__error:
78 raise self.__value
79 return self.__value

Callers 1

__call__Method · 0.85

Calls 1

slotsFunction · 0.70

Tested by

no test coverage detected