perf: 用 autoflake 删除无用依赖

没想到居然能意外地大幅提升启动速度
This commit is contained in:
2026-04-22 06:44:59 +08:00
parent e65db69fc6
commit 7278cba258
38 changed files with 184 additions and 703 deletions

View File

@@ -3,7 +3,7 @@
from textual.app import ComposeResult
from textual.containers import ScrollableContainer
from textual.screen import Screen
from textual.widgets import Button, Footer, Header, Label, Markdown, Static
from textual.widgets import Button, Footer, Header, Label, Markdown
from textual import events, on

View File

@@ -1,15 +1,12 @@
"""仪表盘界面"""
from functools import reduce
import pathlib
from pathlib import Path
import os
from textual.app import ComposeResult
from textual.containers import ScrollableContainer, Container, Horizontal, Vertical
from textual.containers import ScrollableContainer, Horizontal, Vertical
from textual.screen import Screen
from textual.widgets import Button, Footer, Header, Label, ListItem, ListView, Static
from textual.layouts import horizontal
from textual import events, on
from textual.reactive import reactive
@@ -19,10 +16,8 @@ import heurams.services.version as version
from heurams.context import *
from heurams.kernel.particles import *
from heurams.kernel.repolib import *
from heurams.kernel.algorithms import algorithms
from heurams.services.logger import get_logger
from .about import AboutScreen
from .navigator import NavigatorScreen
from .preparation import PreparationScreen
@@ -40,7 +35,7 @@ class DashboardScreen(Screen):
CSS_PATH = rootdir / "interface" / "css" / "screens" / "dashboard.tcss"
repolink = reactive({})
def __init__(
self,
name: str | None = None,
@@ -59,7 +54,7 @@ class DashboardScreen(Screen):
Vertical(
Label(f"当前日时间戳: {timer.get_daystamp()}"),
Label(
f"应用时区修正: UTC+{str(config_var.get()['services']['timer']['timezone_offset'] / 3600).rstrip('.0')}"
f"应用时区修正: UTC+{str(config_var.get()['services']['timer']['timezone_offset'] / 3600).removesuffix('.0')}"
),
Label(
f"默认算法设置: {config_var.get()['interface']['global']['algorithm']}",
@@ -112,21 +107,21 @@ class DashboardScreen(Screen):
repo.progress = {
"total": repo.data_length,
"touched": 0,
"have_activated_ever": 0,
"have_activated_ever": False,
}
repo.preview = {
"review": 0,
"new": repo.config["scheduled_num"],
"new": repo.config["scheduled_num"], # TODO: 考虑之后在这里加点运算避免 SM-2 积压, 但现在需要的是直观!
}
initial_time = float("inf")
for i in range(repo.data_length):
for i in range(repo.data_length): # TODO: 增加异步性能优化, 但是学习数据属实规模小...
e = pt.Electron.from_data(
electronic_data=repo.electronic_data_lict[i],
algo_name=repo.config["algorithm"],
)
n = pt.Nucleon.from_data(repo.nucleonic_data_lict[i])
# n = pt.Nucleon.from_data(repo.nucleonic_data_lict[i])
if e.is_activated():
repo.progress["have_activated_ever"] = 1
repo.progress["have_activated_ever"] = True # 被激活过~
repo.progress["touched"] += 1
repo.nearest_review_time = min(repo.nearest_review_time, e.nextdate())
if timer.get_daystamp() >= e.nextdate():
@@ -145,9 +140,9 @@ class DashboardScreen(Screen):
repodirs = sorted(
self.repos,
key=lambda r: r.nearest_review_time,
reverse=True,
reverse=True, # 紧张的先复习
)
repotitles = map(lambda f: self.repostat[f.name]["title"], repodirs)
# 填充列表
if not repodirs:
repo_list_widget.append(
@@ -163,18 +158,19 @@ class DashboardScreen(Screen):
return
for r in self.repos:
self.repolink[str(id(r))] = r # 用于规避 ctype id 对象还原
self.repolink[str(r.manifest['package'])] = r # 用于规避 ctype id 对象还原
# NOTE: 上一行不要使用 id(), id 可能被重用!
list_item = ListItem(
*[Label(line) for line in r.prompt.splitlines()],
Button(
f"开始学习",
flat=True,
variant="primary",
id=f"slaunch_repo_{id(r)}",
id=f"slaunch_repo_{r.manifest['package']}",
classes="repo-list-item-shortcut",
),
classes="repo-list-item",
id=f"launch_repo_{id(r)}",
id=f"launch_repo_{r.manifest['package']}",
)
repo_list_widget.append(list_item)
@@ -187,7 +183,7 @@ class DashboardScreen(Screen):
return
# 还原对象
selected_repo = self.repolink[event.item.id.lstrip("launch_repo_")]
selected_repo = self.repolink[event.item.id.removeprefix("launch_repo_")]
# 跳转到准备屏幕
self.app.push_screen(PreparationScreen(selected_repo))

View File

@@ -1,25 +1,21 @@
"""队列式记忆工作界面"""
from enum import Enum, auto
from pathlib import Path
from typing import Callable
from textual.app import ComposeResult
from textual.containers import Center, ScrollableContainer, Container
from textual.containers import ScrollableContainer
from textual.reactive import reactive
from textual.screen import Screen
from textual.widgets import Button, Footer, Header, Label, Static
from textual.widgets import Footer, Header, Label, Static
from textual import events, on
import heurams.kernel.particles as pt
import heurams.kernel.puzzles as pz
from heurams.context import config_var, rootdir
from heurams.kernel.reactor import *
from heurams.services.favorite_service import favorite_manager
from heurams.services.logger import get_logger
import pickle
from .. import shim

View File

@@ -1,13 +1,10 @@
import webbrowser
from textual.app import ComposeResult
from textual.containers import Grid, ScrollableContainer
from textual.containers import Grid
from textual.screen import ModalScreen
from textual.widgets import Button, Footer, Header, Label, ListItem, ListView, Static
from textual.widgets import Button, Label, ListItem, ListView, Static
from textual import events, on
from heurams.context import *
from heurams.services.logger import get_logger
from .favmgr import FavoriteManagerScreen

View File

@@ -200,7 +200,6 @@ class PrecachingScreen(Screen):
def precache_by_text(self, text: str):
"""预缓存单段文本的音频"""
from heurams.context import config_var, rootdir, workdir
cache_dir.mkdir(parents=True, exist_ok=True)
cache_file = cache_dir / f"{hasher.get_md5(text)}.wav"
@@ -259,7 +258,7 @@ class PrecachingScreen(Screen):
def precache_all_files(self):
"""预缓存所有文件"""
from heurams.context import config_var, rootdir, workdir
from heurams.context import config_var
from heurams.kernel.repolib import Repo
repo_path = pathlib.Path(config_var.get()["global"]["paths"]["data"]) / "repo"
@@ -315,7 +314,6 @@ class PrecachingScreen(Screen):
try:
import shutil
from heurams.context import config_var, rootdir, workdir
shutil.rmtree(cache_dir, ignore_errors=True)
self.update_status("已清空", "音频缓存已清空", 0)

View File

@@ -1,10 +1,8 @@
"""记忆准备界面"""
from textual.app import ComposeResult
from textual.containers import ScrollableContainer, Container, Horizontal
from textual.reactive import reactive
from textual.containers import ScrollableContainer, Horizontal
from textual.screen import Screen
from textual.widget import Widget
from textual.widgets import (
Button,
Footer,
@@ -12,15 +10,13 @@ from textual.widgets import (
Label,
Markdown,
Static,
Rule,
Sparkline,
)
from textual.lazy import Reveal, Lazy
from textual.lazy import Reveal
from textual import events, on
import heurams.kernel.particles as pt
import heurams.services.hasher as hasher
from heurams.context import *
from heurams.context import config_var
from heurams.kernel.repolib import *

View File

@@ -1,37 +1,24 @@
"""设置页面"""
from functools import reduce
import pathlib
from pathlib import Path
import os
from textual.app import ComposeResult
from textual.containers import ScrollableContainer, Container, Horizontal, Vertical
from textual.containers import ScrollableContainer, Horizontal
from textual.screen import Screen
from textual.widgets import (
Button,
Footer,
Header,
Label,
ListItem,
ListView,
Static,
Collapsible,
Input,
Switch,
Select,
)
from textual.layouts import horizontal
from textual import events, on
import heurams.kernel.particles as pt
import heurams.services.timer as timer
import heurams.services.version as version
from heurams.context import *
from heurams.kernel.particles import *
from heurams.kernel.repolib import *
from heurams.kernel.algorithms import algorithms
from heurams.services.logger import get_logger
from heurams.services.textproc import domize, undomize
from heurams.services.epath import epath
@@ -194,7 +181,6 @@ class SettingScreen(Screen):
def on_mount(self) -> None:
"""挂载组件时初始化"""
pass
def action_go_back(self) -> None:
"""返回上一屏幕"""

View File

@@ -6,13 +6,11 @@ import time
from textual.app import ComposeResult
from textual.containers import Horizontal, ScrollableContainer
from textual.screen import Screen
from textual.widgets import Button, Footer, Header, Label, ProgressBar, Static
from textual.widgets import Button, Footer, Header, ProgressBar, Static
from textual.worker import get_current_worker
from textual import events, on
import heurams.kernel.particles as pt
import heurams.services.hasher as hasher
from heurams.context import *