6da59cfb07
* fix: install plugin requirements before first load * fix: handle pip option arguments correctly * fix: harden pip install input parsing * refactor: simplify pip install input parsing * fix: align plugin dependency install handling * fix: respect configured pip index overrides * test: parameterize plugin dependency install flows * refactor: simplify multiline pip input parsing * fix: install plugin dependencies before loading * fix: protect core dependencies from downgrades and simplify package input splitting * fix: enhance dependency conflict reporting and improve user-facing warnings * refactor: preserve pip log indentation and fix CodeQL URL sanitization alert * fix: explicit re-export for DependencyConflictError to satisfy ruff F401 * test: enhance index override verification in pip installer tests * fix: correctly map pip ERROR and WARNING outputs to proper log levels * refactor: show specific version conflicts in DependencyConflictError and revert log level mapping * refactor: simplify install() by decoupling pip logging, failure classification and constraint file management * refactor: further simplify pip installer and requirement parsing logic * refactor: simplify dependency installation logic and improve circular requirement reporting * style: organize imports in astrbot/core/__init__.py * refactor: optimize requirement parsing efficiency and flatten pip installer API * style: fix import sorting in astrbot/core/__init__.py * refactor: consolidate requirement parsing, optimize core protection, and improve exception propagation * fix: preserve valid pip requirement parsing * fix: skip empty pip installs and preserve blank output * chore: normalize gitignore entry style * fix: tighten pip trust and requirement parsing * refactor: centralize pip install parsing and failure handling * fix: redact pip argv credentials in logs * fix: surface plugin dependency install errors * fix: cache core constraints and clarify requirement installs * fix: harden pip requirement parsing for plugin installs * fix: simplify pip installer parsing internals * fix: tighten pip installer parsing and redaction * refactor: simplify plugin dependency install flow * fix: preserve core constraint conflict errors * fix: harden pip installer fallback resolution * refactor: split pip requirement and constraint helpers * refactor: simplify pip installer helper flow * refactor: streamline requirement precheck helpers * refactor: clarify core constraint resolution * fix: surface pip install failures explicitly * refactor: separate pip conflict context parsing * fix: harden core constraint resolution * test: cover pip installer failure call sites * refactor: remove dead requirements fallback helper * refactor: narrow core constraint error handling * refactor: unify requirement iteration * refactor: share requirement name parsing * test: align pip helper coverage * fix: bind pip output limit at runtime * refactor: reuse core requirement parser for tokens
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
import os
|
|
|
|
from astrbot.core.config import AstrBotConfig
|
|
from astrbot.core.config.default import DB_PATH
|
|
from astrbot.core.db.sqlite import SQLiteDatabase
|
|
from astrbot.core.file_token_service import FileTokenService
|
|
from astrbot.core.utils.pip_installer import (
|
|
DependencyConflictError as DependencyConflictError,
|
|
)
|
|
from astrbot.core.utils.pip_installer import (
|
|
PipInstaller,
|
|
)
|
|
from astrbot.core.utils.requirements_utils import (
|
|
RequirementsPrecheckFailed as RequirementsPrecheckFailed,
|
|
)
|
|
from astrbot.core.utils.requirements_utils import (
|
|
find_missing_requirements as find_missing_requirements,
|
|
)
|
|
from astrbot.core.utils.requirements_utils import (
|
|
find_missing_requirements_or_raise as find_missing_requirements_or_raise,
|
|
)
|
|
from astrbot.core.utils.shared_preferences import SharedPreferences
|
|
from astrbot.core.utils.t2i.renderer import HtmlRenderer
|
|
|
|
from .log import LogBroker, LogManager # noqa
|
|
from .utils.astrbot_path import get_astrbot_data_path
|
|
|
|
# 初始化数据存储文件夹
|
|
os.makedirs(get_astrbot_data_path(), exist_ok=True)
|
|
|
|
DEMO_MODE = os.getenv("DEMO_MODE", "False").strip().lower() in ("true", "1", "t")
|
|
|
|
astrbot_config = AstrBotConfig()
|
|
t2i_base_url = astrbot_config.get("t2i_endpoint", "https://t2i.soulter.top/text2img")
|
|
html_renderer = HtmlRenderer(t2i_base_url)
|
|
logger = LogManager.GetLogger(log_name="astrbot")
|
|
LogManager.configure_logger(logger, astrbot_config)
|
|
LogManager.configure_trace_logger(astrbot_config)
|
|
db_helper = SQLiteDatabase(DB_PATH)
|
|
# 简单的偏好设置存储, 这里后续应该存储到数据库中, 一些部分可以存储到配置中
|
|
sp = SharedPreferences(db_helper=db_helper)
|
|
# 文件令牌服务
|
|
file_token_service = FileTokenService()
|
|
pip_installer = PipInstaller(
|
|
astrbot_config.get("pip_install_arg", ""),
|
|
astrbot_config.get("pypi_index_url", None),
|
|
)
|