def join_name(name_parts: list, separator: str = "__", ignore_none: bool = True) -> str:
    """
    joins individual parts of a name (i.e., file name consisting of different elements)
    :param name_parts: the elements to join
    :param separator: the separator to be used to join
    :param ignore_none: if True, None values will not be shown in the joined string
    :return: the joined string representation of the `name_parts`
    """
    # create name by joining all of the following elements with a `separator` (maybe: remove empty strings / None)
    return separator.join(e for e in name_parts if not ignore_none or e is not None)