def trans(cls, rows): rows = list(rows) if len(rows) == 1 and rows[0].n <= rows[0].unit: return rows[0].bit_decompose() n_columns = rows[0].n for row in rows: assert(row.n == n_columns) if n_columns == 1 and len(rows) <= cls.unit: return [cls.bit_compose(rows)] else: res = [cls.new(n=len(rows)) for i in range(n_columns)] inst.trans(len(res), *(res + rows)) return res
def trans(cls, rows): rows = list(rows) if len(rows) == 1: return rows[0].bit_decompose() n_columns = rows[0].n for row in rows: assert(row.n == n_columns) if n_columns == 1: return [cls.bit_compose(rows)] else: res = [cls.new(n=len(rows)) for i in range(n_columns)] inst.trans(len(res), *(res + rows)) return res