Skip to content

Commit af196d3

Browse files
committed
lint
1 parent c72f222 commit af196d3

File tree

16 files changed

+111
-108
lines changed

16 files changed

+111
-108
lines changed

examples/external_example/templates/example_template/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
import json
44
from collections import deque
55
from pathlib import Path
6-
from typing import Any, Dict, Optional
6+
from typing import TYPE_CHECKING, Any, Optional
77

88
import jinja2 as jj
99
from cookit.jinja import make_register_jinja_filter_deco
1010
from nonebot import get_plugin_config, require
11-
from nonebot_plugin_picstatus.bg_provider import BgData
1211
from nonebot_plugin_picstatus.templates import pic_template
1312
from nonebot_plugin_picstatus.templates.pw_render import (
1413
ROUTE_URL,
@@ -31,6 +30,9 @@
3130

3231
from nonebot_plugin_htmlrender import get_new_page
3332

33+
if TYPE_CHECKING:
34+
from nonebot_plugin_picstatus.bg_provider import BgData
35+
3436
RES_DIR = Path(__file__).parent / "res"
3537

3638
template_env = jj.Environment(
@@ -76,7 +78,7 @@ class TemplateConfig(BaseModel):
7678
"time_counter",
7779
},
7880
)
79-
async def example_template(collected: Dict[str, Any], bg: BgData, **_):
81+
async def example_template(collected: dict[str, Any], bg: "BgData", **_):
8082
template = template_env.get_template("index.html.jinja")
8183
html = await template.render_async(d=collected, config=template_config)
8284

nonebot_plugin_picstatus/__main__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def check_empty_arg_rule(arg: BaseMessage = CommandArg()):
2424
def trigger_rule():
2525
rule = Rule(check_empty_arg_rule)
2626
if config.ps_need_at:
27-
rule = rule & to_me()
27+
rule &= to_me()
2828
return rule
2929

3030

nonebot_plugin_picstatus/bg_provider.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import asyncio as aio
22
import mimetypes
33
import random
4-
from pathlib import Path
5-
from typing import Awaitable, Callable, Dict, List, NamedTuple, Optional, TypeVar
4+
from collections.abc import Awaitable
5+
from typing import TYPE_CHECKING, Callable, NamedTuple, Optional, TypeVar
66

77
import anyio
88
from httpx import AsyncClient, Response
99
from nonebot import logger
1010

1111
from .config import DEFAULT_BG_PATH, config
1212

13+
if TYPE_CHECKING:
14+
from pathlib import Path
15+
1316

1417
class BgData(NamedTuple):
1518
data: bytes
@@ -19,10 +22,10 @@ class BgData(NamedTuple):
1922
BGProviderType = Callable[[], Awaitable[BgData]]
2023
TBP = TypeVar("TBP", bound=BGProviderType)
2124

22-
registered_bg_providers: Dict[str, BGProviderType] = {}
25+
registered_bg_providers: dict[str, BGProviderType] = {}
2326

2427

25-
def get_bg_files() -> List[Path]:
28+
def get_bg_files() -> list["Path"]:
2629
if not config.ps_bg_local_path.exists():
2730
logger.warning("Custom background path does not exist, fallback to default")
2831
return [DEFAULT_BG_PATH]
@@ -133,8 +136,8 @@ def __init__(self, preload_count: int):
133136
if preload_count < 1:
134137
raise ValueError("preload_count must be greater than 0")
135138
self.preload_count = preload_count
136-
self.backgrounds: List[BgData] = []
137-
self.tasks: List[aio.Task[None]] = []
139+
self.backgrounds: list[BgData] = []
140+
self.tasks: list[aio.Task[None]] = []
138141
self.task_signal: Optional[aio.Future[None]] = None
139142
self.signal_wait_lock = aio.Lock()
140143

