def test_scan_package(self): global testHandler @config.action def testHandler(*args): # pragma: no cover pass seen = set() actions = directives.scan(self.__class__.__module__, seen) self.assertTrue(len(actions) == 1) self.assertTrue(self.__class__.__module__ in seen) # already seen actions = directives.scan(self.__class__.__module__, seen) self.assertTrue(len(actions) == 0)
def initialize(packages=None, excludes=(), reg=None): """ Load memphis packages, scan and execute all configuration directives. """ if reg is None: reg = Components('memphis') reg.registerHandler(objectEventNotify, (IObjectEvent,)) sys.modules['memphis.config'].registry = reg sys.modules['memphis.config.api'].registry = reg def exclude_filter(modname): if modname in packages: return True return exclude(modname, excludes) # list all packages if packages is None: packages = loadPackages(excludes=excludes) packages.extend([mod for mod in mods if exclude_filter(mod)]) else: packages = loadPackages(packages, excludes=excludes) # scan packages and load all actions seen = set() actions = [] for pkg in packages: actions.extend(directives.scan(pkg, seen, exclude_filter)) # execute actions actions = directives.resolveConflicts(actions) for action in actions: action()
def update(self): data = [] for dist in ADDONS: data.append(dist) self.addons = data if 'form.button.install' in self.request.POST: for name in self.request.POST.getall('addon'): for dist in self.addons: if dist.project_name == name: dist.activate() actions = directives.scan(name, set()) pkg_resources.working_set.add(dist) for action in actions: action()