def _process_payload(payload_columns, all_available_columns, cube): """ Process and check given payload columns. Parameters ---------- payload_columns: Optional[Iterable[str]] Which columns apart from ``dimension_columns`` and ``partition_by`` should be returned from the query. all_available_columns: Set[str] All columns that are available for query. cube: Cube Cube specification. Returns ------- payload_columns: Set[str] Payload columns to be returned from the query. """ if payload_columns is None: return all_available_columns else: payload_columns = converter_str_set(payload_columns) missing = payload_columns - all_available_columns if missing: raise ValueError( "Cannot find the following requested payload columns: {missing}".format( missing=", ".join(sorted(missing)) ) ) return payload_columns
def test_str_set(param, expected): actual = converter_str_set(param) assert isinstance(actual, frozenset) assert actual == expected assert all(isinstance(x, str) for x in actual)