def dotted_name(names):
    """Returns a dotted name of a list of strings, integers, lists, and tuples."""
    if isinstance(names, str):
        return names
    elif isinstance(names, int):
        return str(names)
    resolved = []
    for name in names:
        if isinstance(name, str):
            resolved.append(name)
        elif isinstance(name, int):
            resolved.append(str(name))
        elif isinstance(name, list) or isinstance(name, tuple):
            resolved += filter(lambda x: x is not None, name)
        elif name is None:
            continue
        else:
            assert False
    return '.'.join(resolved)
