plugin_system.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:shanghai 作者: chireiden 项目源码 文件源码
def load_plugin(self, identifier: str, *,
                    dependency_path: Iterable[str] = (),
                    is_core: bool = False,
                    ) -> Plugin:
        if not identifier.isidentifier():
            raise ValueError(f"Invalid plugin name. {identifier!r} contains invalid symbol(s).")
        if keyword.iskeyword(identifier):
            raise ValueError(f"Invalid plugin name. {identifier!r} is a built-in keyword.")

        if identifier in self.plugin_registry:
            if not dependency_path:
                self.logger.warn(f"Plugin {identifier!r} already exists")
            return self.plugin_registry[identifier]

        for search_path in self.plugin_search_paths:
            try:
                module_path = self._find_module_path(search_path, identifier)
            except OSError:
                continue
            else:
                break
        else:
            raise FileNotFoundError(
                f"Could not find plugin {identifier!r} in any of the search paths:"
                + "".join(f'\n  {path!s}' for path in self.plugin_search_paths)
            )

        plugin = self._load_plugin_as_module(module_path, identifier,
                                             dependency_path=dependency_path)
        self._register_plugin(plugin)
        return plugin
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号