@@ -1682,15 +1682,15 @@ def _add_parser_args(
16821682 else f'{ arg_prefix } { preferred_alias } '
16831683 )
16841684
1685- if kwargs ['dest' ] in added_args :
1685+ arg_names = self ._get_arg_names (arg_prefix , subcommand_prefix , alias_prefixes , alias_names , added_args )
1686+ if not arg_names or (kwargs ['dest' ] in added_args ):
16861687 continue
16871688
16881689 if is_append_action :
16891690 kwargs ['action' ] = 'append'
16901691 if _annotation_contains_types (field_info .annotation , (dict , Mapping ), is_strip_annotated = True ):
16911692 self ._cli_dict_args [kwargs ['dest' ]] = field_info .annotation
16921693
1693- arg_names = self ._get_arg_names (arg_prefix , subcommand_prefix , alias_prefixes , alias_names )
16941694 if _CliPositionalArg in field_info .metadata :
16951695 kwargs ['metavar' ] = preferred_alias .upper ()
16961696 arg_names = [kwargs ['dest' ]]
@@ -1748,18 +1748,25 @@ def _convert_bool_flag(self, kwargs: dict[str, Any], field_info: FieldInfo, mode
17481748 )
17491749
17501750 def _get_arg_names (
1751- self , arg_prefix : str , subcommand_prefix : str , alias_prefixes : list [str ], alias_names : tuple [str , ...]
1751+ self ,
1752+ arg_prefix : str ,
1753+ subcommand_prefix : str ,
1754+ alias_prefixes : list [str ],
1755+ alias_names : tuple [str , ...],
1756+ added_args : list [str ],
17521757 ) -> list [str ]:
17531758 arg_names : list [str ] = []
17541759 for prefix in [arg_prefix ] + alias_prefixes :
17551760 for name in alias_names :
1756- arg_names . append (
1761+ arg_name = (
17571762 f'{ prefix } { name } '
17581763 if subcommand_prefix == self .env_prefix
17591764 else f'{ prefix .replace (subcommand_prefix , "" , 1 )} { name } '
17601765 )
17611766 if self .cli_kebab_case :
1762- arg_names [- 1 ] = arg_names [- 1 ].replace ('_' , '-' )
1767+ arg_name = arg_name .replace ('_' , '-' )
1768+ if arg_name not in added_args :
1769+ arg_names .append (arg_name )
17631770 return arg_names
17641771
17651772 def _add_parser_submodels (
0 commit comments