From a028687f98ff4c78fda19317ca4d13e4cb90371c Mon Sep 17 00:00:00 2001 From: David Montague Date: Tue, 30 Jul 2019 11:38:25 -0700 Subject: [PATCH] Make .json() work for EnumError --- pydantic/errors.py | 2 +- pydantic/validators.py | 3 ++- tests/test_types.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pydantic/errors.py b/pydantic/errors.py index 7e9b837..27a50d4 100644 --- a/pydantic/errors.py +++ b/pydantic/errors.py @@ -87,7 +87,7 @@ class UrlRegexError(PydanticValueError): class EnumError(PydanticTypeError): def __str__(self) -> str: - permitted = ', '.join(repr(v.value) for v in self.ctx['enum_type']) # type: ignore + permitted = ', '.join(repr(v.value) for v in self.ctx['enum_values']) # type: ignore return f'value is not a valid enumeration member; permitted: {permitted}' diff --git a/pydantic/validators.py b/pydantic/validators.py index a5a5136..378a532 100644 --- a/pydantic/validators.py +++ b/pydantic/validators.py @@ -222,7 +222,8 @@ def enum_validator(v: Any, field: 'Field', config: 'BaseConfig') -> Enum: try: enum_v = field.type_(v) except ValueError: - raise errors.EnumError(enum_type=field.type_) + # field.type_ should be an enum, so will be iterable + raise errors.EnumError(enum_values=list(field.type_)) # type: ignore return enum_v.value if config.use_enum_values else enum_v diff --git a/tests/test_types.py b/tests/test_types.py index 4a7156e..c330774 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -477,9 +477,10 @@ def test_enum_fails(): 'loc': ('tool',), 'msg': 'value is not a valid enumeration member; permitted: 1, 2', 'type': 'type_error.enum', - 'ctx': {'enum_type': ToolEnum}, + 'ctx': {'enum_values': [ToolEnum.spanner, ToolEnum.wrench]}, } ] + assert len(exc_info.value.json()) == 217 def test_int_enum_successful_for_str_int():