# -*- coding: utf-8 -*- from typing import Optional, Iterable, Any class ColumnSet: # export def __init__(self, *args: list[Any], columns: list[Any]=[], table: Optional[Any]=None, names: Optional[list[str]]=None): self.__columns: list[Any] = [*args] self.__columns.extend(columns) self.__table = table if names is not None: assert(table is not None) for name in names: self.__columns.append(table.column(name)) if self.__table is not None: for col in columns: assert(col.table == self.__table) def __len__(self): return len(self.__columns) def __iter__(self): yield from self.__columns def __repr__(self): return '|'.join([col.name for col in self.__columns]) def __getitem__(self, index): return self.__columns[index] def __eq__(self, rhs): if self.__table != rhs.__table: return False if len(self.__columns) != len(rhs.__columns): return False for i in range(0, len(self.__columns)): if self.__columns[i].name != rhs.__columns[i].name: return False return True @property def columns(self) -> list[Any]: return self.__columns