Skip to content

giuliano-macedo/pydantic-3764

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pydantic issue 3764 - Basemodel.dict not converting std python dataclasses children

This repo contains example code for the issue pydantic#3764

pre-requisites

  • python
  • pyenv
  • pipenv
  • make

Installing

pipenv install -d

Running

make run_pydantic_

Results

pydantic 1.9.0

make run_pydantic_1.9.0 pipenv install pydantic==1.9.0 >/dev/null 2>&1 && pipenv run python main.py

Root type Child type method output returned expected output?
BaseModel BaseModel r.dict() {'s': 'test', 'c': {'n': 2}} Yes
BaseModel Pydantic dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
BaseModel dataclass r.dict() {'s': 'test', 'c': _Pydantic__Child_94278668987376(n=2)} No
Pydantic dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
Pydantic dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes

pydantic 1.9.2

make run_pydantic_1.9.2 pipenv install pydantic==1.9.2 >/dev/null 2>&1 && pipenv run python main.py

Root type Child type method output returned expected output?
BaseModel BaseModel r.dict() {'s': 'test', 'c': {'n': 2}} Yes
BaseModel Pydantic dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
BaseModel dataclass r.dict() {'s': 'test', 'c': _Pydantic__Child_94345520777104(n=2)} No
Pydantic dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
Pydantic dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes

pydantic 1.10.0

make run_pydantic_1.10.0 pipenv install pydantic==1.10.0 >/dev/null 2>&1 && pipenv run python main.py

Root type Child type method output returned expected output?
BaseModel BaseModel r.dict() {'s': 'test', 'c': {'n': 2}} Yes
BaseModel Pydantic dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
BaseModel dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
Pydantic dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes

pydantic 1.10.4

make run_pydantic_1.10.4 pipenv install pydantic==1.10.0 >/dev/null 2>&1 && pipenv run python main.py

Root type Child type method output returned expected output?
BaseModel BaseModel r.dict() {'s': 'test', 'c': {'n': 2}} Yes
BaseModel Pydantic dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
BaseModel dataclass r.dict() {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
Pydantic dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
Pydantic dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass BaseModel asdict(r) {'s': 'test', 'c': _Child(n=2)} No
dataclass Pydantic dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes
dataclass dataclass asdict(r) {'s': 'test', 'c': {'n': 2}} Yes

About

This repo contains example code for the issue [pydantic#3764](https://github.com/pydantic/pydantic/issues/3764)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published