diff --git a/pydantic_settings/main.py b/pydantic_settings/main.py index 33ea245c..74710093 100644 --- a/pydantic_settings/main.py +++ b/pydantic_settings/main.py @@ -365,6 +365,22 @@ def _settings_build_values( # to an informative error and much better than a confusing error return {} + + + @classmethod + def from_dotenv( + cls, + env_file: DotenvType, + case_sensitive: bool | None = None, + ) -> "BaseSettings": + case_sensitive = case_sensitive if case_sensitive is not None else cls.model_config.get('case_sensitive') + env_file = env_file + dotenv_settings = DotEnvSettingsSource( + cls, + env_file=env_file, + ) + return cls.model_validate(dotenv_settings()) + model_config: ClassVar[SettingsConfigDict] = SettingsConfigDict( extra='forbid', arbitrary_types_allowed=True,