本文整理汇总了Python中invenio.pluginutils.PluginContainer.keys方法的典型用法代码示例。如果您正苦于以下问题:Python PluginContainer.keys方法的具体用法?Python PluginContainer.keys怎么用?Python PluginContainer.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类invenio.pluginutils.PluginContainer
的用法示例。
在下文中一共展示了PluginContainer.keys方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _load_upgrades
# 需要导入模块: from invenio.pluginutils import PluginContainer [as 别名]
# 或者: from invenio.pluginutils.PluginContainer import keys [as 别名]
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