@@ -390,18 +390,36 @@ class SubModel(BaseModel):
390390 flag: bool = False
391391
392392
393- class Settings (BaseSettings ):
393+ class SettingsPartialUpdate (BaseSettings ):
394394 model_config = SettingsConfigDict(
395395 env_nested_delimiter = ' __' , nested_model_default_partial_update = True
396396 )
397397
398- nested_model: SubModel = SubModel()
398+ nested_model: SubModel = SubModel(val = 1 )
399+
400+
401+ class SettingsNoPartialUpdate (BaseSettings ):
402+ model_config = SettingsConfigDict(
403+ env_nested_delimiter = ' __' , nested_model_default_partial_update = False
404+ )
405+
406+ nested_model: SubModel = SubModel(val = 1 )
399407
400408
401409# Apply a partial update to the default object using environment variables
402410os.environ[' NESTED_MODEL__FLAG' ] = ' True'
403411
404- assert Settings().model_dump() == {' nested_model' : {' val' : 0 , ' flag' : True }}
412+ # When partial update is enabled, the existing SubModel instance is updated
413+ # with nested_model.flag=True change
414+ assert SettingsPartialUpdate().model_dump() == {
415+ ' nested_model' : {' val' : 1 , ' flag' : True }
416+ }
417+
418+ # When partial update is disabled, a new SubModel instance is instantiated
419+ # with nested_model.flag=True change
420+ assert SettingsNoPartialUpdate().model_dump() == {
421+ ' nested_model' : {' val' : 0 , ' flag' : True }
422+ }
405423```
406424
407425## Dotenv (.env) support
0 commit comments