nonebot_plugin_picstatus/collectors/__init__.py

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,9 @@
33
import time
44
from abc import abstractmethod
55
from collections import deque
6+
from collections.abc import Awaitable
67
from pathlib import Path
7-
from typing import (
8-
Any,
9-
Awaitable,
10-
Callable,
11-
Deque,
12-
Dict,
13-
Generic,
14-
Optional,
15-
Type,
16-
TypeVar,
17-
Union,
18-
)
8+
from typing import Any, Callable, Generic, Optional, TypeVar, Union
199
from typing_extensions import override
2010

2111
from nonebot import logger
@@ -68,13 +58,13 @@ async def get(self) -> T:
6858
return data
6959

7060

71-
class BasePeriodicCollector(Collector[T, Deque[T]], Generic[T]):
61+
class BasePeriodicCollector(Collector[T, deque[T]], Generic[T]):
7262
def __init__(self, size: int = config.ps_default_collect_cache_size) -> None:
7363
super().__init__()
7464
self.data = deque(maxlen=size)
7565

7666
@override
77-
async def get(self) -> Deque[T]:
67+
async def get(self) -> deque[T]:
7868
return self.data
7969

8070
async def collect(self):
@@ -88,12 +78,12 @@ async def collect(self):
8878
self.data.append(data)
8979

9080

91-
registered_collectors: Dict[str, Type[Collector]] = {}
92-
enabled_collectors: Dict[str, Collector] = {}
81+
registered_collectors: dict[str, type[Collector]] = {}
82+
enabled_collectors: dict[str, Collector] = {}
9383

9484

9585
def collector(name: str):
96-
def deco(cls: Type[TC]) -> Type[TC]:
86+
def deco(cls: type[TC]) -> type[TC]:
9787
if name in registered_collectors:
9888
raise ValueError(f"Collector {name} already exists")
9989
registered_collectors[name] = cls
@@ -121,7 +111,7 @@ async def enable_collectors(*names: str):
121111
await collect_perodic_collectors()
122112

123113

124-
def functional_collector(cls: Type[Collector], name: Optional[str] = None):
114+
def functional_collector(cls: type[Collector], name: Optional[str] = None):
125115
def deco(func: TCF) -> TCF:
126116
collector_name = name or func.__name__
127117
if not collector_name:
@@ -175,7 +165,7 @@ async def _get(self) -> R:
175165
return await self._calc(past, self.last_obj, time_passed)
176166

177167

178-
async def collect_all() -> Dict[str, Any]:
168+
async def collect_all() -> dict[str, Any]:
179169
async def get(name: str):
180170
return name, await enabled_collectors[name].get()
181171

nonebot_plugin_picstatus/collectors/bot.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import asyncio
22
from dataclasses import dataclass
33
from datetime import datetime
4-
from typing import List, Optional, Tuple
4+
from typing import TYPE_CHECKING, Optional
55

66
from nonebot import get_bots, logger
7-
from nonebot.adapters import Bot as BaseBot
87
from nonebot.matcher import current_bot
98

109
from ..config import config
@@ -17,6 +16,9 @@
1716
from ..util import format_timedelta
1817
from . import normal_collector
1918

19+
if TYPE_CHECKING:
20+
from nonebot.adapters import Bot as BaseBot
21+
2022
try:
2123
from nonebot.adapters.onebot.v11 import Bot as OBV11Bot
2224
except ImportError:
@@ -33,7 +35,7 @@ class BotStatus:
3335
msg_sent: str
3436

3537

36-
async def get_ob11_msg_num(bot: BaseBot) -> Tuple[Optional[int], Optional[int]]:
38+
async def get_ob11_msg_num(bot: "BaseBot") -> tuple[Optional[int], Optional[int]]:
3739
if not (config.ps_ob_v11_use_get_status and OBV11Bot and isinstance(bot, OBV11Bot)):
3840
return None, None
3941

@@ -54,7 +56,7 @@ async def get_ob11_msg_num(bot: BaseBot) -> Tuple[Optional[int], Optional[int]]:
5456
return msg_rec, msg_sent
5557

5658

