File tree 2 files changed +18
-1
lines changed
2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -982,7 +982,7 @@ def __call__(self) -> dict[str, Any]:
982
982
# As `extra` config is allowed in dotenv settings source, We have to
983
983
# update data with extra env variables from dotenv file.
984
984
for env_name , env_value in self .env_vars .items ():
985
- if not env_value :
985
+ if not env_value or env_name in data :
986
986
continue
987
987
env_used = False
988
988
for field_name , field in self .settings_cls .model_fields .items ():
Original file line number Diff line number Diff line change @@ -2715,3 +2715,20 @@ class Settings(BaseSettings):
2715
2715
2716
2716
s = Settings ()
2717
2717
assert s .model_dump () == {'not_nested' : 'works' , 'NESTED' : {'A' : 'fails' , 'b' : 2 }}
2718
+
2719
+
2720
+ def test_dotenv_env_prefix_env_without_prefix (tmp_path ):
2721
+ p = tmp_path / '.env'
2722
+ p .write_text ('test_foo=test-foo\n foo=foo' )
2723
+
2724
+ class Settings (BaseSettings ):
2725
+ model_config = SettingsConfigDict (
2726
+ env_file = p ,
2727
+ env_prefix = 'TEST_' ,
2728
+ extra = 'ignore' ,
2729
+ )
2730
+
2731
+ foo : str
2732
+
2733
+ s = Settings ()
2734
+ assert s .model_dump () == {'foo' : 'test-foo' }
You can’t perform that action at this time.
0 commit comments