idmtools.registry.utils module

Provides utilities for plugins.

Copyright 2021, Bill & Melinda Gates Foundation. All rights reserved.

idmtools.registry.utils.is_a_plugin_of_type(value, plugin_specification: Type[PluginSpecification]) bool[source]

Determine if a value of a plugin specification is of type PluginSpecification.

Parameters:
  • value – The value to inspect.

  • plugin_specification – Plugin specification to check against.

Returns:

A Boolean indicating True if the plugin is of a subclass of PluginSpecification, else False.

idmtools.registry.utils.load_plugin_map(entrypoint: str, spec_type: Type[PluginSpecification], strip_all: bool = True) Dict[str, Type[PluginSpecification]][source]

Load plugins from entry point with the indicated type of specification into a map.

Warning

This could cause name collisions if plugins of the same name are installed.

Parameters:
  • entrypoint – The name of the entry point.

  • spec_type – The type of plugin specification.

  • strip_all – Pass through for get_name from Plugins. Changes names in plugin registries

Returns:

Returns a dictionary of name and PluginSpecification.

Return type:

(Dict[str, Type[PluginSpecification]])

idmtools.registry.utils.plugins_loader(entry_points_name: str, plugin_specification: Type[PluginSpecification]) Set[PluginSpecification][source]

Loads all the plugins of type PluginSpecification from entry point name.

idmtools also supports loading plugins through a list of strings representing the paths to modules containing plugins.

Parameters:
  • entry_points_name – Entry point name for plugins.

  • plugin_specification – Plugin specification to load.

Returns:

All the plugins of the type indicated.

Return type:

(Set[PluginSpecification])

idmtools.registry.utils.discover_plugins_from(library: Any, plugin_specification: Type[PluginSpecification]) List[Type[PluginSpecification]][source]

Search a library object for plugins of type PluginSpecification.

Currently it detects module and classes. In the future support for strings will be added.

Parameters:
  • library – Library object to discover plugins from.

  • plugin_specification – Specification to search for.

Returns:

List of plugins.

Return type:

List[Type[PluginSpecification]]