def registerByModule(cls, module): """ This function registry a module by search all class members of the module and registers any class that is an instance of the plugin class :param module: the module path to registry :type module: str """ if inspect.ismodule(module): for member in modules.iterMembers(module, predicate=inspect.isclass): cls.registerMetaClass(member[1])
def registerByModule(self, module): """ This function registry a module by search all class members of the module and registers any class that is an instance of the plugin class 'zoo.libs.plugin.plugin.Plugin' :param module: the module path to registry, the path is a '.' separated path eg. zoo.libs.apps.tooldefintions :type module: str """ if inspect.ismodule(module): for member in modules.iterMembers(module, predicate=inspect.isclass): self.registerPlugin(member[1])
def registerByPackage(cls, pkg): """This function is similar to registerByModule() but works on packages, this is an expensive operation as it requires a recursive search by importing all sub modules and and searching them. :param pkg: The package path to register eg. zoo.libs.apps :type pkg: str """ visited = set() for subModule in modules.iterModules(pkg): filename = os.path.splitext(os.path.basename(subModule))[0] if filename.startswith("__") or filename in visited: continue visited.add(filename) subModuleObj = modules.importModule(subModule) for member in modules.iterMembers(subModuleObj, predicate=inspect.isclass): cls.registerMetaClass(member[1])
def registerByPackage(self, pkg): """This function is similar to registerByModule() but works on packages, this is an expensive operation as it requires a recursive search by importing all sub modules and and searching them. :param pkg: The package path to register eg. zoo.libs.apps :type pkg: str """ for subModule in modules.iterModules(pkg): filename = os.path.splitext(os.path.basename(subModule))[0] if filename.startswith("__") or subModule.endswith(".pyc"): continue subModuleObj = modules.importModule( modules.asDottedPath(os.path.normpath(subModule))) for member in modules.iterMembers(subModuleObj, predicate=inspect.isclass): self.registerPlugin(member[1])