rename config -> __config__ on a model

This commit is contained in:
Samuel Colvin
2018-02-06 14:35:17 +00:00
parent f9cf6b42f4
commit c18b2bc4fc
4 changed files with 13 additions and 12 deletions
+2 -1
View File
@@ -3,10 +3,11 @@
History
-------
v0.7.0 (2018-02-XX)
v0.7.0 (2018-02-06)
...................
* added compatibility with abstract base classes (ABCs) #123
* add ``create_model`` method #113 #125
* **breaking change**: rename ``model.config`` to ``model.__config__``
v0.6.4 (2018-02-01)
...................
+1 -1
View File
@@ -43,7 +43,7 @@ class BaseSettings(BaseModel):
if field.alt_alias:
env_name = field.alias
else:
env_name = self.config.env_prefix + field.name.upper()
env_name = self.__config__.env_prefix + field.name.upper()
env_var = os.getenv(env_name, None)
if env_var:
if _complex_field(field):
+8 -8
View File
@@ -63,7 +63,7 @@ class MetaModel(ABCMeta):
for base in reversed(bases):
if issubclass(base, BaseModel) and base != BaseModel:
fields.update(base.__fields__)
config = inherit_config(base.config, config)
config = inherit_config(base.__config__, config)
config = inherit_config(namespace.get('Config'), config)
validators = _extract_validators(namespace)
@@ -94,7 +94,7 @@ class MetaModel(ABCMeta):
)
new_namespace = {
'config': config,
'__config__': config,
'__fields__': fields,
'__validators__': validators,
**{n: v for n, v in namespace.items() if n not in fields}
@@ -125,11 +125,11 @@ class BaseModel(metaclass=MetaModel):
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
def __setattr__(self, name, value):
if not self.config.allow_extra and name not in self.__fields__:
if not self.__config__.allow_extra and name not in self.__fields__:
raise ValueError(f'"{self.__class__.__name__}" object has no field "{name}"')
elif not self.config.allow_mutation:
elif not self.__config__.allow_mutation:
raise TypeError(f'"{self.__class__.__name__}" is immutable and does not support item assignment')
elif self.config.validate_assignment:
elif self.__config__.validate_assignment:
value_, error_ = self.fields[name].validate(value, self.dict(exclude={name}))
if error_:
raise ValidationError({name: error_})
@@ -238,7 +238,7 @@ class BaseModel(metaclass=MetaModel):
for name, field in self.__fields__.items():
value = input_data.get(field.alias, MISSING)
if value is MISSING:
if self.config.validate_all or field.validate_always:
if self.__config__.validate_all or field.validate_always:
value = field.default
else:
if field.required:
@@ -253,10 +253,10 @@ class BaseModel(metaclass=MetaModel):
else:
values[name] = v_
if (not self.config.ignore_extra) or self.config.allow_extra:
if (not self.__config__.ignore_extra) or self.__config__.allow_extra:
extra = input_data.keys() - {f.alias for f in self.__fields__.values()}
if extra:
if self.config.allow_extra:
if self.__config__.allow_extra:
for field in extra:
values[field] = input_data[field]
else:
+2 -2
View File
@@ -6,11 +6,11 @@ from pydantic import BaseModel, ConfigError, ValidationError, create_model, vali
def test_create_model():
model = create_model('FooModel', foo=(str, ...), bar=123)
assert issubclass(model, BaseModel)
assert issubclass(model.config, BaseModel.Config)
assert issubclass(model.__config__, BaseModel.Config)
assert model.__name__ == 'FooModel'
assert model.__fields__.keys() == {'foo', 'bar'}
assert model.__validators__ == {}
assert model.config.__name__ == 'BaseConfig'
assert model.__config__.__name__ == 'BaseConfig'
def test_create_model_usage():