57-
async def get_bot_status(bot: BaseBot, now_time: datetime) -> BotStatus:
59+
async def get_bot_status(bot: "BaseBot", now_time: datetime) -> BotStatus:
5860
nick = (
5961
((info := bot_info_cache[bot.self_id]).user_displayname or info.user_name)
6062
if (not config.ps_use_env_nick) and (bot.self_id in bot_info_cache)
@@ -85,7 +87,7 @@ async def get_bot_status(bot: BaseBot, now_time: datetime) -> BotStatus:
8587

8688

8789
@normal_collector()
88-
async def bots() -> List[BotStatus]:
90+
async def bots() -> list[BotStatus]:
8991
now_time = datetime.now().astimezone()
9092
return (
9193
[await get_bot_status(current_bot.get(), now_time)]

nonebot_plugin_picstatus/collectors/cpu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class CpuFreq:
1919
async def cpu_brand() -> str:
2020
try:
2121
brand = (
22-
cast(str, get_cpu_info().get("brand_raw", ""))
22+
cast("str", get_cpu_info().get("brand_raw", ""))
2323
.split("@", maxsplit=1)[0]
2424
.strip()
2525
)

nonebot_plugin_picstatus/collectors/disk.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dataclasses import dataclass
2-
from typing import Dict, List, Optional, Union
2+
from typing import Optional, Union
33

44
import psutil
55
from nonebot import logger
@@ -35,7 +35,7 @@ class DiskIO:
3535

3636

3737
@periodic_collector()
38-
async def disk_usage() -> List[DiskUsageType]:
38+
async def disk_usage() -> list[DiskUsageType]:
3939
def get_one(disk: sdiskpart) -> Optional[DiskUsageType]:
4040
mountpoint = disk.mountpoint
4141

@@ -71,13 +71,13 @@ def get_one(disk: sdiskpart) -> Optional[DiskUsageType]:
7171

7272

7373
@collector("disk_io")
74-
class DiskIOCollector(TimeBasedCounterCollector[Dict[str, sdiskio], List[DiskIO]]):
74+
class DiskIOCollector(TimeBasedCounterCollector[dict[str, sdiskio], list[DiskIO]]):
7575
async def _calc(
7676
self,
77-
past: Dict[str, sdiskio],
78-
now: Dict[str, sdiskio],
77+
past: dict[str, sdiskio],
78+
now: dict[str, sdiskio],
7979
time_passed: float,
80-
) -> List[DiskIO]:
80+
) -> list[DiskIO]:
8181
def calc_one(name: str, past_it: sdiskio, now_it: sdiskio) -> Optional[DiskIO]:
8282
if match_list_regexp(config.ps_ignore_disk_ios, name):
8383
# logger.info(f"IO统计 磁盘 {name} 匹配 {regex.re.pattern},忽略")
@@ -98,5 +98,5 @@ def calc_one(name: str, past_it: sdiskio, now_it: sdiskio) -> Optional[DiskIO]:
9898
res.sort(key=lambda x: x.read + x.write, reverse=True)
9999
return res
100100

101-
async def _get_obj(self) -> Dict[str, sdiskio]:
101+
async def _get_obj(self) -> dict[str, sdiskio]:
102102
return psutil.disk_io_counters(perdisk=True)

nonebot_plugin_picstatus/collectors/misc.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import time
44
from datetime import datetime
55
from pathlib import Path
6-
from typing import Dict, Optional, Tuple, Union
6+
from typing import Optional, Union
77

88
import nonebot
99
import psutil
@@ -13,9 +13,9 @@
1313
from . import first_time_collector, normal_collector, periodic_collector
1414

1515

16-
def parse_env(env: str) -> Dict[str, Optional[str]]:
16+
def parse_env(env: str) -> dict[str, Optional[str]]:
1717
env_lines = env.strip().splitlines()
18-
env_dict: Dict[str, Optional[str]] = {}
18+
env_dict: dict[str, Optional[str]] = {}
1919

2020
for line in env_lines:
2121
if "=" not in line:
@@ -28,7 +28,7 @@ def parse_env(env: str) -> Dict[str, Optional[str]]:
2828
return env_dict
2929

3030

31-
def parse_env_file(env_file: Union[str, Path]) -> Optional[Dict[str, Optional[str]]]:
31+
def parse_env_file(env_file: Union[str, Path]) -> Optional[dict[str, Optional[str]]]:
3232
if not isinstance(env_file, Path):
3333
env_file = Path(env_file)
3434
if not env_file.exists():
@@ -38,7 +38,7 @@ def parse_env_file(env_file: Union[str, Path]) -> Optional[Dict[str, Optional[st
3838

3939

4040
# Thanks to https://github.com/nonedesktop/nonebot-plugin-guestool/blob/main/nonebot_plugin_guestool/info.py
41-
def get_linux_name_version() -> Optional[Tuple[str, str]]:
41+
def get_linux_name_version() -> Optional[tuple[str, str]]:
4242
env = parse_env_file("/etc/os-release")
4343
if env and (name := env.get("NAME")) and (version_id := env.get("VERSION_ID")):
4444
return name, version_id

nonebot_plugin_picstatus/collectors/network.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import time
33
from dataclasses import dataclass
4-
from typing import Dict, List, Optional, Union
4+
from typing import Optional, Union
55

66
import psutil
77
from httpx import AsyncClient, ReadTimeout
@@ -37,13 +37,13 @@ class NetworkConnectionError:
3737

3838

3939
@collector("network_io")
40-
class NetworkIOCollector(TimeBasedCounterCollector[Dict[str, snetio], List[NetworkIO]]):
40+
class NetworkIOCollector(TimeBasedCounterCollector[dict[str, snetio], list[NetworkIO]]):
4141
async def _calc(
4242
self,
43-
past: Dict[str, snetio],
44-
now: Dict[str, snetio],
43+
past: dict[str, snetio],
44+
now: dict[str, snetio],
4545
time_passed: float,
46-
) -> List[NetworkIO]:
46+
) -> list[NetworkIO]:
4747
def calc_one(name: str, past_it: snetio, now_it: snetio) -> Optional[NetworkIO]:
4848
if match_list_regexp(config.ps_ignore_nets, name):
4949
# logger.info(f"网卡IO统计 {name} 匹配 {regex.re.pattern},忽略")
@@ -64,12 +64,12 @@ def calc_one(name: str, past_it: snetio, now_it: snetio) -> Optional[NetworkIO]:
6464
res.sort(key=lambda x: x.sent + x.recv, reverse=True)
6565
return res
6666

67-
async def _get_obj(self) -> Dict[str, snetio]:
67+
async def _get_obj(self) -> dict[str, snetio]:
6868
return psutil.net_io_counters(pernic=True)
6969

7070

7171
@normal_collector()
72-
async def network_connection() -> List[NetworkConnectionType]:
72+
async def network_connection() -> list[NetworkConnectionType]:
7373
def format_conn_error(error: Exception) -> str:
7474
if isinstance(error, ReadTimeout):
7575
return "超时"

nonebot_plugin_picstatus/collectors/process.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import asyncio
22
from dataclasses import dataclass
3-
from typing import List, Optional, Union, cast
3+
from typing import Optional, Union, cast
44

55
import psutil
66

@@ -17,7 +17,7 @@ class ProcessStatus:
1717

1818

1919
@periodic_collector()
20-
async def process_status() -> List[ProcessStatus]:
20+
async def process_status() -> list[ProcessStatus]:
2121
if not config.ps_proc_len:
2222
return []
2323

@@ -44,7 +44,7 @@ def sorter(x: ProcessStatus):
4444
return x.cpu
4545

4646
proc_list = cast(
47-
List[Union[Optional[ProcessStatus], Exception]],
47+
"list[Union[Optional[ProcessStatus], Exception]]",
4848
await asyncio.gather(
4949
*(parse_one(proc) for proc in psutil.process_iter()),
5050
return_exceptions=True,

0 commit comments

Comments
 (0)