Skip to content

Commit 7b7dde7

Browse files
committed
🎨 lint: use ruff 0.13 and enable future-annotations option
1 parent dc4faaf commit 7b7dde7

33 files changed

+308
-252
lines changed

pyproject.toml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ dependencies = [
2929
"dict2xml>=1.7.7",
3030
"httpx[http2,socks]>=0.28.1",
3131
"tomli>=2.2.1; python_version < '3.11'",
32-
"pydantic>=2.12.0a1",
32+
# "pydantic>=2.12.0a1",
33+
"pydantic==2.11.9",
3334
"returns>=0.26.0",
3435
]
35-
optional-dependencies.mcp = ["fastmcp>=2.10.2"]
36+
optional-dependencies.mcp = ["fastmcp>=2.12.3"]
3637

3738
[project.urls]
3839
Homepage = "https://github.com/yutto-dev/yutto"
@@ -45,11 +46,11 @@ yutto = "yutto.__main__:main"
4546

4647
[dependency-groups]
4748
dev = [
48-
"pyright>=1.1.404",
49-
"ruff>=0.12.11",
50-
"typos>=1.35.6",
51-
"pytest>=8.4.1",
52-
"pytest-rerunfailures>=16.0",
49+
"pyright>=1.1.405",
50+
"ruff>=0.13.0",
51+
"typos>=1.36.2",
52+
"pytest>=8.4.2",
53+
"pytest-rerunfailures>=16.0.1",
5354
"syrupy>=4.9.1",
5455
"pytest-codspeed>=4.0.0",
5556
]
@@ -111,11 +112,11 @@ select = [
111112
"RUF100",
112113
]
113114
ignore = [
114-
"E501", # line too long, duplicate with ruff fmt
115-
"F401", # imported but unused, duplicate with pyright
116-
"F841", # local variable is assigned to but never used, duplicate with pyright
117-
"UP038", # It will cause the performance regression on python3.10
115+
"E501", # line too long, duplicate with ruff fmt
116+
"F401", # imported but unused, duplicate with pyright
117+
"F841", # local variable is assigned to but never used, duplicate with pyright
118118
]
119+
future-annotations = true
119120

120121
[tool.ruff.lint.isort]
121122
required-imports = ["from __future__ import annotations"]
@@ -124,6 +125,7 @@ combine-as-imports = true
124125

125126
[tool.ruff.lint.flake8-type-checking]
126127
runtime-evaluated-base-classes = ["pydantic.BaseModel"]
128+
runtime-evaluated-decorators = ["fastmcp.FastMCP.tool"]
127129

128130
[tool.ruff.lint.per-file-ignores]
129131
"setup.py" = ["I"]

src/yutto/api/bangumi.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,30 @@
66
from yutto.exceptions import NoAccessPermissionError, UnSupportedTypeError
77
from yutto.media.codec import audio_codec_map, video_codec_map
88
from yutto.types import (
9-
AudioUrlMeta,
10-
AvId,
119
BvId,
1210
CId,
1311
EpisodeId,
14-
MediaId,
15-
MultiLangSubtitle,
1612
SeasonId,
17-
VideoUrlMeta,
1813
format_ids,
1914
)
2015
from yutto.utils.console.logger import Logger
21-
from yutto.utils.fetcher import Fetcher, FetcherContext
16+
from yutto.utils.fetcher import Fetcher
2217
from yutto.utils.functional import data_has_chained_keys
2318
from yutto.utils.metadata import MetaData
2419
from yutto.utils.time import get_time_stamp_by_now
2520

2621
if TYPE_CHECKING:
2722
from httpx import AsyncClient
2823

24+
from yutto.types import (
25+
AudioUrlMeta,
26+
AvId,
27+
MediaId,
28+
MultiLangSubtitle,
29+
VideoUrlMeta,
30+
)
31+
from yutto.utils.fetcher import FetcherContext
32+
2933

