Extension Manager Classes¶
DriverManager¶
- class stevedore.driver.DriverManager(namespace, name, invoke_on_load=False, invoke_args=(), invoke_kwds={}, on_load_failure_callback=None, verify_requirements=False, warn_on_missing_entrypoint=True)¶
-
从命名空间加载具有给定名称的单个插件。
- 参数:
namespace (str) – 入口点的命名空间。
name (str) – 要加载的驱动程序的名称。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- __call__(func, *args, **kwds)¶
为单个加载的扩展调用 func()。
func() 的签名应为
def func(ext, *args, **kwds): pass
func() 的第一个参数“ext”是
Extension实例。从 func() 中引发的异常将被记录并忽略。
- 参数:
func – 要传递给每个扩展的 Callable。
args – 要传递给 func() 的变量参数
kwds – 要传递给 func() 的关键字参数
- 返回值:
从 func() 返回的值列表
- __init__(namespace, name, invoke_on_load=False, invoke_args=(), invoke_kwds={}, on_load_failure_callback=None, verify_requirements=False, warn_on_missing_entrypoint=True)¶
- property driver¶
返回此管理器正在使用的驱动程序。
- classmethod make_test_instance(extension, namespace='TESTING', propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
构造一个测试 DriverManager
测试实例传递一个要使用的扩展列表,而不是从入口点加载它们。
- 参数:
extension (
Extension) – 预配置的 Extension 实例namespace (str) – 管理器的命名空间;仅用于标识,因为扩展已传递。
propagate_map_exceptions (bool) – 布尔值,控制是否将异常通过 map 调用传播,还是记录然后忽略它们
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- 返回值:
管理器实例,已初始化用于测试
HookManager¶
- class stevedore.hook.HookManager(namespace, name, invoke_on_load=False, invoke_args=(), invoke_kwds={}, on_load_failure_callback=None, verify_requirements=False, on_missing_entrypoints_callback=None, warn_on_missing_entrypoint=False)¶
-
协调使用通用名称执行多个扩展。
- 参数:
namespace (str) – 入口点的命名空间。
name (str) – 要加载的钩子的名称。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
warn_on_missing_entrypoint (bool) – 标志,用于控制是否通过日志消息报告加载插件失败。仅当 on_missing_entrypoints_callback 为 None 时适用。
- __getitem__(name)¶
返回命名的扩展。
将 HookManager 作为字典访问 (
em['name']) 会生成具有指定名称的Extension实例的列表,其顺序与 map() 将调用的顺序相同。
- __init__(namespace, name, invoke_on_load=False, invoke_args=(), invoke_kwds={}, on_load_failure_callback=None, verify_requirements=False, on_missing_entrypoints_callback=None, warn_on_missing_entrypoint=False)¶
NamedExtensionManager¶
- class stevedore.named.NamedExtensionManager(namespace, names, invoke_on_load=False, invoke_args=(), invoke_kwds={}, name_order=False, propagate_map_exceptions=False, on_load_failure_callback=None, on_missing_entrypoints_callback=None, verify_requirements=False, warn_on_missing_entrypoint=True)¶
基础:
ExtensionManager仅加载命名的扩展。
这对于显式地在配置文件中启用扩展很有用,例如。
- 参数:
namespace (str) – 入口点的命名空间。
names (list(str)) – 要加载的扩展的名称。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
name_order (bool) – 如果为 true,则对加载的扩展进行排序,以匹配
names中使用的顺序。propagate_map_exceptions (bool) – 布尔值,控制是否将异常通过 map 调用传播,还是记录然后忽略它们
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
on_missing_entrypoints_callback (function) – 当找不到一个或多个名称时将调用的回调函数。提供的参数将是“names”参数的子集。
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
warn_on_missing_entrypoint (bool) – 标志,用于控制是否通过日志消息报告加载插件失败。仅当 on_missing_entrypoints_callback 为 None 时适用。
- __init__(namespace, names, invoke_on_load=False, invoke_args=(), invoke_kwds={}, name_order=False, propagate_map_exceptions=False, on_load_failure_callback=None, on_missing_entrypoints_callback=None, verify_requirements=False, warn_on_missing_entrypoint=True)¶
- classmethod make_test_instance(extensions, namespace='TESTING', propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
构造一个测试 NamedExtensionManager
测试实例传递一个要使用的扩展列表,而不是从入口点加载它们。
- 参数:
extensions (扩展列表,包含
Extension) – 预配置的 Extension 实例namespace (str) – 管理器的命名空间;仅用于标识,因为扩展已传递。
propagate_map_exceptions (bool) – 布尔值,控制是否将异常通过 map 调用传播,还是记录然后忽略它们
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- 返回值:
管理器实例,已初始化用于测试
EnabledExtensionManager¶
- class stevedore.enabled.EnabledExtensionManager(namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
基础:
ExtensionManager仅加载通过检查函数测试的插件。
check_func 参数应返回一个布尔值,
True表示应加载并可用该扩展,False表示应忽略该扩展。- 参数:
namespace (str) – 入口点的命名空间。
check_func (可调用对象,接受
Extension实例作为参数) – 用于确定要加载哪些扩展的函数。invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
propagate_map_exceptions (bool) – 布尔值,控制是否将异常通过 map 调用传播,还是记录然后忽略它们
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- __init__(namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
DispatchExtensionManager¶
- class stevedore.dispatch.DispatchExtensionManager(namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
-
加载所有插件并在执行时进行过滤。
这对于需要将不同的输入传递给不同扩展的长期运行进程非常有用。
- 参数:
namespace (str) – 入口点的命名空间。
check_func (可调用对象) – 用于确定要加载哪些扩展的函数。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
propagate_map_exceptions – 布尔值,控制是否将异常从 map 调用中传播到上层,或者是否记录它们然后忽略。
- map(filter_func, func, *args, **kwds)¶
迭代扩展,对 filter_func() 返回 True 的任何扩展调用 func()。
filter_func() 的签名应为
def filter_func(ext, *args, **kwds): pass
filter_func() 的第一个参数 'ext' 是
Extension实例。filter_func() 应在输入参数的情况下返回 True,以调用该扩展。func() 的签名应为
def func(ext, *args, **kwds): pass
func() 的第一个参数“ext”是
Extension实例。如果 self.propagate_map_exceptions 为 True,则从 func() 中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
- 参数:
filter_func – 用于测试每个扩展的可调用对象。
func – 要传递给每个扩展的 Callable。
args – 要传递给 func() 的变量参数
kwds – 要传递给 func() 的关键字参数
- 返回值:
从 func() 返回的值列表
- map_method(filter_func, method_name, *args, **kwds)¶
迭代扩展,对 filter_func() 返回 True 的任何扩展调用其名为 method_name 的对象方法。
这等效于使用
map(),并将 func 设置为 lambda x: x.obj.method_name(),同时更加方便。如果 self.propagate_map_exceptions 为 True,则从调用的方法中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
在 0.12 版本中添加。
- 参数:
filter_func – 用于测试每个扩展的可调用对象。
method_name – 要为每个扩展调用的扩展方法名称。
args – 传递给方法的可变参数
kwds – 传递给方法的关键字参数
- 返回值:
从方法返回的值列表
NameDispatchExtensionManager¶
- class stevedore.dispatch.NameDispatchExtensionManager(namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
-
加载所有插件并在执行时进行过滤。
这对于需要将不同的输入传递给不同的扩展,并且可以在调用它们之前预测扩展名称的长期运行进程非常有用。
check_func 参数应返回一个布尔值,
True表示应加载并可用该扩展,False表示应忽略该扩展。- 参数:
namespace (str) – 入口点的命名空间。
check_func (可调用对象) – 用于确定要加载哪些扩展的函数。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
propagate_map_exceptions – 布尔值,控制是否将异常从 map 调用中传播到上层,或者是否记录它们然后忽略。
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- __init__(namespace, check_func, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
- map(names, func, *args, **kwds)¶
迭代扩展,对名称在给定名称列表中任何扩展调用 func()。
func() 的签名应为
def func(ext, *args, **kwds): pass
func() 的第一个参数“ext”是
Extension实例。如果 self.propagate_map_exceptions 为 True,则从 func() 中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
- 参数:
names – 要调用的扩展的名称列表或集合。
func – 要传递给每个扩展的 Callable。
args – 要传递给 func() 的变量参数
kwds – 要传递给 func() 的关键字参数
- 返回值:
从 func() 返回的值列表
- map_method(names, method_name, *args, **kwds)¶
迭代扩展,对名称在给定名称列表中任何扩展调用其名为 method_name 的对象方法。
这等效于使用
map(),并将 func 设置为 lambda x: x.obj.method_name(),同时更加方便。如果 self.propagate_map_exceptions 为 True,则从调用的方法中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
在 0.12 版本中添加。
- 参数:
names – 要调用的扩展的名称列表或集合。
method_name – 要为每个扩展调用的扩展方法名称。
args – 传递给方法的可变参数
kwds – 传递给方法的关键字参数
- 返回值:
从方法返回的值列表
ExtensionManager¶
- class stevedore.extension.ExtensionManager(namespace, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
基类:
object所有其他管理器的基类。
- 参数:
namespace (str) – 入口点的命名空间。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
propagate_map_exceptions (bool) – 布尔值,控制是否将异常通过 map 调用传播,还是记录然后忽略它们
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- __contains__(name)¶
如果名称在已启用扩展列表中,则返回 True。
- __init__(namespace, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
- __weakref__¶
对该对象的弱引用列表
- entry_points_names()¶
返回此命名空间的入口点名称列表。
- items()¶
返回形式为 (name, extension) 的元组的迭代器。
这类似于 Mapping.items() 方法。
- list_entry_points()¶
返回此命名空间的入口点列表。
入口点实际上并未加载,只是读取并返回其列表。
- classmethod make_test_instance(extensions, namespace='TESTING', propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)¶
构造一个测试 ExtensionManager
测试实例传递一个要使用的扩展列表,而不是从入口点加载它们。
- 参数:
extensions (扩展列表,
Extension) – 要使用的预配置扩展实例namespace (str) – 管理器的命名空间;仅用于标识,因为扩展已传递。
propagate_map_exceptions (bool) – 在调用 map 时,控制是否将异常向上通过 map 调用传播,或者是否记录它们然后忽略
on_load_failure_callback (function) – 当无法加载入口点时将调用的回调函数。当入口点加载失败时,将提供的参数为 (manager, entrypoint, exception)
verify_requirements (bool) – 使用 setuptools 强制执行正在加载的插件的依赖项。默认为 False。
- 返回值:
管理器实例,已初始化用于测试
- map(func, *args, **kwds)¶
对扩展进行迭代,对每个扩展调用 func()。
func() 的签名应为
def func(ext, *args, **kwds): pass
func() 的第一个参数“ext”是
Extension实例。如果 self.propagate_map_exceptions 为 True,则从 func() 中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
- 参数:
func – 要传递给每个扩展的 Callable。
args – 要传递给 func() 的变量参数
kwds – 要传递给 func() 的关键字参数
- 返回值:
从 func() 返回的值列表
- map_method(method_name, *args, **kwds)¶
通过名称调用扩展上的方法。
这等效于使用
map(),并将 func 设置为 lambda x: x.obj.method_name(),同时更加方便。如果 self.propagate_map_exceptions 为 True,则从调用的方法中引发的异常将传播到上层并停止处理,否则它们将被记录并忽略。
在 0.12 版本中添加。
- 参数:
method_name – 要为每个扩展调用的扩展方法名称。
args – 传递给方法的可变参数
kwds – 传递给方法的关键字参数
- 返回值:
从方法返回的值列表
- names()¶
返回发现的扩展的名称
扩展¶
- class stevedore.extension.Extension(name, entry_point, plugin, obj)¶
基类:
object用于跟踪扩展的记录对象。
传递给构造函数的参数将使用相同名称保存为实例的属性,并且可以通过传递给
map()的可调用对象或直接遍历ExtensionManager来访问。- 参数:
name (str) – 入口点名称。
entry_point (EntryPoint) – 由
entrypoints返回的 EntryPoint 实例。plugin – entry_point.load() 返回的值
obj – 如果管理器在加载时调用了扩展,则由
plugin(*args, **kwds)返回的对象
- property attr¶
要加载的模块的属性。
- property entry_point_target¶
此扩展的入口点引用的模块和属性。
- 返回值:
入口点目标的字符串表示形式,格式为“dotted.module:object”。
- property module_name¶
从该模块加载入口点的名称。
- 返回值:
格式为“dotted.module”的字符串。
TestExtensionManager¶
- class stevedore.tests.manager.TestExtensionManager(extensions, namespace='test', invoke_on_load=False, invoke_args=(), invoke_kwds={})¶
基础:
ExtensionManager显式为测试初始化的 ExtensionManager。
自 0.13 版本弃用:使用类被替换的实例的
make_test_instance()类方法,而不是直接使用此类。- 参数:
extensions (扩展列表,
Extension) – 要使用的预配置扩展实例,而不是从入口点加载它们。namespace (str) – 入口点的命名空间。
invoke_on_load (bool) – 布尔值,控制在加载驱动程序后是否调用入口点返回的对象。
invoke_args (tuple) – 调用入口点返回的对象时传递的位置参数。仅当 invoke_on_load 为 True 时使用。
invoke_kwds (dict) – 调用入口点返回的对象时传递的命名参数。仅当 invoke_on_load 为 True 时使用。
- __init__(extensions, namespace='test', invoke_on_load=False, invoke_args=(), invoke_kwds={})¶