From 0d2ce9c246bbf295c42a9922afb05762c88bd41f Mon Sep 17 00:00:00 2001 From: haijie11 Date: Tue, 4 Aug 2026 07:20:55 +0800 Subject: [PATCH] fix(server): show falsey defaults in CLI help --- CHANGELOG.md | 2 ++ llama_cpp/server/cli.py | 2 +- tests/test_server_cli.py | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/test_server_cli.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 629b645a5a..1eb08d8e28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- fix(server): show falsey defaults in CLI help by @cupkk in #2355 + ## [0.3.34] - feat: update llama.cpp to ggml-org/llama.cpp@e3546c794 diff --git a/llama_cpp/server/cli.py b/llama_cpp/server/cli.py index 171b8db30c..3a5cde9cd2 100644 --- a/llama_cpp/server/cli.py +++ b/llama_cpp/server/cli.py @@ -84,7 +84,7 @@ def add_args_from_model(parser: argparse.ArgumentParser, model: Type[BaseModel]) for name, field in model.model_fields.items(): description = field.description - if field.default and description and not field.is_required(): + if description and not field.is_required() and field.default is not None: description += f" (default: {field.default})" base_type = ( _get_base_type(field.annotation) if field.annotation is not None else str diff --git a/tests/test_server_cli.py b/tests/test_server_cli.py new file mode 100644 index 0000000000..ca06a8812e --- /dev/null +++ b/tests/test_server_cli.py @@ -0,0 +1,24 @@ +import argparse + +from pydantic import BaseModel, Field + +from llama_cpp.server.cli import add_args_from_model + + +class ServerCliSettings(BaseModel): + enabled: bool = Field(default=False, description="Enable feature") + retries: int = Field(default=0, description="Retry count") + workers: int = Field(default=2, description="Worker count") + required_value: str = Field(description="Required value") + + +def test_add_args_from_model_includes_falsey_defaults_in_help(): + parser = argparse.ArgumentParser() + + add_args_from_model(parser, ServerCliSettings) + + help_by_dest = {action.dest: action.help for action in parser._actions} + assert help_by_dest["enabled"] == "Enable feature (default: False)" + assert help_by_dest["retries"] == "Retry count (default: 0)" + assert help_by_dest["workers"] == "Worker count (default: 2)" + assert help_by_dest["required_value"] == "Required value"