return subclass
-def get_manager(submod):
+def get_manager(submod=None, defaults=['subproc', 'thread']):
"""
>>> get_manager('thread')
<class 'pysawsim.manager.thread.ThreadManager'>
Traceback (most recent call last):
...
AttributeError: 'module' object has no attribute 'wookie'
+ >>> m = get_manager()
+ >>> issubclass(m, JobManager)
+ True
"""
+ if submod == None:
+ for submod in defaults:
+ try:
+ m = get_manager(submod)
+ except ImportError:
+ continue
+ if len(m._bugs) > 0:
+ continue
+ return m
+ raise Exception('none of the managers in %s were enabled' % defaults)
this_mod = __import__(__name__, fromlist=[submod])
sub_mod = getattr(this_mod, submod)
+ if sub_mod._ENABLED == False:
+ raise sub_mod._DISABLING_ERROR
class_selector = IsSubclass(base_class=JobManager, blacklist=[JobManager])
for x_name in dir(sub_mod):
x = getattr(sub_mod, x_name)
if class_selector(x) == True:
+ x._bugs = [a for a in dir(sub_mod) if a.startswith('_HAS_BUG_')]
return x
raise ValueError('no JobManager found in %s' % sub_mod.__name__)