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)

基础: NamedExtensionManager

从命名空间加载具有给定名称的单个插件。

参数:
  • 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)

基础: NamedExtensionManager

协调使用通用名称执行多个扩展。

参数:
  • 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)

继承自 EnabledExtensionManager

加载所有插件并在执行时进行过滤。

这对于需要将不同的输入传递给不同扩展的长期运行进程非常有用。

参数:
  • 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)

继承自 DispatchExtensionManager

加载所有插件并在执行时进行过滤。

这对于需要将不同的输入传递给不同的扩展,并且可以在调用它们之前预测扩展名称的长期运行进程非常有用。

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。

__getitem__(name)

返回具有指定名称的扩展。

以字典形式访问 ExtensionManager (em['name']) 会产生具有指定名称的 Extension 实例。

__init__(namespace, invoke_on_load=False, invoke_args=(), invoke_kwds={}, propagate_map_exceptions=False, on_load_failure_callback=None, verify_requirements=False)
__iter__()

生成管理器的迭代器。

迭代 ExtensionManager 会产生按调用顺序排列的 Extension 实例。

__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={})