diff --git a/tests/test_generics.py b/tests/test_generics.py index 0f46abd4a6..d1e42d8666 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -3,6 +3,7 @@ from typing import Any, Callable, ClassVar, Dict, Generic, List, Optional, Sequence, Tuple, Type, TypeVar, Union import pytest +from typing_extensions import Literal from pydantic import BaseModel, Field, ValidationError, root_validator, validator from pydantic.generics import GenericModel, _generic_types_cache, iter_contained_typevars, replace_types @@ -1057,3 +1058,16 @@ class MyModel(BaseModel): m = MyModel.parse_obj({'my_gen': {'some_field': 'A'}}) assert m.my_gen.some_field is SomeStringEnum.A + + +@skip_36 +def test_generic_literal(): + FieldType = TypeVar('FieldType') + ValueType = TypeVar('ValueType') + + class GModel(GenericModel, Generic[FieldType, ValueType]): + field: Dict[FieldType, ValueType] + + Fields = Literal['foo', 'bar'] + m = GModel[Fields, str](field={'foo': 'x'}) + assert m.dict() == {'field': {'foo': 'x'}}