-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Closed
Labels
bug V1Bug related to Pydantic V1.XBug related to Pydantic V1.X
Description
Bug
Output of python -c "import pydantic.utils; print(pydantic.utils.version_info())":
pydantic version: 1.4
pydantic compiled: False
install path: /Users/dmontague/Programming/oss/pydantic/pydantic
python version: 3.7.4 (default, Oct 17 2019, 23:32:33) [Clang 11.0.0 (clang-1100.0.33.8)]
platform: Darwin-19.0.0-x86_64-i386-64bit
optional deps. installed: ['typing-extensions', 'email-validator', 'devtools']
This test passes on master, but it should not:
from typing import Optional, Tuple
from pydantic import BaseModel
def test_parse_nested_tuple():
class NestedTuple(BaseModel):
x: Tuple[int, Optional["NestedTuple"]]
obj = NestedTuple.parse_obj({'x': ('1', {'x': ('2', {'x': ('3', None)})})})
assert obj.dict() == {'x': (1, {'x': ('2', {'x': ('3', None)})})}
# Note above: the 2 and 3 did not get parsed into ints !!
NestedTuple.update_forward_refs()
obj = NestedTuple.parse_obj({'x': ('1', {'x': ('2', {'x': ('3', None)})})})
assert obj.dict() == {'x': (1, {'x': (2, {'x': (3, None)})})}Presumably we should either get an error at some point prior to the NestedRootTuple.update_forward_refs() call, or the two calls to obj.dict() should generate the same output.
I'm guessing this is related to the field being Optional, but I'm not sure. I discovered it while working on #1200 .
Metadata
Metadata
Assignees
Labels
bug V1Bug related to Pydantic V1.XBug related to Pydantic V1.X