Clarify documentation and error message about keep_untouched (#926)

* Clarify keep_untouched documentation (#924)

* Clarify error message for custom types (#924)

* Fix tests for changed error message (#924)

* fix formatting

* remove erroneous error message and add change
This commit is contained in:
retnikt
2019-10-23 11:14:51 +01:00
committed by Samuel Colvin
parent bab6970f12
commit dccc4014dc
4 changed files with 5 additions and 6 deletions
+1
View File
@@ -0,0 +1 @@
Clarify usage of `remove_untouched`, improve error message for types with no validators.
+2 -2
View File
@@ -62,8 +62,8 @@ Options:
: a callable that takes a field name and returns an alias for it
**`keep_untouched`**
: a tuple of types (e.g. descriptors) that should not be changed during model creation and will not be
included in the model schemas
: a tuple of types (e.g. descriptors) for a model's default values that should not be changed during model creation and will
not be included in the model schemas. **Note**: this means that attributes on the model with *defaults of this type*, not *annotations of this type*, will be left alone.
**`schema_extra`**
: a `dict` used to extend/update the generated JSON Schema
+1 -3
View File
@@ -568,9 +568,7 @@ def find_validators( # noqa: C901 (ignore complexity)
if config.arbitrary_types_allowed:
yield make_arbitrary_type_validator(type_)
else:
raise RuntimeError(
f'no validator found for {type_} see `keep_untouched` or `arbitrary_types_allowed` in Config'
)
raise RuntimeError(f'no validator found for {type_}, see `arbitrary_types_allowed` in Config')
def _find_supertype(type_: AnyType) -> Optional[AnyType]:
+1 -1
View File
@@ -953,7 +953,7 @@ def test_custom_types_fail_without_keep_untouched():
assert str(e.value) == (
"no validator found for <class 'tests.test_main.test_custom_types_fail_without_keep_untouched.<locals>."
"_ClassPropertyDescriptor'> see `keep_untouched` or `arbitrary_types_allowed` in Config"
"_ClassPropertyDescriptor'>, see `arbitrary_types_allowed` in Config"
)
class Model(BaseModel):