Description
In [1]: import typing_inspect; import typing
In [2]: t = typing.Iterable[int]
In [3]: typing_inspect.get_origin(t)
Out[3]: collections.abc.Iterable
I would expect it to return typing.Iterable
instead.
Why? I am using the get_origin
and get_args
to take apart to walk the type tree, transforming certain nodes and collecting some data (to match a template tree against an actual tree). Similar to something you would do in the AST package or with any other traversal of a nested data structure.
This means I want to be be able to recursively fold over the types, which means I have to be able to deconstruct them and put them back together again. Since collections.abc.Iterable[int]
is invalid, this breaks this use case.
This is likely the same issue as #27, but I think I have a slightly different use case. If you have general suggestions on better ways to do this kind of fold, instead of using get_origin
and get_args
, I am welcome to suggestions.
cc @tonyfast who is also doing some type traversal stuff.