in nubia/internal/typing/__init__.py [0:0]
def _normalize_exclusive_arguments(exclusive_arguments):
"""
Guarantees that exclusive arguments is normalized to a tuple of tuples
or None in case exclusive_arguments is empty
"""
def all_string_items(items):
return all(isinstance(item, str) for item in items)
def all_container_items(items):
return all(
isinstance(item, Container) and not isinstance(item, str) for item in items
)
if not exclusive_arguments:
return None
if all_string_items(exclusive_arguments):
return (tuple(exclusive_arguments),)
is_container_of_container_of_strings = all_container_items(
exclusive_arguments
) and all(all_string_items(item) for item in exclusive_arguments)
if not is_container_of_container_of_strings:
raise ValueError(
"exclusive_arguments is not an array of "
"strings or an array of arrays of strings"
)
return tuple(tuple(group) for group in exclusive_arguments)