Skip to content
Prev Previous commit
Take care of cases where None is valid __origin__
  • Loading branch information
Ivan Levkivskyi
Ivan Levkivskyi committed Mar 14, 2017
commit 329902fd5944c8468fecc71ea5832073a35f1ba9
1 change: 1 addition & 0 deletions typing_inspect/test_typing_inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def test_last_origin(self):
self.assertEqual(get_last_origin(Generic[T]), Generic)
self.assertEqual(get_last_origin(Union[T, int][str]), Union[T, int])
self.assertEqual(get_last_origin(List[Tuple[T, T]][int]), List[Tuple[T, T]])
self.assertEqual(get_last_origin(List), List)

def test_origin(self):
T = TypeVar('T')
Expand Down
9 changes: 8 additions & 1 deletion typing_inspect/typing_inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,16 @@ def get_last_origin(tp):
get_last_origin(Generic[T]) == Generic
get_last_origin(Union[T, int][str]) == Union[T, int]
get_last_origin(List[Tuple[T, T]][int]) == List[Tuple[T, T]]
get_last_origin(List) == List
"""

return getattr(tp, '__origin__', None)
sentinel = object()
origin = getattr(tp, '__origin__', sentinel)
if origin is sentinel:
return None
if origin is None:
return tp
return origin


def get_origin(tp):
Expand Down