(
module_name: str, module: ModuleType, manager: "PluginManager"
)
| 94 | |
| 95 | |
| 96 | def _new_plugin( |
| 97 | module_name: str, module: ModuleType, manager: "PluginManager" |
| 98 | ) -> "Plugin": |
| 99 | plugin_id = _module_name_to_plugin_id(module_name) |
| 100 | if plugin_id in _plugins: |
| 101 | raise RuntimeError( |
| 102 | f"Plugin {plugin_id} already exists! Check your plugin name." |
| 103 | ) |
| 104 | |
| 105 | parent_plugin_id = _find_parent_plugin_id(module_name) |
| 106 | if parent_plugin_id is not None and parent_plugin_id not in _plugins: |
| 107 | raise RuntimeError( |
| 108 | f"Parent plugin {parent_plugin_id} must " |
| 109 | f"be loaded before loading {plugin_id}." |
| 110 | ) |
| 111 | parent_plugin = _plugins[parent_plugin_id] if parent_plugin_id is not None else None |
| 112 | |
| 113 | plugin = Plugin( |
| 114 | name=_module_name_to_plugin_name(module_name), |
| 115 | module=module, |
| 116 | module_name=module_name, |
| 117 | manager=manager, |
| 118 | parent_plugin=parent_plugin, |
| 119 | ) |
| 120 | if parent_plugin: |
| 121 | parent_plugin.sub_plugins.add(plugin) |
| 122 | |
| 123 | _plugins[plugin_id] = plugin |
| 124 | return plugin |
| 125 | |
| 126 | |
| 127 | def _revert_plugin(plugin: "Plugin") -> None: |
no test coverage detected