|
|
|
|
|
|
|
|
|
|
|
|
|
import inspect
|
|
|
|
from .base import BaseModel
|
|
|
|
|
|
def get_class(mod_name, base_path, BaseClass):
|
|
"""Get the class object which inherits from BaseClass and is defined in
|
|
the module named mod_name, child of base_path.
|
|
"""
|
|
mod_path = "{}.{}".format(base_path, mod_name)
|
|
mod = __import__(mod_path, fromlist=[""])
|
|
classes = inspect.getmembers(mod, inspect.isclass)
|
|
|
|
classes = [c for c in classes if c[1].__module__ == mod_path]
|
|
|
|
classes = [c for c in classes if issubclass(c[1], BaseClass)]
|
|
assert len(classes) == 1, classes
|
|
return classes[0][1]
|
|
|
|
|
|
def get_model(name):
|
|
return get_class(name, __name__, BaseModel)
|
|
|