▲ | vjerancrnjak 4 days ago | ||||||||||||||||||||||||||||||||||
Just have 1 input type and 1 output type. You don’t need more data types in between. If pydantic packages valid input, use that for as long as you can. Loading stuff from db, you need validation again, either go from binary response to 1 validated type with pydantic, or ORM object that already validates. Then stop having any extra data types. Keeping pydantic only at the edge and then abandoning it by reshaping it into another data type is a weird exercise. It might make sense if you have N input types and 1 computation flow but I don’t see how in the world of duck typing you’d need an extra unified data type for that. | |||||||||||||||||||||||||||||||||||
▲ | sgarland 4 days ago | parent [-] | ||||||||||||||||||||||||||||||||||
> Loading stuff from db, you need validation again, either go from binary response to 1 validated type with pydantic, or ORM object that already validates. You shouldn’t need to validate data coming from the database. IMO, this is a natural consequence of teams abandoning traditional RDBMS best practices like normalization and constraints in favor of heavy denormalization, and strings for everything. If you strictly follow 3NF (or higher, when necessary), it is literally impossible to have referential integrity violations. There may be some other edge cases that can be difficult to enforce, but a huge variety of data bugs simply don’t exist if you don’t treat the RDBMS as a dumb KV store. | |||||||||||||||||||||||||||||||||||
|