I've been working on a similar framework, Fondat [1], that shares similar objectives as Pydantic and FastAPI, albeit implementing in a different manner. I believe other frameworks will have to "run a gauntlet" (as I already have) to deal with the affects of PEP 563. If anyone on these teams are interested in how I've dealt with such issues, please feel free to contact me directly. I also recommend members of these teams monitor and/or participate in the typing-sig (and maybe the python-dev) mailing list, as discussions in these lists are likely to affect their work in the future. Paul [1] https://github.com/fondat/fondat-core On Thu, 2021-04-15 at 17:49 -0400, Paul Ganssle wrote:
I should point out that "accept PEP 649" and "break pydantic" are not the only options here. The thing that will break pydantic is the end of PEP 563's deprecation period, not a failure to implement PEP 649. Other viable options include: - Leave PEP 563 opt-in until we can agree on a solution to the problem. - Leave PEP 563 opt-in forever. - Deprecate PEP 563 and go back to status quo ante.
I haven't followed this closely enough — if PEP 649 were accepted today, would it even be ready for use before the 3.10 code freeze (which is in a few weeks)?
Assuming this is a real problem (and based in part on how long it took for attrs to get what support it has for PEP 563, I wouldn't be surprised if PEP 563 is quietly throwing a spanner in the works in several other places as well), my vote is to leave PEP 563 opt-in until at least 3.11 rather than try to rush through a discussion on and implementation of PEP 649.
Best, Paul On 4/15/21 4:20 PM, Bluenix wrote:
Please accept PEP 649!
Python's type hinting has become so much more useful than originally thought, and without this change much of that will be hindered. For example (you already know about Pydantic and FastAPI) [discord.py](https://github.com/Rapptz/discord.py)'s commands system allows you to use typehinting to specify how arguments should be converted. Take the following code:
```py import discord from discord.ext import commands
bot = commands.Bot(command_prefix='>')
@bot.command() # discord.py reads the typehints and converts the arguments accordingly async def reply(ctx, member: discord.Member, *, text: str): # ctx is always passed await ctx.send(f'{member.mention}! {text}')
bot.run('token') ```
I must say, this is extremely ergonomic design! Don't break it :) _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-leave@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/S2O7SE4Q... Code of Conduct: http://python.org/psf/codeofconduct/
Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-leave@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/GT2HQDH2... Code of Conduct: http://python.org/psf/codeofconduct/