From 362083b4fb85789e18a912ea0322b7f55365826e Mon Sep 17 00:00:00 2001 From: Zhe Yu Date: Wed, 14 May 2025 09:30:41 +0800 Subject: [PATCH] fix(cli): make sure arg parsers use correct defaults. --- src/vectorcode/cli_utils.py | 25 +++++++++++++++++++------ tests/test_cli_utils.py | 6 ++++++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/vectorcode/cli_utils.py b/src/vectorcode/cli_utils.py index b1198890..651016a2 100644 --- a/src/vectorcode/cli_utils.py +++ b/src/vectorcode/cli_utils.py @@ -172,22 +172,27 @@ async def merge_from(self, other: "Config") -> "Config": def get_cli_parser(): + __default_config = Config() shared_parser = argparse.ArgumentParser(add_help=False) chunking_parser = argparse.ArgumentParser(add_help=False) chunking_parser.add_argument( - "--overlap", "-o", type=float, help="Ratio of overlaps between chunks." + "--overlap", + "-o", + type=float, + default=__default_config.overlap_ratio, + help="Ratio of overlaps between chunks.", ) chunking_parser.add_argument( "-c", "--chunk_size", type=int, - default=-1, + default=__default_config.chunk_size, help="Size of chunks (-1 for no chunking).", ) chunking_parser.add_argument( "--encoding", type=str, - default="utf8", + default=__default_config.encoding, help="Encoding used by the files. See https://docs.python.org/3/library/codecs.html#standard-encodings for supported encodings. Use `_auto` for automatic encoding detection.", ) shared_parser.add_argument( @@ -262,10 +267,18 @@ def get_cli_parser(): ) query_parser.add_argument("query", nargs="+", help="Query keywords.") query_parser.add_argument( - "--multiplier", "-m", type=int, default=-1, help="Query multiplier." + "--multiplier", + "-m", + type=int, + default=__default_config.query_multiplier, + help="Query multiplier.", ) query_parser.add_argument( - "-n", "--number", type=int, default=1, help="Number of results to retrieve." + "-n", + "--number", + type=int, + default=__default_config.n_result, + help="Number of results to retrieve.", ) query_parser.add_argument( "--exclude", nargs="*", help="Files to exclude from query results." @@ -281,7 +294,7 @@ def get_cli_parser(): choices=list(i.value for i in QueryInclude), nargs="+", help="What to include in the final output.", - default=["path", "document"], + default=__default_config.include, ) subparsers.add_parser("drop", parents=[shared_parser], help="Remove a collection.") diff --git a/tests/test_cli_utils.py b/tests/test_cli_utils.py index 940f87a9..d00057ed 100644 --- a/tests/test_cli_utils.py +++ b/tests/test_cli_utils.py @@ -489,6 +489,12 @@ async def test_parse_cli_args_chunks(): assert config.overlap_ratio == 0.5 assert config.chunk_size == 100 + with patch("sys.argv", ["vectorcode", "chunks", "file.py"]): + config = await parse_cli_args() + assert config.action == CliAction.chunks + assert config.overlap_ratio == Config().overlap_ratio + assert config.chunk_size == Config().chunk_size + @pytest.mark.asyncio async def test_config_import_from_hnsw():