On Tue, 11 Jun 2019 at 10:38, Jakub Stasiak firstname.lastname@example.org wrote:
On 2 Jun 2019, at 02:29, Ivan Levkivskyi email@example.com wrote:
On Tue, 28 May 2019 at 16:58, Till firstname.lastname@example.org wrote: Thanks Jakub, You're right __origin__ should point to `Annotated`. I created a pull request (https://github.com/python/typing/pull/635) that should address that.
I actually don't agree with this change. __origin__ is not a public API
and we should not make internal implementation
(much) more complex to simplify any public use of it. This is precisely
the case why `get_origin()` and `get_args()` were just added
to `typing` -- to "decouple" private and public introspection APIs.
Moreover, I think _AnnotatedAlias is much more similar to _GenericAlias
than to special forms like ClassVar, so it makes sense
to make it a "thin" subclass of the latter. `get_origin()` and
`get_args()` can be adjusted to return `Annotated` and `(int, 'some marker')`.
I imagine it’s too late to change the functions’ names? I believe something like get_generic_type instead of get_origin and get_generic_args instead of get_args would be *slightly* easier to understand for newcomers.
Thanks for the idea, but yes, it is technically too late. Second, the exsiting names are already familiar for people who worked with runtime inspection of typing types. Finally, I don't think `get_generic_type(List[int])` returning `list` is totally intuitive. So after all I would leave the names alone.