Refactor CLI and LLM runtime handling for improved user experience

- Removed deprecated console usage in favor of structured logging functions for error handling and user prompts.
- Enhanced CLI prompts for LLM runtime and preset selection, utilizing menu helpers for better user interaction.
- Updated GPU pool scanning output with improved formatting and error indication for clarity.
- Refactored setup wizard to streamline LLM runtime and preset configuration, ensuring a more intuitive setup process.
- Improved documentation and user feedback in CLI outputs to enhance overall usability.
This commit is contained in:
Leonid Pershin
2026-08-21 06:31:15 +03:00
parent 64f93b4bf6
commit e7784473a2
9 changed files with 420 additions and 133 deletions
+32
View File
@@ -0,0 +1,32 @@
from gpu_rent.prompts import MenuItem, prompt_menu, resolve_menu_choice
def test_resolve_by_number():
items = [MenuItem("a", "A"), MenuItem("b", "B"), MenuItem("keep", "K")]
assert resolve_menu_choice("2", items, default_key="keep") == "b"
assert resolve_menu_choice("", items, default_key="keep") == "keep"
assert resolve_menu_choice("keep", items, default_key="a") == "keep"
def test_prompt_menu_prints_and_picks():
items = [
MenuItem("recommended", "rec"),
MenuItem("light", "lit"),
MenuItem("keep", "keep yaml"),
]
shown: list[str] = []
def ask(msg: str, default: str = "") -> str:
assert default == "3" # keep is default
return "1"
key = prompt_menu(
"GGUF",
items,
default="keep",
ask=ask,
show=shown.append,
)
assert key == "recommended"
assert any("1. rec" in line for line in shown)
assert any("" in line for line in shown)
+1 -1
View File
@@ -31,7 +31,7 @@ def test_prompt_server_plan_with_ranked(monkeypatch, tmp_path):
"gpu_rent.ux.list_ranked_flavors",
lambda flavors, cfg: [f1, f2],
)
answers = iter(["2", "200", "n"])
answers = iter(["2", "200", "2"])
def ask(msg: str, default: str = "") -> str:
return next(answers)