@columns.setter
def columns(self, columns: Union[(pd.Index, List[Name])]) -> None:
    if isinstance(columns, pd.MultiIndex):
        column_labels = columns.tolist()
    else:
        column_labels = [(col if is_name_like_tuple(col, allow_none=False) else (col,)) for col in columns]
    if (len(self._internal.column_labels) != len(column_labels)):
        raise ValueError('Length mismatch: Expected axis has {} elements, new values have {} elements'.format(len(self._internal.column_labels), len(column_labels)))
    column_label_names: Optional[List]
    if isinstance(columns, pd.Index):
        column_label_names = [(name if is_name_like_tuple(name) else (name,)) for name in columns.names]
    else:
        column_label_names = None
    pssers = [self._psser_for(label).rename(name) for (label, name) in zip(self._internal.column_labels, column_labels)]
    self._update_internal_frame(self._internal.with_new_columns(pssers, column_label_names=column_label_names))
@columns.setter
def columns(self, columns: Union[(pd.Index, List[Name])]) -> None:
    if isinstance(columns, pd.MultiIndex):
        column_labels = columns.tolist()
    else:
        column_labels = [(col if is_name_like_tuple(col, allow_none=False) else (col,)) for col in columns]
    if (len(self._internal.column_labels) != len(column_labels)):
        raise ValueError('Length mismatch: Expected axis has {} elements, new values have {} elements'.format(len(self._internal.column_labels), len(column_labels)))
    column_label_names: Optional[List]
    if isinstance(columns, pd.Index):
        column_label_names = [(name if is_name_like_tuple(name) else (name,)) for name in columns.names]
    else:
        column_label_names = None
    pssers = [self._psser_for(label).rename(name) for (label, name) in zip(self._internal.column_labels, column_labels)]
    self._update_internal_frame(self._internal.with_new_columns(pssers, column_label_names=column_label_names))