diff --git a/.github/workflows/architecture-observe.yml b/.github/workflows/architecture-observe.yml index 3af3b9a22..ebe4dcbd1 100644 --- a/.github/workflows/architecture-observe.yml +++ b/.github/workflows/architecture-observe.yml @@ -35,7 +35,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: '0.12.5' - python-version: '3.12' + python-version: '3.14' enable-cache: true cache-dependency-glob: | MoviePilot/pyproject.toml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e35e53a1..31b2091c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: '0.12.5' - python-version: '3.12' + python-version: '3.14' enable-cache: true cache-dependency-glob: | pyproject.toml diff --git a/app/agent/tools/impl/search_torrents.py b/app/agent/tools/impl/search_torrents.py index 3db922344..c514b7533 100644 --- a/app/agent/tools/impl/search_torrents.py +++ b/app/agent/tools/impl/search_torrents.py @@ -9,7 +9,7 @@ from app.agent.tools.base import MoviePilotTool from app.agent.tools.tags import ToolTag from app.chain.search import SearchChain from app.application.configuration import get_configured_system_config as SystemConfigOper -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.runtime.log import logger from app.schemas.types import MediaSource, MediaType, SystemConfigKey from app.domain.media import normalize_music_type diff --git a/app/api/dependencies/site.py b/app/api/dependencies/site.py index 0e1bb5293..7b0eab9ea 100644 --- a/app/api/dependencies/site.py +++ b/app/api/dependencies/site.py @@ -8,7 +8,7 @@ from app.api.data import get_async_db, get_db from app.api.dependencies.data import repository, transaction from app.application.site.mutation import SiteMutationCommand from app.application.site.query import SiteQueryService -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.domain import site as site_rules from app.foundation import url as url_tools from app.runtime.events import eventmanager diff --git a/app/api/endpoints/login.py b/app/api/endpoints/login.py index d5ae03024..2689d2583 100644 --- a/app/api/endpoints/login.py +++ b/app/api/endpoints/login.py @@ -15,7 +15,7 @@ from app.adapters.web.security.access import set_or_refresh_resource_token_cooki from app.application.security.token import create_access_token from app.api.context import get_api_runtime_config, resolve_api_runtime_config from app.application.configuration import ApiRuntimeConfig, get_configured_system_config -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.application.image import WallpaperHelper from app.schemas.types import SystemConfigKey diff --git a/app/api/endpoints/site.py b/app/api/endpoints/site.py index 543fdd45c..ebd257279 100644 --- a/app/api/endpoints/site.py +++ b/app/api/endpoints/site.py @@ -37,7 +37,7 @@ from app.api.dependencies.site import ( get_site_query_service, get_site_sync_query_service, ) -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.runtime.log import logger from app.application.scheduling import Scheduler from app.schemas.types import SystemConfigKey, MediaType diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 662b4bd38..0b8491ae0 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -13,7 +13,7 @@ import aiofiles import anyio import pillow_avif # noqa: F401 # pylint: disable=unused-import # AVIF 注册副作用 from anyio import Path as AsyncPath -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from fastapi import Body, Depends, HTTPException, Header, Request, Response from fastapi.responses import StreamingResponse diff --git a/app/application/security/auth.py b/app/application/security/auth.py index ce867de43..a002fa8c3 100644 --- a/app/application/security/auth.py +++ b/app/application/security/auth.py @@ -8,7 +8,7 @@ from app.schemas.token import Token as _SchemaToken from app.schemas.token import TokenPayload as _SchemaTokenPayload from app.application.security.token import create_access_token from app.runtime.config import settings -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.schemas.types import SystemConfigKey from app.foundation.singleton import Singleton diff --git a/app/chain/search.py b/app/chain/search.py index 00660eb44..5de00e2d0 100644 --- a/app/chain/search.py +++ b/app/chain/search.py @@ -23,7 +23,7 @@ from app.domain.metainfo import MetaInfo from app.domain.context import MusicInfo from app.application.configuration import get_configured_system_config from app.runtime.progress import AsyncProgressHelper, ProgressHelper -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.application.search.state import ( SearchStateService, normalize_search_params, diff --git a/app/chain/site.py b/app/chain/site.py index b92f7c4e4..2fae524fc 100644 --- a/app/chain/site.py +++ b/app/chain/site.py @@ -4,7 +4,7 @@ from datetime import datetime from typing import Any, Callable, Optional, Tuple, Union, Dict from urllib.parse import urljoin -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from lxml import etree from app.chain import ChainBase diff --git a/app/chain/torrents.py b/app/chain/torrents.py index de5022a25..f099c6f13 100644 --- a/app/chain/torrents.py +++ b/app/chain/torrents.py @@ -3,7 +3,7 @@ import re import traceback from typing import Callable, Dict, List, Union, Optional -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.chain import ChainBase from app.chain.media import MediaChain diff --git a/app/modules/indexer/__init__.py b/app/modules/indexer/__init__.py index f04763817..1841a4edc 100644 --- a/app/modules/indexer/__init__.py +++ b/app/modules/indexer/__init__.py @@ -5,7 +5,7 @@ from app.domain.context import Context, SubtitleInfo, TorrentInfo from app.application.site.health import get_configured_site_health_service from app.application.site.query import get_configured_site_query_service from app.foundation.reflection import ModuleHelper -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.runtime.log import logger from app.modules import _ModuleBase from app.modules.indexer.parser import SiteParserBase diff --git a/app/modules/subtitle/__init__.py b/app/modules/subtitle/__init__.py index c4d51fb22..59f1bb953 100644 --- a/app/modules/subtitle/__init__.py +++ b/app/modules/subtitle/__init__.py @@ -7,7 +7,7 @@ from lxml import etree from app.runtime.config import settings from app.domain.context import Context from app.application.site.query import get_configured_site_query_service -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.runtime.log import logger from app.modules import _ModuleBase from app.schemas.types import ModuleType, OtherModulesType diff --git a/app/scheduler.py b/app/scheduler.py index 556c7dd27..5882034ed 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -40,7 +40,7 @@ from app.application.messaging.message import MessageHelper from app.runtime.progress import AsyncProgressHelper, ProgressHelper from app.adapters.external.server import MoviePilotServerHelper from app.runtime.extensions.service_config import ServiceConfigHelper -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.runtime.log import logger from app.schemas.message import Message from app.schemas.message import MessageType diff --git a/app/sdk/network.py b/app/sdk/network.py index dc2ff8697..38e4bb5c8 100644 --- a/app/sdk/network.py +++ b/app/sdk/network.py @@ -7,7 +7,7 @@ from app.adapters.network.http import AsyncRequestUtils, RequestUtils from app.adapters.external.location import WebUtils from app.application.rss import RssHelper from app.application.security.url import SecurityUtils -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module __all__ = [ diff --git a/app/startup/modules_initializer.py b/app/startup/modules_initializer.py index 89ed68bfa..c8ea18f97 100644 --- a/app/startup/modules_initializer.py +++ b/app/startup/modules_initializer.py @@ -8,7 +8,7 @@ from app.chain.tmdb import TmdbChain # SitesHelper涉及资源包拉取,提前引入并容错提示 try: - from app.application.site.sites import SitesHelper # noqa + from app.application.site.sites import SitesHelper # noqa # pylint: disable=import-error,no-name-in-module except ImportError as e: SitesHelper = None error_message = f"错误: {str(e)}\n站点认证及索引相关资源导入失败,请尝试重建容器或手动拉取资源" diff --git a/app/startup/plugins_initializer.py b/app/startup/plugins_initializer.py index 73273774c..984602df2 100644 --- a/app/startup/plugins_initializer.py +++ b/app/startup/plugins_initializer.py @@ -29,7 +29,7 @@ from app.runtime.extensions.plugin.system import ( configure_plugin_system, ) from app.runtime.managed_resources import acquire_managed_resource -from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module +from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module from app.adapters.external.server import MoviePilotServerHelper from app.adapters.external.market import ( PluginHelper, diff --git a/scripts/local_setup.py b/scripts/local_setup.py index 7d88a2e3d..8035e10f8 100644 --- a/scripts/local_setup.py +++ b/scripts/local_setup.py @@ -2099,7 +2099,7 @@ def _load_auth_site_definitions_inner() -> dict[str, Any]: if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) - from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module + from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module auth_sites = SitesHelper().get_authsites() or {} definitions: dict[str, Any] = {} @@ -2440,7 +2440,7 @@ def _apply_local_system_config_inner(config_payload: dict[str, Any]) -> None: ): system_config.set(SystemConfigKey.UserSiteAuthParams, site_auth_item) try: - from app.application.site.sites import SitesHelper # pylint: disable=no-name-in-module + from app.application.site.sites import SitesHelper # pylint: disable=import-error,no-name-in-module status, msg = SitesHelper().check_user( site_auth_item.get("site"), site_auth_item.get("params") diff --git a/tests/test_transfer_overwrite_declined.py b/tests/test_transfer_overwrite_declined.py index 340e02115..8bb91b620 100644 --- a/tests/test_transfer_overwrite_declined.py +++ b/tests/test_transfer_overwrite_declined.py @@ -10,7 +10,7 @@ from types import SimpleNamespace from unittest.mock import MagicMock, patch from app.chain.transfer import TransferChain -from app.schemas import TransferInfo +from app.schemas.transfer import TransferInfo from app.schemas.types import EventType from tests.test_transfer_job_manager import FakeMedia, make_task, make_transfer_chain