def checkForRequirements(cls, requirements): for req in requirements: if req.name == None and req.code == 0 and req.developer == None and req.version == 0: continue if req.name is not None and (req.code is None and req.developer is None): raise ReferenceError("Unable to satisfy requirements. Only Plugin name passed, required code name or developer name.") if req.name and req.developer: plugins = Abstraction.getAllPluginsByDeveloper(req.developer) found = sum(p.name == req.name for p in plugins) > 0 if not found: raise NotImplementedError("Requirement not satsfied for {}".format(req.name)) for p in plugins: if p.name is not req.name: continue if p.version is not 0 and req.version != 0 and p.version < req.version: raise ImportError("Plugin version not satisfied for {}".format(req.name)) break elif req.code is not 0: if not Abstraction.PluginExists(req.code): raise NotImplementedError("Requirement not satisfied for key:{}".format(req.code)) plugin = Abstraction.getPlugin(_id) if plugin.version != 0 and req.version != 0 and plugin.version < req.version: raise ImportError("Plugin version not satisfied for {}".format(plugin))
def getRequirement(cls, req, ps = None): if req.name == None and req.code == 0 and req.developer == None and req.version == 0: return None if req.name is not None and (req.code is None and req.developer is None): return None if req.name and req.developer: plugins = Abstraction.getAllPluginsByDeveloper(req.developer, ps) for p in plugins: if p.name is not req.name: continue if p.version is not 0 and req.version != 0 and p.version < req.version: return None return p elif req.code is not 0: if not Abstraction.PluginExists(req.code, ps): return None plugin = Abstraction.getPlugin(_id, ps) if plugin.version != 0 and req.version != 0 and plugin.version < req.version: return None return Plugin return None
def loadPluginObjects(): plugins = getPlugins() for plugin in plugins: satisfyPluginDependency(plugin.requirements) if type(plugin) is IPluginAbstractMeta: continue exists = sum(k.name == plugin.name and k.developer == plugin.developer and (k.version == plugin.version or k.version == 0 or plugin.version == 0) for k in Abstraction.getAllPlugins()) > 0 if not exists: PLUGIN_OBJECTS.append(plugin())