def type_name(t) -> str:
    """
    Gets a string naming the type
    :param t: value to get type if
    :return: the type name
    """
    if not isinstance(t, type):
        t = type(t)

    # if isinstance(t, type):
    #     raise TypeError('T is "type"')

    return getattr(t, '__name__', repr(t))