3034
class BangumiListItem(TypedDict):
3135
id: int

src/yutto/api/cheese.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,28 @@
66
from yutto.media.codec import audio_codec_map, video_codec_map
77
from yutto.types import (
88
AId,
9-
AudioUrlMeta,
10-
AvId,
119
CId,
1210
EpisodeId,
13-
MultiLangSubtitle,
1411
SeasonId,
15-
VideoUrlMeta,
1612
format_ids,
1713
)
1814
from yutto.utils.console.logger import Logger
19-
from yutto.utils.fetcher import Fetcher, FetcherContext
15+
from yutto.utils.fetcher import Fetcher
2016
from yutto.utils.functional import data_has_chained_keys
2117
from yutto.utils.metadata import MetaData
2218
from yutto.utils.time import get_time_stamp_by_now
2319

2420
if TYPE_CHECKING:
2521
from httpx import AsyncClient
2622

23+
from yutto.types import (
24+
AudioUrlMeta,
25+
AvId,
26+
MultiLangSubtitle,
27+
VideoUrlMeta,
28+
)
29+
from yutto.utils.fetcher import FetcherContext
30+
2731

2832
class CheeseListItem(TypedDict):
2933
id: int

src/yutto/api/collection.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
import math
55
from typing import TYPE_CHECKING, TypedDict
66

7-
from yutto.types import AvId, BvId, MId, SeriesId
8-
from yutto.utils.fetcher import Fetcher, FetcherContext
7+
from yutto.types import BvId
8+
from yutto.utils.fetcher import Fetcher
99

1010
if TYPE_CHECKING:
1111
from httpx import AsyncClient
1212

13+
from yutto.types import AvId, MId, SeriesId
14+
from yutto.utils.fetcher import FetcherContext
15+
1316

1417
class CollectionDetailsItem(TypedDict):
1518
id: int

src/yutto/api/danmaku.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
from biliass import get_danmaku_meta_size
77

88
from yutto.api.user_info import get_user_info
9-
from yutto.utils.fetcher import Fetcher, FetcherContext
9+
from yutto.utils.fetcher import Fetcher
1010

1111
if TYPE_CHECKING:
1212
import httpx
1313

1414
from yutto.types import AvId, CId
1515
from yutto.utils.danmaku import DanmakuData, DanmakuSaveType
16+
from yutto.utils.fetcher import FetcherContext
1617

1718

1819
async def get_xml_danmaku(ctx: FetcherContext, client: httpx.AsyncClient, cid: CId) -> str:

src/yutto/api/space.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55

66
from yutto.api.user_info import encode_wbi, get_wbi_img
77
from yutto.exceptions import NotLoginError
8-
from yutto.types import AvId, BvId, FavouriteMetaData, FId, MId, SeriesId
8+
from yutto.types import BvId, FavouriteMetaData, FId
99
from yutto.utils.console.logger import Logger
10-
from yutto.utils.fetcher import Fetcher, FetcherContext
10+
from yutto.utils.fetcher import Fetcher
1111

1212
if TYPE_CHECKING:
1313
from httpx import AsyncClient
1414

15+
from yutto.types import AvId, MId, SeriesId
16+
from yutto.utils.fetcher import FetcherContext
17+
1518

1619
# 个人空间·全部
1720
async def get_user_space_all_videos_avids(ctx: FetcherContext, client: AsyncClient, mid: MId) -> list[AvId]:

src/yutto/api/ugc_video.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,29 @@
1111
from yutto.media.codec import audio_codec_map, video_codec_map
1212
from yutto.types import (
1313
AId,
14-
AudioUrlMeta,
15-
AvId,
1614
BvId,
1715
CId,
1816
EpisodeId,
19-
MultiLangSubtitle,
20-
VideoUrlMeta,
2117
format_ids,
2218
)
2319
from yutto.utils.console.logger import Logger
24-
from yutto.utils.fetcher import Fetcher, FetcherContext
20+
from yutto.utils.fetcher import Fetcher
2521
from yutto.utils.functional.data_access import data_has_chained_keys
26-
from yutto.utils.metadata import Actor, ChapterInfoData, MetaData
22+
from yutto.utils.metadata import Actor, MetaData
2723
from yutto.utils.time import get_time_stamp_by_now
2824

