@@ -661,7 +661,9 @@ def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str,
661
661
a flag to determine whether value is complex.
662
662
"""
663
663
664
- for field_key , env_name , value_is_complex in self ._extract_field_info (field , field_name ):
664
+ field_infos = self ._extract_field_info (field , field_name )
665
+ preferred_key , * _ = field_infos [0 ]
666
+ for field_key , env_name , value_is_complex in field_infos :
665
667
# paths reversed to match the last-wins behaviour of `env_file`
666
668
for secrets_path in reversed (self .secrets_paths ):
667
669
path = self .find_case_path (secrets_path , env_name , self .case_sensitive )
@@ -670,14 +672,16 @@ def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str,
670
672
continue
671
673
672
674
if path .is_file ():
673
- return path .read_text ().strip (), field_key , value_is_complex
675
+ if value_is_complex or (self .config .get ('populate_by_name' , False ) and (field_key == field_name )):
676
+ preferred_key = field_key
677
+ return path .read_text ().strip (), preferred_key , value_is_complex
674
678
else :
675
679
warnings .warn (
676
680
f'attempted to load secret file "{ path } " but found a { path_type_label (path )} instead.' ,
677
681
stacklevel = 4 ,
678
682
)
679
683
680
- return None , field_key , value_is_complex
684
+ return None , preferred_key , value_is_complex
681
685
682
686
def __repr__ (self ) -> str :
683
687
return f'{ self .__class__ .__name__ } (secrets_dir={ self .secrets_dir !r} )'
@@ -725,12 +729,16 @@ def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str,
725
729
"""
726
730
727
731
env_val : str | None = None
728
- for field_key , env_name , value_is_complex in self ._extract_field_info (field , field_name ):
732
+ field_infos = self ._extract_field_info (field , field_name )
733
+ preferred_key , * _ = field_infos [0 ]
734
+ for field_key , env_name , value_is_complex in field_infos :
729
735
env_val = self .env_vars .get (env_name )
730
736
if env_val is not None :
737
+ if value_is_complex or (self .config .get ('populate_by_name' , False ) and (field_key == field_name )):
738
+ preferred_key = field_key
731
739
break
732
740
733
- return env_val , field_key , value_is_complex
741
+ return env_val , preferred_key , value_is_complex
734
742
735
743
def prepare_field_value (self , field_name : str , field : FieldInfo , value : Any , value_is_complex : bool ) -> Any :
736
744
"""
0 commit comments