From 64ada930fccac0b4832b3748fded7f6c832ddfa5 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 15 Nov 2018 12:01:05 +0000 Subject: [PATCH] aliases, fix #275, replace #282 (#286) --- pydantic/env_settings.py | 2 +- pydantic/fields.py | 2 ++ tests/test_settings.py | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pydantic/env_settings.py b/pydantic/env_settings.py index 3bffe2a..fbd91b6 100644 --- a/pydantic/env_settings.py +++ b/pydantic/env_settings.py @@ -37,7 +37,7 @@ class BaseSettings(BaseModel): """ d = {} for field in self.__fields__.values(): - if field.alt_alias: + if field.has_alias: env_name = field.alias else: env_name = self.__config__.env_prefix + field.name.upper() diff --git a/pydantic/fields.py b/pydantic/fields.py index 8cfd817..120cedb 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -62,6 +62,7 @@ class Field: 'model_config', 'name', 'alias', + 'has_alias', '_schema', 'validate_always', 'allow_none', @@ -85,6 +86,7 @@ class Field: ): self.name: str = name + self.has_alias: bool = bool(alias) self.alias: str = alias or name self.type_: type = type_ self.class_validators = class_validators or [] diff --git a/tests/test_settings.py b/tests/test_settings.py index a1eb976..68922e3 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -98,3 +98,15 @@ def test_non_class(env): env.set('APP_FOOBAR', 'xxx') s = Settings() assert s.foobar == 'xxx' + + +def test_alias_matches_name(env): + class Settings(BaseSettings): + foobar: str + + class Config: + fields = {'foobar': 'foobar'} + + env.set('foobar', 'xxx') + s = Settings() + assert s.foobar == 'xxx'