code: def test_get_args():
      assert not get_args(Any)
  
      assert get_args(Tuple[int]) == (int,)
      assert get_args(Tuple[int, ...]) == (int, ...)
      assert not get_args(Tuple)
  
      assert get_args(FrozenSet[int]) == (int,)
  
      assert int in get_args(Optional[int])
  
      assert get_args(Union[int]) == ()
      assert get_args(Union[int, str]) == (int, str)
      assert get_args(Union[int, int, str]) == (int, str)
  
      assert get_args(Reduce[AssociativeOp, Funsor, frozenset]) == (
          AssociativeOp,
          Funsor,
          frozenset,
      )
      assert not get_args(Reduce)
  
imports: from typing import Any, FrozenSet, Optional, Tuple, Union
  import pytest
  from multipledispatch import dispatch
  from funsor.ops import AssociativeOp, Op
  from funsor.registry import PartialDispatcher
  from funsor.terms import Cat, Funsor, Number, Reduce, Stack, Variable
  from funsor.typing import GenericTypeMeta, Variadic, deep_isinstance, deep_issubclass, deep_type, get_args, get_origin, get_type_hints, typing_wrap
label_desc: Use image node_id 12 for calling a global function with example usage: test_get_args() without return types