2925
if TYPE_CHECKING:
3026
from httpx import AsyncClient
3127

28+
from yutto.types import (
29+
AudioUrlMeta,
30+
AvId,
31+
MultiLangSubtitle,
32+
VideoUrlMeta,
33+
)
34+
from yutto.utils.fetcher import FetcherContext
35+
from yutto.utils.metadata import ChapterInfoData
36+
3237

3338
class _UgcVideoPageInfo(TypedDict):
3439
part: str

src/yutto/api/user_info.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111

1212
from yutto.types import UserInfo
1313
from yutto.utils.asynclib import async_cache
14-
from yutto.utils.fetcher import Fetcher, FetcherContext
14+
from yutto.utils.fetcher import Fetcher
1515

1616
if TYPE_CHECKING:
1717
from httpx import AsyncClient
1818

19+
from yutto.utils.fetcher import FetcherContext
20+
1921

2022
class WbiImg(TypedDict):
2123
img_key: str

src/yutto/download_manager.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
import httpx
1111
from biliass import BlockOptions
12-
from httpx import AsyncClient
13-
from returns.maybe import Maybe, Nothing, Some
12+
from returns.maybe import Nothing, Some
1413

1514
from yutto.downloader.downloader import DownloadState, process_download
1615
from yutto.exceptions import ErrorCode
@@ -33,7 +32,7 @@
3332
from yutto.utils.asynclib import sleep_with_status_bar_refresh
3433
from yutto.utils.console.logger import Badge, Logger
3534
from yutto.utils.danmaku import DanmakuOptions
36-
from yutto.utils.fetcher import Fetcher, FetcherContext, create_client
35+
from yutto.utils.fetcher import Fetcher, create_client
3736
from yutto.utils.time import TIME_FULL_FMT
3837
from yutto.validator import (
3938
validate_batch_arguments,
@@ -44,7 +43,11 @@
4443
import argparse
4544
from collections.abc import Callable
4645

46+
from httpx import AsyncClient
47+
from returns.maybe import Maybe
48+
4749
from yutto.types import EpisodeData
50+
from yutto.utils.fetcher import FetcherContext
4851

4952

5053
@dataclass

src/yutto/downloader/downloader.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
from yutto.utils.console.colorful import colored_string
1414
from yutto.utils.console.logger import Badge, Logger
1515
from yutto.utils.danmaku import write_danmaku
16-
from yutto.utils.fetcher import Fetcher, FetcherContext
16+
from yutto.utils.fetcher import Fetcher
1717
from yutto.utils.ffmpeg import FFmpeg, FFmpegCommandBuilder
1818
from yutto.utils.file_buffer import AsyncFileBuffer
1919
from yutto.utils.functional import filter_none_values, xmerge
20-
from yutto.utils.metadata import ChapterInfoData, write_chapter_info, write_metadata
20+
from yutto.utils.metadata import write_chapter_info, write_metadata
2121
from yutto.utils.subtitle import write_subtitle
2222

2323
if TYPE_CHECKING:
@@ -27,6 +27,8 @@
2727
import httpx
2828

2929
from yutto.types import AudioUrlMeta, DownloaderOptions, EpisodeData, VideoUrlMeta
30+
from yutto.utils.fetcher import FetcherContext
31+
from yutto.utils.metadata import ChapterInfoData
3032

3133

3234
def slice_blocks(start: int, total_size: int | None, block_size: int | None = None) -> list[tuple[int, int | None]]:

0 commit comments

Comments
 (0)