新增插件Python依赖管理系统,支持自动检查和安装依赖,优化依赖配置和错误处理,更新相关文档和示例代码。
This commit is contained in:
102
src/plugin_system/utils/dependency_config.py
Normal file
102
src/plugin_system/utils/dependency_config.py
Normal file
@@ -0,0 +1,102 @@
|
||||
from typing import Optional
|
||||
from src.common.logger import get_logger
|
||||
|
||||
logger = get_logger("dependency_config")
|
||||
|
||||
|
||||
class DependencyConfig:
|
||||
"""依赖管理配置类 - 现在使用全局配置"""
|
||||
|
||||
def __init__(self, global_config=None):
|
||||
self._global_config = global_config
|
||||
|
||||
def _get_config(self):
|
||||
"""获取全局配置对象"""
|
||||
if self._global_config is not None:
|
||||
return self._global_config
|
||||
|
||||
# 延迟导入以避免循环依赖
|
||||
try:
|
||||
from src.config.config import global_config
|
||||
return global_config
|
||||
except ImportError:
|
||||
logger.warning("无法导入全局配置,使用默认设置")
|
||||
return None
|
||||
|
||||
@property
|
||||
def auto_install(self) -> bool:
|
||||
"""是否启用自动安装"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.auto_install
|
||||
return True
|
||||
|
||||
@property
|
||||
def use_proxy(self) -> bool:
|
||||
"""是否使用代理"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.use_proxy
|
||||
return False
|
||||
|
||||
@property
|
||||
def proxy_url(self) -> str:
|
||||
"""代理URL"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.proxy_url
|
||||
return ""
|
||||
|
||||
@property
|
||||
def install_timeout(self) -> int:
|
||||
"""安装超时时间(秒)"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.auto_install_timeout
|
||||
return 300
|
||||
|
||||
@property
|
||||
def pip_options(self) -> list:
|
||||
"""pip安装选项"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.pip_options
|
||||
return [
|
||||
"--no-warn-script-location",
|
||||
"--disable-pip-version-check"
|
||||
]
|
||||
|
||||
@property
|
||||
def allowed_auto_install(self) -> bool:
|
||||
"""是否允许自动安装"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.allowed_auto_install
|
||||
return True
|
||||
|
||||
@property
|
||||
def prompt_before_install(self) -> bool:
|
||||
"""安装前是否提示用户"""
|
||||
config = self._get_config()
|
||||
if config and hasattr(config, 'dependency_management'):
|
||||
return config.dependency_management.prompt_before_install
|
||||
return False
|
||||
|
||||
|
||||
# 全局配置实例
|
||||
_global_dependency_config: Optional[DependencyConfig] = None
|
||||
|
||||
|
||||
def get_dependency_config() -> DependencyConfig:
|
||||
"""获取全局依赖配置实例"""
|
||||
global _global_dependency_config
|
||||
if _global_dependency_config is None:
|
||||
_global_dependency_config = DependencyConfig()
|
||||
return _global_dependency_config
|
||||
|
||||
|
||||
def configure_dependency_settings(**kwargs) -> None:
|
||||
"""配置依赖管理设置 - 注意:这个函数现在仅用于兼容性,实际配置需要修改bot_config.toml"""
|
||||
logger.info("依赖管理设置现在通过 bot_config.toml 的 [dependency_management] 节进行配置")
|
||||
logger.info(f"请求的配置更改: {kwargs}")
|
||||
logger.warning("configure_dependency_settings 函数仅用于兼容性,配置更改不会持久化")
|
||||
Reference in New Issue
Block a user