This is amazing news!

On behalf of the FastAPI/pydantic communities, thanks to the Steering
Council, and everyone involved!

I understand the big effort and commitment the Steering Council is making
with this decision to support the pydantic and FastAPI communities
(especially with our short notice), and the last-minute extra work involved
in reverting the default for 3.10.

This will give us all the time to figure out how to handle it taking into
account pydantic/FastAPI and the use cases that would benefit from PEP 563
and PEP 649.

Thanks!

Sebastián

On Tue, Apr 20, 2021 at 9:14 PM Guido van Rossum <gu...@python.org> wrote:

> Thanks to the Steering Council! You have the wisdom of Solomon. Rolling
> back the code that made PEP 563 the default behavior is the only sensible
> solution for 3.10.
>
> On Tue, Apr 20, 2021 at 11:58 AM Thomas Wouters <tho...@python.org> wrote:
>
>>
>> (Starting a new thread so as not to derail any of the ongoing
>> discussions.)
>>
>> Thanks, everyone, for your thoughts on Python 3.10 and the impact of PEP
>> 563 (postponed evaluation of annotations) becoming the default. The
>> Steering Council has considered the issue carefully, along with many of the
>> proposed alternatives and solutions, and we’ve decided that at this point,
>> we simply can’t risk the compatibility breakage of PEP 563. We need to roll
>> back the change that made stringified annotations the default, at least for
>> 3.10. (Pablo is already working on this.)
>>
>> To be clear, we are not reverting PEP 563 itself. The future import will
>> keep working like it did since Python 3.7. We’re delaying making PEP 563
>> string-based annotations the default until Python 3.11. This will give us
>> time to find a solution that works for everyone (or to find a feasible
>> upgrade path for users who currently rely on evaluated annotations). Some
>> considerations that led us to this decision:
>>
>>  - PEP 563’s default change is clearly too disruptive to downstream users
>> and third-party libraries to happen right now. We can’t risk breaking even
>> a small subset of the FastAPI/pydantic users, not to mention other uses of
>> evaluated type annotations that we’re not aware of yet.
>>  - PEP 563 provides no warning to users of the feature it’s disabling.
>> Without that, we can’t expect users to be aware of the upcoming breakage.
>> The lack of a warning was by design, and made sense in a world where type
>> annotations were only consumed by static type checkers --- but that’s not
>> actually the situation we’re in.  There are clearly existing real-world,
>> run-time uses of type annotations that would be adversely affected by this
>> change.
>>  - Originally, PEP 563 was scheduled to take effect in Python 4, and this
>> changed recently (after the discussion in the Language Summit of 2020).
>> It's possible that third-party libraries and users didn’t plan to react in
>> the current time frame as they were not aware of this change in timing.
>>  - There isn’t enough time to properly discuss PEP 649 or any of the
>> alternatives before the beta 1 deadline, and we really need to make sure we
>> don’t compound errors here.  We need to look for a long term solution,
>> which isn’t possible while still maintaining the release deadlines of
>> Python 3.10.  That means we’re also deferring PEP 649 to Python 3.11.
>>
>> In the Steering Council’s unanimous opinion, rolling back the default
>> flip for stringified annotations in Python 3.10 is the least disruptive of
>> all the options.
>>
>> We need to continue discussing the issue and potential solutions, since
>> this merely postpones the problem until 3.11. (For the record, postponing
>> the change further is not off the table, either, for example if the final
>> decision is to treat evaluated annotations as a deprecated feature, with
>> warnings on use.)
>>
>> For what it’s worth, the SC is also considering what we can do to reduce
>> the odds of something like this happening again, but that’s a separate
>> consideration, and a multi-faceted one at that.
>>
>> For the Steering Council,
>> Thomas.
>> --
>> Thomas Wouters <tho...@python.org>
>>
>> Hi! I'm an email virus! Think twice before sending your email to help me
>> spread!
>> _______________________________________________
>> python-committers mailing list -- python-committ...@python.org
>> To unsubscribe send an email to python-committers-le...@python.org
>> https://mail.python.org/mailman3/lists/python-committers.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-committ...@python.org/message/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/
>> Code of Conduct: https://www.python.org/psf/codeofconduct/
>>
>
>
> --
> --Guido van Rossum (python.org/~guido)
> *Pronouns: he/him **(why is my pronoun here?)*
> <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/4BFSYEKU3P7FNRKVDD7RZXTNEEA6PRXU/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/6WI5IQFIUEVBGXDDKRTSRWGQMALZJNUU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to