From 27354656295c6a6045721c115f34e11411f2460b Mon Sep 17 00:00:00 2001 From: Wang Zhiyu Date: Sat, 16 May 2026 23:46:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AE=80=E5=8C=96=E5=B9=B6=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除了原有 __main__.py 中冗长且烦人的说教, heurams 现作为所有功能的 统一入口, 并移除了单独的 heurams-tui 入口(现为 heurams tui) --- CONTRIBUTING.md | 4 +-- pyproject.toml | 1 - src/heurams/__init__.py | 2 +- src/heurams/__main__.py | 66 +++++++++++++++++++++++++++++++---------- 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b903218..d36818b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,9 +71,7 @@ python3 -m pip install uv uv sync --all-extras # 同步开发运行环境 -uv run heurams # 验证包安装 - -uv run heurams-tui # 启动 TUI +uv run heurams # 如果决定使用原生 python 环境 (不推荐, 但我们保留了这种方式以便在不便支持 uv 与硬链接的环境和文件系统(例如 termux)上运行) diff --git a/pyproject.toml b/pyproject.toml index 1b19eaf..d468c44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,7 +61,6 @@ default = true [project.scripts] heurams = "heurams.__main__:main" -heurams-tui = "heurams.interface.__main__:main" [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/src/heurams/__init__.py b/src/heurams/__init__.py index 5ca3b70..e9a66da 100644 --- a/src/heurams/__init__.py +++ b/src/heurams/__init__.py @@ -1,4 +1,4 @@ -print("欢迎使用 HeurAMS 及其组件!") +#print("欢迎使用 HeurAMS 及其组件!") # 补充日志记录 from heurams.services.logger import get_logger diff --git a/src/heurams/__main__.py b/src/heurams/__main__.py index 11bf505..36059c2 100644 --- a/src/heurams/__main__.py +++ b/src/heurams/__main__.py @@ -1,22 +1,56 @@ -import heurams.services.version as ver +import click +from heurams.services.version import ver, stage, codename, codename_cn + + +@click.group(invoke_without_command=True) +@click.version_option( + ver, "-v", "--version", + prog_name="HeurAMS", + message=f"%(prog)s %(version)s ({codename}/{codename_cn}), 阶段: {stage}", +) +@click.pass_context +def cli(ctx): + """HeurAMS - 启发式辅助记忆调度器""" + if ctx.invoked_subcommand is None: + click.echo(cli.get_help(ctx)) + ctx.exit(0) + + +@cli.command() +def tui(): + """启动内置基本用户界面 (TUI)""" + import heurams.interface.__main__ as tui_module + + tui_module.main() + + +def _print_version(): + click.echo( + f"HeurAMS {ver} ({codename}/{codename_cn}), 阶段: {stage}" + ) + + +@cli.command() +def version(): + """输出版本信息""" + _print_version() + + +@cli.command(name="ver") +def ver_cmd(): + """输出版本信息""" + _print_version() + + +@cli.command(name="help") +@click.pass_context +def help_cmd(ctx): + """显示此帮助信息""" + click.echo(cli.get_help(ctx.parent)) -# __main__.py def main(): - prompt = f"""HeurAMS {ver.ver} 已经被成功地安装在系统中. -HeurAMS 被设计为一个带有辅助记忆调度器功能的软件包, 无法直接被执行, 但可被其他 Python 程序调用. -若您想启动内置的基本用户界面: - 请运行 python -m heurams.interface, - 或者 python -m heurams.interface.__main__ -python 代指您使用的解释器, 在某些发行版中可能是 python3, 而 python 命令被指向了 python2. -尽管项目保留了 requirements.txt, 我们仍不推荐使用系统 python 和原始 venv 进行开发. -项目的推荐开发环境工具是 uv. -如果你的环境已经安装了 uv: - 先运行 uv sync --all-extras 同步环境, 此命令只需要执行一遍, uv 会自动处理依赖. - 然后通过运行 uv run heurams-tui 启动内置基本用户界面. - 此时您的解释器在项目目录里的 .venv/bin 中, 使用 IDE 开发前, 务必切换解释器! -注意: 一个常见的误区是, 执行 interface 下的 __main__.py 运行基本用户界面, 这会导致 Python 上下文环境异常, 请不要这样做.""" - print(prompt) + cli() if __name__ == "__main__":