(tp)
return ()
Get type arguments with all substitutions performed.

    For unions, basic simplifications used by Union constructor are performed.
    Examples::
        get_args(Dict[str, int]) == (str, int)
        get_args(int) == ()
        get_args(Union[int, Union[T, int], str][int]) == (int, str)
        get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int])
        get_args(Callable[[], T][int]) == ([], int)
Get type arguments with all substitutions performed.
Get type arguments with all substitutions performed .
def get_args(tp):
    """Get type arguments with all substitutions performed.

    For unions, basic simplifications used by Union constructor are performed.
    Examples::
        get_args(Dict[str, int]) == (str, int)
        get_args(int) == ()
        get_args(Union[int, Union[T, int], str][int]) == (int, str)
        get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int])
        get_args(Callable[[], T][int]) == ([], int)
    """
    if isinstance(tp, _AnnotatedAlias):
        return (tp.__origin__,) + tp.__metadata__
    if isinstance(tp, (_GenericAlias, GenericAlias)):
        res = tp.__args__
        if (tp.__origin__ is collections.abc.Callable
                and not (len(res) == 2 and _is_param_expr(res[0]))):
            res = (list(res[:-1]), res[-1])
        return res
    if isinstance(tp, types.UnionType):
        return tp.__args__
    return ()
def get_args ( tp ) : if isinstance ( tp , _AnnotatedAlias ) : return ( tp . __origin__ , ) + tp . __metadata__ if isinstance ( tp , ( _GenericAlias , GenericAlias ) ) : res = tp . __args__ if ( tp . __origin__ is collections . abc . Callable and not ( len ( res ) == 2 and _is_param_expr ( res [ 0 ] ) ) ) : res = ( list ( res [ : - 1 ] ) , res [ - 1 ] ) return res if isinstance ( tp , types . UnionType ) : return tp . __args__ return ( )