File tree Expand file tree Collapse file tree 2 files changed +12
-1
lines changed
pydantic_settings/sources Expand file tree Collapse file tree 2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -268,8 +268,9 @@ def __init__(
268
268
init_kwarg_name = init_kwarg_names & set (alias_names )
269
269
if init_kwarg_name :
270
270
preferred_alias = alias_names [0 ]
271
+ preferred_set_alias = next (alias for alias in alias_names if alias in init_kwarg_name )
271
272
init_kwarg_names -= init_kwarg_name
272
- self .init_kwargs [preferred_alias ] = init_kwargs [init_kwarg_name . pop () ]
273
+ self .init_kwargs [preferred_alias ] = init_kwargs [preferred_set_alias ]
273
274
self .init_kwargs .update ({key : val for key , val in init_kwargs .items () if key in init_kwarg_names })
274
275
275
276
super ().__init__ (settings_cls )
Original file line number Diff line number Diff line change @@ -699,6 +699,16 @@ class Example(BaseSettings):
699
699
assert Example (name = 'john' , PREFIX_SURNAME = 'doe' ).model_dump () == {'name' : 'john' , 'last_name' : 'doe' }
700
700
701
701
702
+ def test_init_kwargs_alias_resolution_deterministic ():
703
+ class Example (BaseSettings ):
704
+ name : str
705
+ last_name : str = Field (validation_alias = AliasChoices ('surname' , 'last_name' ))
706
+
707
+ result = Example (name = 'john' , surname = 'doe' , last_name = 'smith' ).model_dump ()
708
+
709
+ assert result == {'name' : 'john' , 'last_name' : 'doe' }
710
+
711
+
702
712
def test_alias_nested_model_default_partial_update ():
703
713
class SubModel (BaseModel ):
704
714
v1 : str = 'default'
You can’t perform that action at this time.
0 commit comments