import re from functools import partial from pathlib import Path from typing import TYPE_CHECKING from cookit import DebugFileWriter, auto_convert_unit, format_timedelta if TYPE_CHECKING: from .collectors.cpu import CpuFreq format_time_delta_ps = partial(format_timedelta, day_divider=" ", day_suffix="天") def match_list_regexp(reg_list: list[str], txt: str) -> re.Match | None: return next((match for r in reg_list if (match := re.search(r, txt))), None) def format_freq(value: float) -> str: """将 MHz 频率格式化为 MHz/GHz(十进制 1000 换算)""" return auto_convert_unit( units=("MHz", "GHz", "THz"), multiplier=1000, unit_threshold=1000, value=value, with_space=False, ) def format_cpu_freq(freq: "CpuFreq") -> str: if not freq.current and not freq.max: return "主频未知" current = freq.current or freq.max or 0.0 max_freq = freq.max or 0.0 if not max_freq or max_freq == current: return format_freq(current) return f"{format_freq(current)} / {format_freq(max_freq)}" debug = DebugFileWriter(Path(__file__).resolve().parents[2] / "logs", "picstatus")