Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by nerdponx on Thursday April 15, 2021 @09:45PM
(#26828427)
It's definitely experimental. No other language has an established system like this, although Ruby seems to have acquired one in 3.0. We still aren't close to uncovering all the unsolved problems yet, let alone solving said problems.
[ Parent
| on HN ]
Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by travisjungroth on Thursday April 15, 2021 @11:48PM
(#26829218)
You and I seem to have different definitions of "experimental feature" then. By your definition, I don't think they did anything wrong. dataclasses in the standard library also rely on runtime type annotations. (how they don't have the same issue with 3.10 I don't know). I would hope people would start relying on new language features years after their release.
Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by Mehdi2277 on Friday April 16, 2021 @12:27AM
(#26829451)
Data classes do not do runtime type checking. They are a way for static type checkers to do validation. So there’s no issue for data classes in 3.10.
Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by nemetroid on Friday April 16, 2021 @06:55AM
(#26832280)
Data classes don't do runtime type checking, but they do provide dynamic type info through dataclasses.fields(). This function returns a tuple of Field objects, and according to the documentation[1], Field includes the attribute "type":
type: The type of the field.
In Python 3.10, this now returns a string. In my opinion that's a bug (perhaps in the docs).I verified this using a short test program:
import dataclasses
@dataclasses.dataclass
class Apa:
bepa: int
first_field = dataclasses.fields(Apa)[0]
print(type(first_field.type))
Running with 3.9 and 3.10: $ python test.py # Python 3.9
<class 'type'>
$ python3.10 test.py
<class 'str'>
1: https://docs.python.org/3.10/library/dataclasses.html#datacl...
Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by nerdponx on Friday April 16, 2021 @12:43PM
(#26836148)
That is indeed annoying. Thanks for the example.
Re:PEP 563, PEP 649 and the future of pydantic and FastAPI
by travisjungroth on Friday April 16, 2021 @12:44PM
(#26836156)
The variable annotations are used at runtime to define the fields. They aren't type checked.