re-style: 格式化代码
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
本模块包含一个从Python包的“安装名”到其“导入名”的映射。
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
from typing import Optional
|
||||
from src.common.logger import get_logger
|
||||
|
||||
logger = get_logger("dependency_config")
|
||||
@@ -66,7 +65,7 @@ class DependencyConfig:
|
||||
|
||||
|
||||
# 全局配置实例
|
||||
_global_dependency_config: Optional[DependencyConfig] = None
|
||||
_global_dependency_config: DependencyConfig | None = None
|
||||
|
||||
|
||||
def get_dependency_config() -> DependencyConfig:
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import subprocess
|
||||
import sys
|
||||
import importlib
|
||||
import importlib.util
|
||||
from typing import List, Tuple, Optional, Any
|
||||
import subprocess
|
||||
import sys
|
||||
from typing import Any
|
||||
|
||||
from packaging import version
|
||||
from packaging.requirements import Requirement
|
||||
|
||||
@@ -19,7 +20,7 @@ class DependencyManager:
|
||||
负责检查和自动安装插件的Python包依赖
|
||||
"""
|
||||
|
||||
def __init__(self, auto_install: bool = True, use_mirror: bool = False, mirror_url: Optional[str] = None):
|
||||
def __init__(self, auto_install: bool = True, use_mirror: bool = False, mirror_url: str | None = None):
|
||||
"""初始化依赖管理器
|
||||
|
||||
Args:
|
||||
@@ -46,7 +47,7 @@ class DependencyManager:
|
||||
self.mirror_url = mirror_url or ""
|
||||
self.install_timeout = 300
|
||||
|
||||
def check_dependencies(self, dependencies: Any, plugin_name: str = "") -> Tuple[bool, List[str], List[str]]:
|
||||
def check_dependencies(self, dependencies: Any, plugin_name: str = "") -> tuple[bool, list[str], list[str]]:
|
||||
"""检查依赖包是否满足要求
|
||||
|
||||
Args:
|
||||
@@ -69,7 +70,7 @@ class DependencyManager:
|
||||
logger.info(f"{log_prefix}缺少依赖包: {dep.get_pip_requirement()}")
|
||||
missing_packages.append(dep.get_pip_requirement())
|
||||
except Exception as e:
|
||||
error_msg = f"检查依赖 {dep.package_name} 时发生错误: {str(e)}"
|
||||
error_msg = f"检查依赖 {dep.package_name} 时发生错误: {e!s}"
|
||||
error_messages.append(error_msg)
|
||||
logger.error(f"{log_prefix}{error_msg}")
|
||||
|
||||
@@ -84,7 +85,7 @@ class DependencyManager:
|
||||
|
||||
return all_satisfied, missing_packages, error_messages
|
||||
|
||||
def install_dependencies(self, packages: List[str], plugin_name: str = "") -> Tuple[bool, List[str]]:
|
||||
def install_dependencies(self, packages: list[str], plugin_name: str = "") -> tuple[bool, list[str]]:
|
||||
"""自动安装缺失的依赖包
|
||||
|
||||
Args:
|
||||
@@ -115,7 +116,7 @@ class DependencyManager:
|
||||
logger.error(f"{log_prefix}❌ 安装失败: {package}")
|
||||
except Exception as e:
|
||||
failed_packages.append(package)
|
||||
logger.error(f"{log_prefix}❌ 安装 {package} 时发生异常: {str(e)}")
|
||||
logger.error(f"{log_prefix}❌ 安装 {package} 时发生异常: {e!s}")
|
||||
|
||||
success = len(failed_packages) == 0
|
||||
if success:
|
||||
@@ -125,7 +126,7 @@ class DependencyManager:
|
||||
|
||||
return success, failed_packages
|
||||
|
||||
def check_and_install_dependencies(self, dependencies: Any, plugin_name: str = "") -> Tuple[bool, List[str]]:
|
||||
def check_and_install_dependencies(self, dependencies: Any, plugin_name: str = "") -> tuple[bool, list[str]]:
|
||||
"""检查并自动安装依赖(组合操作)
|
||||
|
||||
Args:
|
||||
@@ -163,7 +164,7 @@ class DependencyManager:
|
||||
return False, all_errors
|
||||
|
||||
@staticmethod
|
||||
def _normalize_dependencies(dependencies: Any) -> List[PythonDependency]:
|
||||
def _normalize_dependencies(dependencies: Any) -> list[PythonDependency]:
|
||||
"""将依赖列表标准化为PythonDependency对象"""
|
||||
normalized = []
|
||||
|
||||
@@ -277,7 +278,7 @@ class DependencyManager:
|
||||
|
||||
|
||||
# 全局依赖管理器实例
|
||||
_global_dependency_manager: Optional[DependencyManager] = None
|
||||
_global_dependency_manager: DependencyManager | None = None
|
||||
|
||||
|
||||
def get_dependency_manager() -> DependencyManager:
|
||||
@@ -288,7 +289,7 @@ def get_dependency_manager() -> DependencyManager:
|
||||
return _global_dependency_manager
|
||||
|
||||
|
||||
def configure_dependency_manager(auto_install: bool = True, use_mirror: bool = False, mirror_url: Optional[str] = None):
|
||||
def configure_dependency_manager(auto_install: bool = True, use_mirror: bool = False, mirror_url: str | None = None):
|
||||
"""配置全局依赖管理器"""
|
||||
global _global_dependency_manager
|
||||
_global_dependency_manager = DependencyManager(
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"""
|
||||
|
||||
import re
|
||||
from typing import Dict, Any, Tuple
|
||||
from typing import Any
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.config.config import MMC_VERSION
|
||||
|
||||
@@ -70,7 +71,7 @@ class VersionComparator:
|
||||
return normalized
|
||||
|
||||
@staticmethod
|
||||
def parse_version(version: str) -> Tuple[int, int, int]:
|
||||
def parse_version(version: str) -> tuple[int, int, int]:
|
||||
"""解析版本号为元组
|
||||
|
||||
Args:
|
||||
@@ -109,7 +110,7 @@ class VersionComparator:
|
||||
return 0
|
||||
|
||||
@staticmethod
|
||||
def check_forward_compatibility(current_version: str, max_version: str) -> Tuple[bool, str]:
|
||||
def check_forward_compatibility(current_version: str, max_version: str) -> tuple[bool, str]:
|
||||
"""检查向前兼容性(仅使用兼容性映射表)
|
||||
|
||||
Args:
|
||||
@@ -131,7 +132,7 @@ class VersionComparator:
|
||||
return False, ""
|
||||
|
||||
@staticmethod
|
||||
def is_version_in_range(version: str, min_version: str = "", max_version: str = "") -> Tuple[bool, str]:
|
||||
def is_version_in_range(version: str, min_version: str = "", max_version: str = "") -> tuple[bool, str]:
|
||||
"""检查版本是否在指定范围内,支持兼容性检查
|
||||
|
||||
Args:
|
||||
@@ -195,7 +196,7 @@ class VersionComparator:
|
||||
logger.info(f"添加兼容性映射:{base_normalized} -> {compatible_versions}")
|
||||
|
||||
@staticmethod
|
||||
def get_compatibility_info() -> Dict[str, list]:
|
||||
def get_compatibility_info() -> dict[str, list]:
|
||||
"""获取当前的兼容性映射表
|
||||
|
||||
Returns:
|
||||
@@ -232,7 +233,7 @@ class ManifestValidator:
|
||||
self.validation_errors = []
|
||||
self.validation_warnings = []
|
||||
|
||||
def validate_manifest(self, manifest_data: Dict[str, Any]) -> bool:
|
||||
def validate_manifest(self, manifest_data: dict[str, Any]) -> bool:
|
||||
"""验证manifest数据
|
||||
|
||||
Args:
|
||||
@@ -266,7 +267,7 @@ class ManifestValidator:
|
||||
if "name" not in author or not author["name"]:
|
||||
self.validation_errors.append("作者信息缺少name字段或为空")
|
||||
# url字段是可选的
|
||||
if "url" in author and author["url"]:
|
||||
if author.get("url"):
|
||||
url = author["url"]
|
||||
if not (url.startswith("http://") or url.startswith("https://")):
|
||||
self.validation_warnings.append("作者URL建议使用完整的URL格式")
|
||||
@@ -305,7 +306,7 @@ class ManifestValidator:
|
||||
|
||||
# 检查URL格式(可选字段)
|
||||
for url_field in ["homepage_url", "repository_url"]:
|
||||
if url_field in manifest_data and manifest_data[url_field]:
|
||||
if manifest_data.get(url_field):
|
||||
url: str = manifest_data[url_field]
|
||||
if not (url.startswith("http://") or url.startswith("https://")):
|
||||
self.validation_warnings.append(f"{url_field}建议使用完整的URL格式")
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
提供方便的权限检查装饰器,用于插件命令和其他需要权限验证的地方。
|
||||
"""
|
||||
|
||||
from collections.abc import Callable
|
||||
from functools import wraps
|
||||
from typing import Callable, Optional
|
||||
from inspect import iscoroutinefunction
|
||||
|
||||
from src.chat.message_receive.chat_stream import ChatStream
|
||||
from src.plugin_system.apis.logging_api import get_logger
|
||||
from src.plugin_system.apis.permission_api import permission_api
|
||||
from src.plugin_system.apis.send_api import text_to_stream
|
||||
from src.plugin_system.apis.logging_api import get_logger
|
||||
from src.chat.message_receive.chat_stream import ChatStream
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
def require_permission(permission_node: str, deny_message: Optional[str] = None):
|
||||
def require_permission(permission_node: str, deny_message: str | None = None):
|
||||
"""
|
||||
权限检查装饰器
|
||||
|
||||
@@ -90,7 +90,7 @@ def require_permission(permission_node: str, deny_message: Optional[str] = None)
|
||||
return decorator
|
||||
|
||||
|
||||
def require_master(deny_message: Optional[str] = None):
|
||||
def require_master(deny_message: str | None = None):
|
||||
"""
|
||||
Master权限检查装饰器
|
||||
|
||||
@@ -186,9 +186,7 @@ class PermissionChecker:
|
||||
return permission_api.is_master(chat_stream.platform, chat_stream.user_info.user_id)
|
||||
|
||||
@staticmethod
|
||||
async def ensure_permission(
|
||||
chat_stream: ChatStream, permission_node: str, deny_message: Optional[str] = None
|
||||
) -> bool:
|
||||
async def ensure_permission(chat_stream: ChatStream, permission_node: str, deny_message: str | None = None) -> bool:
|
||||
"""
|
||||
确保用户拥有指定权限,如果没有权限会发送消息并返回False
|
||||
|
||||
@@ -209,7 +207,7 @@ class PermissionChecker:
|
||||
return has_permission
|
||||
|
||||
@staticmethod
|
||||
async def ensure_master(chat_stream: ChatStream, deny_message: Optional[str] = None) -> bool:
|
||||
async def ensure_master(chat_stream: ChatStream, deny_message: str | None = None) -> bool:
|
||||
"""
|
||||
确保用户为Master用户,如果不是会发送消息并返回False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user