Skip to content

Commit 2439473

Browse files
committed
fix: works with subgroup
Signed-off-by: Aaron Pham <[email protected]>
1 parent 38b8d55 commit 2439473

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

vllm/engine/arg_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,7 @@ def add_cli_args(parser: FlexibleArgumentParser) -> FlexibleArgumentParser:
515515
description=DecodingConfig.__doc__,
516516
)
517517
guided_decoding_group.add_argument("--guided-decoding-backend",
518+
deprecated=True,
518519
**guided_decoding_kwargs["backend"])
519520
guided_decoding_group.add_argument(
520521
"--guided-decoding-disable-fallback",

vllm/utils.py

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import warnings
3434
import weakref
3535
from argparse import (Action, ArgumentDefaultsHelpFormatter, ArgumentParser,
36-
ArgumentTypeError)
36+
ArgumentTypeError, _ArgumentGroup)
3737
from asyncio import FIRST_COMPLETED, AbstractEventLoop, Task
3838
from collections import UserDict, defaultdict
3939
from collections.abc import (AsyncGenerator, Awaitable, Generator, Hashable,
@@ -1326,23 +1326,49 @@ def add_arguments(self, actions):
13261326
super().add_arguments(actions)
13271327

13281328

1329+
class _FlexibleArgumentGroup(_ArgumentGroup):
1330+
1331+
def __init__(self, parser: FlexibleArgumentParser, *args, **kwargs):
1332+
self._parser = parser
1333+
super().__init__(*args, **kwargs)
1334+
1335+
def add_argument(self, *args: Any, **kwargs: Any):
1336+
if sys.version_info < (3, 13):
1337+
deprecated = kwargs.pop('deprecated', False)
1338+
action = super().add_argument(*args, **kwargs)
1339+
object.__setattr__(action, 'deprecated', deprecated)
1340+
if deprecated and action.dest not in \
1341+
self._parser.__class__._deprecated:
1342+
self._parser._warning(
1343+
_gettext("argument '%(argument_name)s' is deprecated") %
1344+
{'argument_name': action.dest})
1345+
self._parser._deprecated.add(action.dest)
1346+
return action
1347+
1348+
# python>3.13
1349+
return super().add_argument(*args, **kwargs)
1350+
1351+
13291352
class FlexibleArgumentParser(ArgumentParser):
13301353
"""ArgumentParser that allows both underscore and dash in names."""
13311354

1355+
_deprecated: set[str] = set()
1356+
13321357
def __init__(self, *args, **kwargs):
13331358
# Set the default 'formatter_class' to SortedHelpFormatter
13341359
if 'formatter_class' not in kwargs:
13351360
kwargs['formatter_class'] = SortedHelpFormatter
13361361
super().__init__(*args, **kwargs)
1337-
self._deprecated = set()
13381362

13391363
def add_argument(self, *args: Any, **kwargs: Any):
13401364
# add a deprecated=True with optional deprecated_reason to signify
13411365
# reasons for deprecating this args
13421366
if sys.version_info < (3, 13):
13431367
deprecated = kwargs.pop('deprecated', False)
13441368
action = super().add_argument(*args, **kwargs)
1345-
if deprecated and action.dest not in self._deprecated:
1369+
object.__setattr__(action, 'deprecated', deprecated)
1370+
if deprecated and \
1371+
action.dest not in FlexibleArgumentParser._deprecated:
13461372
self._warning(
13471373
_gettext("argument '%(argument_name)s' is deprecated") %
13481374
{'argument_name': action.dest})
@@ -1354,9 +1380,9 @@ def add_argument(self, *args: Any, **kwargs: Any):
13541380
return super().add_argument(*args, **kwargs)
13551381

13561382
def _warning(self, message: str):
1357-
args = {'prog': self.prog, 'message': message}
13581383
self._print_message(
1359-
_gettext('%(prog)s: warning: %(message)s\n') % args, sys.stderr)
1384+
_gettext('warning: %(message)s\n') % {'message': message},
1385+
sys.stderr)
13601386

13611387
def parse_args( # type: ignore[override]
13621388
self,
@@ -1533,6 +1559,12 @@ def _load_config_file(self, file_path: str) -> list[str]:
15331559

15341560
return processed_args
15351561

1562+
def add_argument_group(self, *args: Any,
1563+
**kwargs: Any) -> _FlexibleArgumentGroup:
1564+
group = _FlexibleArgumentGroup(self, self, *args, **kwargs)
1565+
self._action_groups.append(group)
1566+
return group
1567+
15361568

15371569
async def _run_task_with_lock(task: Callable, lock: asyncio.Lock, *args,
15381570
**kwargs):

0 commit comments

Comments
 (0)