@@ -1604,16 +1604,19 @@ def _add_parser_args(
1604
1604
resolved_names ,
1605
1605
model_default = model_default ,
1606
1606
)
1607
- elif is_alias_path_only :
1608
- continue
1609
- elif group is not None :
1610
- if isinstance (group , dict ):
1611
- group = self ._add_argument_group (parser , ** group )
1612
- added_args += list (arg_names )
1613
- self ._add_argument (group , * (f'{ arg_flag [:len (name )]} { name } ' for name in arg_names ), ** kwargs )
1614
- else :
1615
- added_args += list (arg_names )
1616
- self ._add_argument (parser , * (f'{ arg_flag [:len (name )]} { name } ' for name in arg_names ), ** kwargs )
1607
+ elif not is_alias_path_only :
1608
+ if arg_prefix and field_info .validation_alias is not None :
1609
+ # Strip prefix if validation alias is set and value is not complex.
1610
+ # Related https://github.com/pydantic/pydantic-settings/pull/25
1611
+ kwargs ['dest' ] = kwargs ['dest' ][self .env_prefix_len :]
1612
+ if group is not None :
1613
+ if isinstance (group , dict ):
1614
+ group = self ._add_argument_group (parser , ** group )
1615
+ added_args += list (arg_names )
1616
+ self ._add_argument (group , * (f'{ arg_flag [:len (name )]} { name } ' for name in arg_names ), ** kwargs )
1617
+ else :
1618
+ added_args += list (arg_names )
1619
+ self ._add_argument (parser , * (f'{ arg_flag [:len (name )]} { name } ' for name in arg_names ), ** kwargs )
1617
1620
1618
1621
self ._add_parser_alias_paths (parser , alias_path_args , added_args , arg_prefix , subcommand_prefix , group )
1619
1622
return parser
0 commit comments