From 6adaea6106771a4dcb98068a199ada9bbf45d4d5 Mon Sep 17 00:00:00 2001 From: zycxfyh Date: Wed, 25 Feb 2026 22:20:36 +0800 Subject: [PATCH] fix(cli): add compatibility memu-server entrypoint stub --- src/memu/server/__init__.py | 2 ++ src/memu/server/cli.py | 41 +++++++++++++++++++++++++++++++++++++ tests/test_server_cli.py | 19 +++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/memu/server/__init__.py create mode 100644 src/memu/server/cli.py create mode 100644 tests/test_server_cli.py diff --git a/src/memu/server/__init__.py b/src/memu/server/__init__.py new file mode 100644 index 00000000..925033e2 --- /dev/null +++ b/src/memu/server/__init__.py @@ -0,0 +1,2 @@ +"""CLI entrypoints for memu packaging compatibility.""" + diff --git a/src/memu/server/cli.py b/src/memu/server/cli.py new file mode 100644 index 00000000..fbd07127 --- /dev/null +++ b/src/memu/server/cli.py @@ -0,0 +1,41 @@ +from __future__ import annotations + +import argparse +import sys +from collections.abc import Sequence +from importlib.metadata import PackageNotFoundError, version + + +def _package_version() -> str: + try: + return version("memu-py") + except PackageNotFoundError: + return "unknown" + + +def _build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="memu-server", + description="Compatibility CLI for the memu Python package.", + ) + parser.add_argument("--version", action="store_true", help="Show memu package version and exit.") + return parser + + +def main(argv: Sequence[str] | None = None) -> int: + parser = _build_parser() + args = parser.parse_args(list(argv) if argv is not None else None) + + if args.version: + print(f"memu {_package_version()}") + return 0 + + print("`memu-server` in this package is a compatibility stub.") + print("The full backend server lives in the separate repository:") + print("https://github.com/NevaMind-AI/memU-server") + print("Use the `memu` Python API in this package for local memory workflows.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/tests/test_server_cli.py b/tests/test_server_cli.py new file mode 100644 index 00000000..20e0feb4 --- /dev/null +++ b/tests/test_server_cli.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +from memu.server.cli import main + + +def test_server_cli_stub_message(capsys) -> None: + exit_code = main([]) + out = capsys.readouterr().out + assert exit_code == 0 + assert "compatibility stub" in out + assert "memU-server" in out + + +def test_server_cli_version(capsys) -> None: + exit_code = main(["--version"]) + out = capsys.readouterr().out.strip() + assert exit_code == 0 + assert out.startswith("memu ") +