From 74a52c027bf286ed63e8677a2f817c233ef36efa Mon Sep 17 00:00:00 2001 From: Davids048 Date: Sat, 3 Oct 2026 01:54:34 +0000 Subject: [PATCH] [refactor]: remove the flat-flag entry point of the OpenAI API server python -m fastvideo.entrypoints.openai.api_server parsed the hand-written FastVideoArgs argparse flags, an inference input path next to the typed config that fastvideo serve reads. It is removed; start the server with fastvideo serve --config SERVE_CONFIG and dotted overrides such as --server.port 8000. The GPU integration test starts the server that way, with the same model, GPU count, and DiT offload. FastVideoArgs.add_cli_args stays for the legacy training and preprocessing scripts. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_012M91wnVFmPEvJ9h39r5BH7 --- fastvideo/entrypoints/openai/api_server.py | 30 ------------------- fastvideo/entrypoints/openai/state.py | 5 ++-- .../test_openai_api_integration.py | 20 +++++++------ 3 files changed, 13 insertions(+), 42 deletions(-) diff --git a/fastvideo/entrypoints/openai/api_server.py b/fastvideo/entrypoints/openai/api_server.py index db98786ee..af8be7f96 100644 --- a/fastvideo/entrypoints/openai/api_server.py +++ b/fastvideo/entrypoints/openai/api_server.py @@ -174,31 +174,6 @@ def create_app( return app -def _parse_args() -> tuple[FastVideoArgs, str, int, str]: - """Parse CLI arguments and return (FastVideoArgs, host, port, output_dir)""" - from fastvideo.utils import FlexibleArgumentParser - - logger.warning("python -m fastvideo.entrypoints.openai.api_server and its flat flags are deprecated and will be " - "removed; use `fastvideo serve --config SERVE_CONFIG` with dotted overrides such as " - "`--generator.engine.num_gpus 2` instead.") - parser = FlexibleArgumentParser(description="FastVideo OpenAI-compatible API server") - parser.add_argument("--host", type=str, default=DEFAULT_HOST) - parser.add_argument("--port", type=int, default=DEFAULT_PORT) - parser.add_argument("--output-dir", type=str, default=DEFAULT_OUTPUT_DIR) - parser = FastVideoArgs.add_cli_args(parser) - - args = parser.parse_args() - host = args.host - port = args.port - output_dir = args.output_dir - - # Build FastVideoArgs from the remaining CLI args - excluded = {"host", "port", "output_dir", "subparser", "config", "dispatch_function"} - cli_kwargs = {k: v for k, v in vars(args).items() if k not in excluded and v is not None} - fastvideo_args = FastVideoArgs.from_kwargs(**cli_kwargs) - return fastvideo_args, host, port, output_dir - - def run_server( fastvideo_args: FastVideoArgs, host: str = DEFAULT_HOST, @@ -229,8 +204,3 @@ def run_server( log_level="info", timeout_keep_alive=300, ) - - -if __name__ == "__main__": - fastvideo_args, host, port, output_dir = _parse_args() - run_server(fastvideo_args, host, port, output_dir=output_dir) diff --git a/fastvideo/entrypoints/openai/state.py b/fastvideo/entrypoints/openai/state.py index 66fd39a45..ea9954549 100644 --- a/fastvideo/entrypoints/openai/state.py +++ b/fastvideo/entrypoints/openai/state.py @@ -1,8 +1,7 @@ """Global server state shared across API modules. -Keeping state in a dedicated module prevents the classic '__main__ vs package -module' duplication that occurs when api_server.py is run with ``python -m``. -All modules that need the generator or server args should import from here. +Keeping state in a dedicated module gives every API module the same +generator and server args. All modules that need them should import from here. """ from __future__ import annotations diff --git a/fastvideo/tests/entrypoints/test_openai_api_integration.py b/fastvideo/tests/entrypoints/test_openai_api_integration.py index 078434e85..149f0e64c 100644 --- a/fastvideo/tests/entrypoints/test_openai_api_integration.py +++ b/fastvideo/tests/entrypoints/test_openai_api_integration.py @@ -59,21 +59,23 @@ def server(): env.setdefault("MASTER_ADDR", "127.0.0.1") env.setdefault("MASTER_PORT", str(_find_free_port())) + config_path = os.path.join(output_dir, "serve.yaml") + with open(config_path, "w", encoding="utf-8") as config_file: + config_file.write(f"generator:\n model_path: {MODEL_PATH}\n" + " engine:\n num_gpus: 1\n offload:\n dit: true\n") cmd = [ sys.executable, "-m", - "fastvideo.entrypoints.openai.api_server", - "--model-path", - MODEL_PATH, - "--host", + "fastvideo.entrypoints.cli.main", + "serve", + "--config", + config_path, + "--server.host", "127.0.0.1", - "--port", + "--server.port", str(port), - "--output-dir", + "--server.output_dir", output_dir, - "--num-gpus", - "1", - "--dit-cpu-offload", ] proc = subprocess.Popen(