def test_plugin_container_wrapping_bibformat_elements(self): """pluginutils - wrapping bibformat elements""" def format_signature(bfo, *dummy_args, **dummy_argd): pass def escape_values_signature(bfo): pass plugin_builder = create_enhanced_plugin_builder( compulsory_objects={"format_element": format_signature}, optional_objects={"escape_values": escape_values_signature}, ) bibformat_elements = PluginContainer( os.path.join(CFG_BIBFORMAT_ELEMENTS_PATH, "bfe_*.py"), plugin_builder=plugin_builder ) self.failUnless(bibformat_elements["bfe_fulltext"]) self.failUnless(callable(bibformat_elements["bfe_fulltext"]["format_element"])) self.failUnless(len(bibformat_elements) >= 50)
def test_plugin_container_wrapping_bibformat_elements(self): """pluginutils - wrapping bibformat elements""" def format_signature(bfo, *dummy_args, **dummy_argd): pass def escape_values_signature(bfo): pass plugin_builder = create_enhanced_plugin_builder( compulsory_objects={ 'format_element' : format_signature, }, optional_objects={ 'escape_values' : escape_values_signature, }) bibformat_elements = PluginContainer(os.path.join(CFG_BIBFORMAT_ELEMENTS_PATH, 'bfe_*.py'), plugin_builder=plugin_builder) self.failUnless(bibformat_elements['bfe_fulltext']) self.failUnless(callable(bibformat_elements['bfe_fulltext']['format_element'])) self.failUnless(len(bibformat_elements) >= 50)
def _load_upgrades(self, remove_applied=True): """ Load upgrade modules Upgrade modules are loaded using pluginutils. The pluginutils module is either loaded from site-packages via normal or via a user-loaded module supplied in the __init__ method. This is useful when the engine is running before actually being installed into site-packages. @param remove_applied: if True, already applied upgrades will not be included, if False the entire upgrade graph will be returned. """ if self.pluginutils is None: from invenio.pluginutils import PluginContainer from invenio.pluginutils import create_enhanced_plugin_builder else: PluginContainer = self.pluginutils.PluginContainer create_enhanced_plugin_builder = self.pluginutils.create_enhanced_plugin_builder if remove_applied: self.load_history() builder = create_enhanced_plugin_builder( compulsory_objects={ 'do_upgrade': dummy_signgature, 'info': dummy_signgature, }, optional_objects={ 'estimate': dummy_signgature, 'pre_upgrade': dummy_signgature, 'post_upgrade': dummy_signgature, }, other_data={ 'depends_on': (list, []), }, ) # Load all upgrades plugins = PluginContainer( [os.path.join(p, '*.py') for p in self._paths], plugin_builder=builder, external=True, ) # Check for broken plug-ins broken = plugins.get_broken_plugins() if broken: messages = [] import traceback for plugin, info in broken.items(): messages.append( "Failed to load %s:\n" " %s" % (plugin, "".join(traceback.format_exception(*info)))) raise RuntimeError(*messages) # Store name and doc of plug-in in itself for plugin_id in plugins.keys(): plugins[plugin_id]['id'] = plugin_id plugins[plugin_id]['repository'] = self._parse_plugin_id(plugin_id) return plugins
def _load_upgrades(self, remove_applied=True): """ Load upgrade modules Upgrade modules are loaded using pluginutils. The pluginutils module is either loaded from site-packages via normal or via a user-loaded module supplied in the __init__ method. This is useful when the engine is running before actually being installed into site-packages. @param remove_applied: if True, already applied upgrades will not be included, if False the entire upgrade graph will be returned. """ if self.pluginutils is None: from invenio.pluginutils import PluginContainer from invenio.pluginutils import create_enhanced_plugin_builder else: PluginContainer = self.pluginutils.PluginContainer create_enhanced_plugin_builder = self.pluginutils.create_enhanced_plugin_builder if remove_applied: self.load_history() builder = create_enhanced_plugin_builder( compulsory_objects={ 'do_upgrade': dummy_signgature, 'info': dummy_signgature, }, optional_objects={ 'estimate': dummy_signgature, 'pre_upgrade': dummy_signgature, 'post_upgrade': dummy_signgature, }, other_data={ 'depends_on': (list, []), }, ) # Load all upgrades plugins = PluginContainer( [os.path.join(p, '*.py') for p in self._paths], plugin_builder=builder, external=True, ) # Check for broken plug-ins broken = plugins.get_broken_plugins() if broken: messages = [] import traceback for plugin, info in broken.items(): messages.append("Failed to load %s:\n" " %s" % (plugin, "".join(traceback.format_exception(*info)))) raise RuntimeError(*messages) # Store name and doc of plug-in in itself for plugin_id in plugins.keys(): plugins[plugin_id]['id'] = plugin_id plugins[plugin_id]['repository'] = self._parse_plugin_id(plugin_id) return plugins