From 6a76a1be322581c65268deb0f86dcb57ccbfc25e Mon Sep 17 00:00:00 2001 From: Alpamys Date: Mon, 23 Mar 2026 21:05:31 +0500 Subject: [PATCH] =?UTF-8?q?Fix=20CI:=20lazy=20FastAPI=20imports,=20strip?= =?UTF-8?q?=20ANSI=20in=20test=20assertions=20=E2=80=94=20v0.7.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move fastapi imports inside create_app() so STATIC_DIR is importable without fastapi installed (follows project lazy import convention) - Strip Rich ANSI escape codes in test_ui_command_options assertion - Bump to v0.7.2 Co-Authored-By: Claude Opus 4.6 (1M context) --- pyproject.toml | 2 +- soup_cli/__init__.py | 2 +- soup_cli/ui/app.py | 11 ++++++----- tests/test_ui.py | 9 ++++++--- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6944bd2..8f92f05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "soup-cli" -version = "0.7.1" +version = "0.7.2" description = "Fine-tune LLMs in one command. No SSH, no config hell." readme = "README.md" license = "MIT" diff --git a/soup_cli/__init__.py b/soup_cli/__init__.py index 9002493..ec54535 100644 --- a/soup_cli/__init__.py +++ b/soup_cli/__init__.py @@ -1,3 +1,3 @@ """Soup CLI — Fine-tune LLMs in one command.""" -__version__ = "0.7.1" +__version__ = "0.7.2" diff --git a/soup_cli/ui/app.py b/soup_cli/ui/app.py index 282caf4..9cb315d 100644 --- a/soup_cli/ui/app.py +++ b/soup_cli/ui/app.py @@ -9,10 +9,6 @@ import threading from pathlib import Path from typing import Optional -from fastapi import FastAPI, HTTPException, Query -from fastapi.middleware.cors import CORSMiddleware -from fastapi.responses import HTMLResponse -from fastapi.staticfiles import StaticFiles from pydantic import BaseModel as PydanticBaseModel STATIC_DIR = Path(__file__).parent / "static" @@ -43,8 +39,13 @@ _train_config_path: Optional[str] = None _train_lock = threading.Lock() -def create_app() -> FastAPI: +def create_app(): """Create the Soup Web UI FastAPI application.""" + from fastapi import FastAPI, HTTPException, Query + from fastapi.middleware.cors import CORSMiddleware + from fastapi.responses import HTMLResponse + from fastapi.staticfiles import StaticFiles + app = FastAPI(title="Soup Web UI", version="1.0.0") app.add_middleware( diff --git a/tests/test_ui.py b/tests/test_ui.py index c09569f..f07bce1 100644 --- a/tests/test_ui.py +++ b/tests/test_ui.py @@ -40,9 +40,12 @@ class TestUICommand: runner = CliRunner() result = runner.invoke(app, ["ui", "--help"]) - assert "--port" in result.output - assert "--host" in result.output - assert "--no-browser" in result.output + # Rich markup wraps dashes with ANSI codes, so check without codes + import re + clean = re.sub(r"\x1b\[[0-9;]*m", "", result.output) + assert "--port" in clean + assert "--host" in clean + assert "--no-browser" in clean class TestCreateApp: