News for hackers. Stuff that matters.
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.
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.