现代、优雅、简约但功能强大的Python3.5+插件系统。
offshoot的Python项目详细描述
快速游览
您希望创建可插入的类
classExportFormat:def__init__(self):self.name="Export Format"defexport(self,data):raiseNotImplementedError()@classmethoddefis_an_export_format(cls):returnTrue
您的类可插入,带有*分支*
importoffshootclassExportFormat(offshoot.Pluggable):def__init__(self):self.name="Export Format"@offshoot.expecteddefexport(self,data):raiseNotImplementedError()@classmethod@offshoot.forbiddendefis_an_export_format(cls):returnTrue
是的,就是这样!稍后将详细介绍这些可选的装饰器。
示例*分支*插件定义
importoffshootclassYAMLExportFormatPlugin(offshoot.Plugin):name="YAMLExportFormatPlugin"version="0.1.0"libraries=["PyYAML"]files=[{"path":"export_formats/yaml.py","pluggable":"ExportFormat"}]config={"export_options":{"width":80}}@classmethoddefon_install(cls):print("\n\n%s was installed successfully!"%cls.__name__)@classmethoddefon_uninstall(cls):print("\n\n%s was uninstalled successfully!"%cls.__name__)if__name__=="__main__":offshoot.executable_hook(YAMLExportFormatPlugin)
示例*分支*插件文件
importoffshootfromexport_formatimportExportFormatimportyamlclassYAMLExportFormat(ExportFormat):defexport(self,data):returnyaml.dump(data)
从命令行安装*分支*插件
分支安装yamlexportformatplugin
自动*分支*插件发现和导入
importoffshootoffshoot.discover("ExportFormat",globals())YAMLExportFormat# Now in scope!
验证类名字符串是否映射到已发现的插件类
importoffshootclass_mapping=offshoot.discover("ExportFormat")# We omit scope param to get the class mapping"YAMLExportFormat"inclass_mapping# True