ilevkivskyi / typing_inspect

Runtime inspection utilities for Python typing module
MIT License
349 stars 35 forks source link

`typing_inspect.get_args` `Annotated` metadata args #82

Open anders-kiaer opened 3 years ago

anders-kiaer commented 3 years ago

Is typing_inspect.get_args expected to also return metadata args for Annotated?

Python 3.9.5:

>>> import typing
>>>
>>> A = typing.Annotated[int, "some_metadata"]
>>>
>>> typing.get_args(A)
(<class 'int'>, 'some_metadata')

Python 3.8.6:

>>> import typing_extensions  # 3.10.0.2
>>> import typing_inspect  # 0.7.1
>>> 
>>> A = typing_extensions.Annotated[int, "some_metadata"]
>>>
>>> typing_inspect.get_args(A)
(<class 'int'>,)
ilevkivskyi commented 2 years ago

I think it should only return the actual type argument (i.e. (int,) in this case). Also IIUC it used to work in 3.8 by accident, please feel free to submit a PR fixing this (probably by introducing some dedicated support for Annotated)