On Fri, Apr 16, 2021 at 6:03 AM Bluenix <bluenixdev@gmail.com> 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 :)
Are you sure about PEP 563 break it and discord.py can not fix it? As far as my understanding, PEP 563 don't hurt this use case so much: * This use case evaluates runtime type information only once. So eval() overhead is not a problem. * Currently, annotation is very very complex and varies. For example, List[int] will be `List[int]`, `List['int']`, `'List[int]'`, `'List["int"]'`, `List[ForwardRef('int')]` etc... After PEP 563, only `'List[int]'` is practical so we can stop supporting `List["int"]` and others at some point. So playing with runtime type will become easier in the future. Am I wrong? -- Inada Naoki <songofacandy@gmail.com>