def write_reread(t: Tafra) -> None: t.to_csv(write_path) t2 = Tafra.read_csv(write_path, dtypes=t.dtypes) for c1, c2 in zip(t.columns, t2.columns): assert np.array_equal(t.data[c1], t2.data[c2]) assert np.array_equal(t.dtypes[c1], t2.dtypes[c2])
def test_formatter() -> None: _ = str(object_formatter) t = Tafra({'x': Decimal(1.2345)}) assert t._dtypes['x'] == 'float64' assert t['x'].dtype == np.dtype(float) object_formatter['Decimal'] = lambda x: x.astype(int) t = Tafra({'x': Decimal(1.2345)}) if platform.system() == 'Windows': assert t._dtypes['x'] == 'int32' elif platform.system() == 'Linux': assert t._dtypes['x'] == 'int64' assert t['x'].dtype == np.dtype(int) _ = str(object_formatter) for fmt in object_formatter: pass _ = object_formatter.copy() del object_formatter['Decimal'] with pytest.raises(ValueError) as e: object_formatter['Decimal'] = lambda x: 'int' # type: ignore _ = str(object_formatter)
def test_left_join_equi() -> None: l = Tafra({ 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1]) }) r = Tafra({ 'a': np.array([1, 2, 3, 4, 5, 6]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.left_join(r, [('x', 'a', '==')], ['x', 'y', 'a', 'b']) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 1, 2, 2, 2]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([2, 2, 2, 3, 3, 3]) }) t = l.left_join(r, [('x', 'a', '=='), ('z', 'c', '==')], ['x', 'y', 'a', 'b']) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 1, 2, 2, 2]), '_a': np.array([1, 1, 2, 2, 3, 3]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.left_join(r, [('x', 'a', '=='), ('x', '_a', '==')], ['x', 'y', 'a', 'b']) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 2, 2, 3, 3]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.left_join(r, [('x', 'a', '<')], ['x', 'y', 'a', 'b']) check_tafra(t)
def check_tafra(t: Tafra) -> bool: assert len(t._data) == len(t._dtypes) for c in t.columns: assert isinstance(t[c], np.ndarray) assert isinstance(t.data[c], np.ndarray) assert isinstance(t._data[c], np.ndarray) assert isinstance(t.dtypes[c], str) assert isinstance(t._dtypes[c], str) assert t._rows == len(t._data[c]) pd.Series(t._data[c]) _ = t.to_records() _ = t.to_list() _ = t.to_list() pd.DataFrame(t._data) return True
def build_tafra() -> Tafra: return Tafra({ 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1]) })
def test_left_join_invalid() -> None: l = Tafra({ 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1]) }) r = Tafra({ 'a': np.array([1, 2, 3, 4, 5, 6]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) with pytest.raises(TypeError) as e: t = l.left_join(r, [('x', 'a', '===')], ['x', 'y', 'a', 'b']) r = Tafra({ 'a': np.array([1, 2, 3, 4, 5, 6], dtype='float'), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) with pytest.raises(TypeError) as e: t = l.left_join(r, [('x', 'a', '==')], ['x', 'y', 'a', 'b']) r = Tafra({ 'a': np.array([1, 2, 3, 4, 5, 6]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) l._dtypes['x'] = 'float' with pytest.raises(TypeError) as e: t = l.left_join(r, [('x', 'a', '==')], ['x', 'y', 'a', 'b'])
def test_read_sql() -> None: cur = Cursor() columns, dtypes = zip(*((d[0], d[1]) for d in cur.description)) records = cur.fetchall() t = Tafra.from_records(records, columns) check_tafra(t) t = Tafra.from_records(records, columns, dtypes) check_tafra(t) cur = Cursor() t = Tafra.read_sql('SELECT * FROM [Table]', cur) # type: ignore check_tafra(t) cur = Cursor() cur._iter = [] t = Tafra.read_sql('SELECT * FROM [Table]', cur) # type: ignore check_tafra(t) cur = Cursor() for t in Tafra.read_sql_chunks('SELECT * FROM [Table]', cur): # type: ignore check_tafra(t) cur = Cursor() cur._iter = [] for t in Tafra.read_sql_chunks('SELECT * FROM [Table]', cur): # type: ignore check_tafra(t)
def test_coalesce() -> None: t = Tafra({'x': np.array([1, 2, None, 4, None])}) t['x'] = t.coalesce('x', [[1, 2, 3, None, 5], [None, None, None, None, 'five']]) t['y'] = t.coalesce('y', [[1, 2, 3, None, 5], [None, None, None, None, 'five']]) assert np.all(t['x'] != np.array(None)) assert t['y'][3] == np.array(None) check_tafra(t) t = Tafra({'x': np.array([1, 2, None, 4, None])}) t.coalesce_inplace('x', [[1, 2, 3, None, 5], [None, None, None, None, 'five']]) t.coalesce_inplace('y', [[1, 2, 3, None, 5], [None, None, None, None, 'five']]) assert np.all(t['x'] != np.array(None)) assert t['y'][3] == np.array(None) check_tafra(t) t = Tafra({'x': np.array([None])}) t.coalesce('x', [[1], [None]]) check_tafra(t)
def check_tafra(t: Tafra, check_rows: bool = True) -> bool: assert len(t._data) == len(t._dtypes) for c in t.columns: assert isinstance(t[c], np.ndarray) assert isinstance(t.data[c], np.ndarray) assert isinstance(t._data[c], np.ndarray) assert isinstance(t.dtypes[c], str) assert isinstance(t._dtypes[c], str) if check_rows: assert t._rows == len(t._data[c]) pd.Series(t._data[c]) columns = [c for c in t.columns][:-1] _ = t.to_records() _ = t.to_records(columns=columns) _ = t.to_list() _ = t.to_list(columns=columns) _ = t.to_list(inner=True) _ = t.to_list(columns=columns, inner=True) _ = t.to_tuple() _ = t.to_tuple(columns=columns) _ = t.to_tuple(name=None) _ = t.to_tuple(name='tf') _ = t.to_tuple(columns=columns, name=None) _ = t.to_tuple(columns=columns, name='tf') _ = t.to_tuple(inner=True) _ = t.to_tuple(inner=True, name=None) _ = t.to_tuple(inner=True, name='tf') _ = t.to_tuple(columns=columns, inner=True) _ = t.to_tuple(columns=columns, inner=True, name=None) _ = t.to_tuple(columns=columns, inner=True, name='tf') _ = t.to_array() _ = t.to_array(columns=columns) df = t.to_pandas() df = t.to_pandas(columns=columns) assert isinstance(df, pd.DataFrame) write_path = Path('test/test_to_csv.csv') t.to_csv(write_path) # t.to_csv(write_path, columns=columns) return True
def test_map() -> None: t = build_tafra() _ = list(t.row_map(np.repeat, 6)) _ = list(t.tuple_map(np.repeat, 6)) _ = list(t.col_map(np.repeat, repeats=6)) _ = Tafra(t.key_map(np.repeat, repeats=6))
def test_destructors() -> None: def gen_values() -> Iterator[Dict[str, np.ndarray]]: yield {'x': np.arange(6)} yield {'y': np.arange(6)} t = Tafra(gen_values()) check_tafra(t) t = build_tafra() t = t.update_dtypes({'x': 'float'}) t.data['x'][2] = np.nan check_tafra(t) _ = tuple(t.to_records()) _ = tuple(t.to_records(columns='x')) _ = tuple(t.to_records(columns=['x'])) _ = tuple(t.to_records(columns=['x', 'y'])) _ = tuple(t.to_records(cast_null=False)) _ = tuple(t.to_records(columns='x', cast_null=False)) _ = tuple(t.to_records(columns=['x'], cast_null=False)) _ = tuple(t.to_records(columns=['x', 'y'], cast_null=False)) _ = t.to_list() _ = t.to_list(columns='x') _ = t.to_list(columns=['x']) _ = t.to_list(columns=['x', 'y']) _ = t.to_list(inner=True) _ = t.to_list(columns='x', inner=True) _ = t.to_list(columns=['x'], inner=True) _ = t.to_list(columns=['x', 'y'], inner=True) _ = t.to_tuple() _ = t.to_tuple(columns='x') _ = t.to_tuple(columns=['x']) _ = t.to_tuple(columns=['x', 'y']) _ = t.to_tuple(inner=True) _ = t.to_tuple(columns='x', inner=True) _ = t.to_tuple(columns=['x'], inner=True) _ = t.to_tuple(columns=['x', 'y'], inner=True) _ = t.to_array() _ = t.to_array(columns='x') _ = t.to_array(columns=['x']) _ = t.to_array(columns=['x', 'y']) _ = t.to_pandas() _ = t.to_pandas(columns='x') _ = t.to_pandas(columns=['x']) _ = t.to_pandas(columns=['x', 'y']) filepath = Path('test/test_to_csv.csv') t.to_csv(filepath) t.to_csv(filepath, columns='x') t.to_csv(filepath, columns=['x']) t.to_csv(filepath, columns=['x', 'y'])
def test_constructions() -> None: t = build_tafra() check_tafra(t) t = Tafra( { 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1]) }, validate=False) check_tafra(t) t = Tafra( { 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) }, validate=False, check_rows=False) check_tafra(t, check_rows=False) with pytest.raises(TypeError) as e: t = Tafra() # type: ignore # noqa with pytest.raises(ValueError) as e: t = Tafra({}) t = Tafra({'x': None}) with warnings.catch_warnings(record=True) as w: check_tafra(t) t = Tafra({'x': Decimal('1.23456')}) check_tafra(t) t = Tafra({'x': np.array(1)}) check_tafra(t) t = Tafra({'x': np.array([1])}) check_tafra(t) t = Tafra({'x': [True, False]}) check_tafra(t) t = Tafra({'x': 'test'}) check_tafra(t) t = Tafra((('x', np.arange(6)), )) check_tafra(t) t = Tafra([('x', np.arange(6))]) check_tafra(t) t = Tafra([['x', np.arange(6)]]) check_tafra(t) t = Tafra([(np.array('x'), np.arange(6))]) check_tafra(t) t = Tafra([(np.array(['x']), np.arange(6))]) check_tafra(t) t = Tafra([('x', np.arange(6)), ('y', np.linspace(0, 1, 6))]) check_tafra(t) t = Tafra([['x', np.arange(6)], ('y', np.linspace(0, 1, 6))]) check_tafra(t) t = Tafra([('x', np.arange(6)), ['y', np.linspace(0, 1, 6)]]) check_tafra(t) t = Tafra([['x', np.arange(6)], ['y', np.linspace(0, 1, 6)]]) check_tafra(t) t = Tafra([{'x': np.arange(6)}, {'y': np.linspace(0, 1, 6)}]) check_tafra(t) t = Tafra(iter([{'x': np.arange(6)}, {'y': np.linspace(0, 1, 6)}])) check_tafra(t) def iterator() -> Iterator[Dict[str, np.ndarray]]: yield {'x': np.array([1, 2, 3, 4, 5, 6])} yield { 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object') } yield {'z': np.array([0, 0, 0, 1, 1, 1])} t = Tafra(iterator()) check_tafra(t) class DictIterable: def __iter__(self) -> Iterator[Dict[str, np.ndarray]]: yield {'x': np.array([1, 2, 3, 4, 5, 6])} yield { 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object') } yield {'z': np.array([0, 0, 0, 1, 1, 1])} t = Tafra(DictIterable()) check_tafra(t) t = Tafra(iter(DictIterable())) check_tafra(t) class SequenceIterable: def __iter__(self) -> Iterator[Any]: yield ('x', np.array([1, 2, 3, 4, 5, 6])) yield [ 'y', np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object') ] yield ('z', np.array([0, 0, 0, 1, 1, 1])) t = Tafra(SequenceIterable()) check_tafra(t) class SequenceIterable2: def __iter__(self) -> Iterator[Any]: yield (np.array(['x']), np.array([1, 2, 3, 4, 5, 6])) yield [ np.array(['y']), np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object') ] yield (np.array(['z']), np.array([0, 0, 0, 1, 1, 1])) t = Tafra(SequenceIterable2()) check_tafra(t) t = Tafra(iter(SequenceIterable2())) check_tafra(t) t = Tafra(enumerate(np.arange(6))) check_tafra(t) t = build_tafra() df = pd.DataFrame(t.data) _ = Tafra.from_series(df['x']) check_tafra(_) _ = Tafra.from_dataframe(df) check_tafra(_) _ = Tafra.as_tafra(df) check_tafra(_) _ = Tafra.as_tafra(df['x']) check_tafra(_) _ = Tafra.as_tafra(t) check_tafra(_) _ = Tafra.as_tafra({'x': np.array(1)}) check_tafra(_) _ = Tafra.from_series(Series()) check_tafra(_) _ = Tafra.as_tafra(Series()) check_tafra(_) _ = Tafra.from_dataframe(DataFrame()) # type: ignore check_tafra(_) _ = Tafra.as_tafra(DataFrame()) check_tafra(_) with pytest.raises(TypeError) as e: t = Tafra([{1, 2}]) # type: ignore class BadIterable: def __iter__(self) -> Iterator[Any]: yield {1, 2} yield {3.1412159, .5772156} with pytest.raises(TypeError) as e: t = Tafra(BadIterable()) with pytest.raises(TypeError) as e: t = Tafra(iter(BadIterable())) with pytest.raises(TypeError) as e: _ = Tafra(np.arange(6)) with pytest.raises(TypeError) as e: _ = Tafra.as_tafra(np.arange(6)) with pytest.raises(ValueError) as e: t = Tafra({'x': np.array([1, 2]), 'y': np.array([3., 4., 5.])})
def test_csv() -> None: write_path = 'test/test_to_csv.csv' def write_reread(t: Tafra) -> None: t.to_csv(write_path) t2 = Tafra.read_csv(write_path, dtypes=t.dtypes) for c1, c2 in zip(t.columns, t2.columns): assert np.array_equal(t.data[c1], t2.data[c2]) assert np.array_equal(t.dtypes[c1], t2.dtypes[c2]) # straightforward CSV - inference heuristic works path = Path('test/ex1.csv') t = Tafra.read_csv(path) assert t.dtypes['a'] == 'int32' assert t.dtypes['b'] == 'bool' assert t.dtypes['c'] == 'float64' assert t.rows == 6 assert len(t.columns) == 3 check_tafra(t) write_reread(t) # test again with TextIOWrapper with open('test/ex1.csv', 'r') as f: t = Tafra.read_csv(f) assert t.dtypes['a'] == 'int32' assert t.dtypes['b'] == 'bool' assert t.dtypes['c'] == 'float64' assert t.rows == 6 assert len(t.columns) == 3 check_tafra(t) write_reread(t) with open(write_path, 'w') as f: t.to_csv(f) with pytest.raises(ValueError) as e: with open(write_path) as f: t.to_csv(f) # short CSV - ends during inference period t = Tafra.read_csv('test/ex2.csv') assert t.dtypes['a'] == 'int32' assert t.dtypes['b'] == 'bool' assert t.dtypes['c'] == 'float64' assert t.rows == 2 assert len(t.columns) == 3 check_tafra(t) write_reread(t) # harder CSV - promote to object during inference period, # duplicate column name t = Tafra.read_csv('test/ex3.csv') assert t.dtypes['a'] == 'int32' assert t.dtypes['b'] == 'object' assert t.dtypes['b (2)'] == 'float64' assert t.rows == 6 assert len(t.columns) == 3 check_tafra(t) write_reread(t) # as above, but with a promotion required after inference period # (heuristic fails) t = Tafra.read_csv('test/ex4.csv') assert t.dtypes['a'] == 'int32' assert t.dtypes['b'] == 'object' assert t.dtypes['b (2)'] == 'float64' assert t.rows == 6 assert len(t.columns) == 3 check_tafra(t) write_reread(t) # bad CSV - missing column on row #4 with pytest.raises(ValueError) as e: t = Tafra.read_csv('test/ex5.csv') # bad CSV - missing column on row #4 - after guess rows with pytest.raises(ValueError) as e: t = Tafra.read_csv('test/ex5.csv', guess_rows=2) # missing column - but numpy will automatically convert missing (None) to nan t = Tafra.read_csv('test/ex6.csv') assert t.dtypes['dp'] == 'float64' assert t.dtypes['dp_prime'] == 'float64' assert t.dtypes['dp_prime_te'] == 'float64' assert t.dtypes['t'] == 'float64' assert t.dtypes['te'] == 'float64' check_tafra(t) # missing column - do not automatically cast t = Tafra.read_csv('test/ex6.csv', missing=None) assert t.dtypes['dp'] == 'float64' assert t.dtypes['dp_prime'] == 'object' assert t.dtypes['dp_prime_te'] == 'object' assert t.dtypes['t'] == 'float64' assert t.dtypes['te'] == 'float64' check_tafra(t) t.update_dtypes_inplace({'dp_prime': float, 'dp_prime_te': 'float64'}) assert t.dtypes['dp_prime'] == 'float64' assert t.dtypes['dp_prime_te'] == 'float64' check_tafra(t) # force dtypes on missing columns t = Tafra.read_csv('test/ex6.csv', missing=None, dtypes={ 'dp_prime': np.float, 'dp_prime_te': np.float32 }) assert t.dtypes['dp'] == 'float64' assert t.dtypes['dp_prime'] == 'float64' assert t.dtypes['dp_prime_te'] == 'float32' assert t.dtypes['t'] == 'float64' assert t.dtypes['te'] == 'float64' check_tafra(t) # override a column type t = Tafra.read_csv('test/ex4.csv', dtypes={'a': 'float32'}) assert t.dtypes['a'] == 'float32' assert t.dtypes['b'] == 'object' assert t.dtypes['b (2)'] == 'float64' assert t.rows == 6 assert len(t.columns) == 3 check_tafra(t) write_reread(t)
def test_cross_join() -> None: l = Tafra({ 'x': np.array([1, 2, 3, 4, 5, 6]), 'y': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'z': np.array([0, 0, 0, 1, 1, 1]) }) r = Tafra({ 'a': np.array([1, 2, 3, 4, 5, 6]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.cross_join(r) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 2, 2, 3, 3]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.cross_join(r) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 1, 2, 2, 2]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.cross_join(r) check_tafra(t) r = Tafra({ 'a': np.array([1, 1, 1, 2, 2, 2]), 'b': np.array(['one', 'two', 'one', 'two', 'one', 'two'], dtype='object'), 'c': np.array([0, 0, 0, 1, 1, 1]) }) t = l.cross_join(r, select=['x', 'z', 'a', 'c']) check_tafra(t) with pytest.raises(IndexError) as e: t = l.cross_join(r, select=['x', 'z']) with pytest.raises(IndexError) as e: t = l.cross_join(r, select=['a', 'c'])
def test_constructions() -> None: with pytest.raises(TypeError) as e: t = Tafra() # type: ignore # noqa with pytest.raises(ValueError) as e: t = Tafra({}) # type: ignore t = Tafra({'x': None}) check_tafra(t) t = Tafra({'x': Decimal('1.23456')}) check_tafra(t) t = Tafra({'x': np.array(1)}) check_tafra(t) t = Tafra({'x': np.array([1])}) check_tafra(t) t = Tafra({'x': [True, False]}) check_tafra(t) t = Tafra({'x': 'test'}) check_tafra(t) t.update_dtypes_inplace({'x': 'O'}) check_tafra(t) t = Tafra(enumerate(np.arange(6))) check_tafra(t) with pytest.raises(ValueError) as e: t = Tafra({'x': np.array([1, 2]), 'y': np.array([3., 4., 5.])}) def gen_values() -> Iterator[Dict[str, np.ndarray]]: yield {'x': np.arange(6)} yield {'y': np.arange(6)} t = Tafra(gen_values()) check_tafra(t) t = build_tafra() t = t.update_dtypes({'x': 'float'}) t.data['x'][2] = np.nan check_tafra(t) _ = tuple(t.to_records()) _ = tuple(t.to_records(columns='x')) _ = tuple(t.to_records(columns=['x'])) _ = tuple(t.to_records(columns=['x', 'y'])) _ = tuple(t.to_records(cast_null=False)) _ = tuple(t.to_records(columns='x', cast_null=False)) _ = tuple(t.to_records(columns=['x'], cast_null=False)) _ = tuple(t.to_records(columns=['x', 'y'], cast_null=False)) _ = t.to_list() _ = t.to_list(columns='x') _ = t.to_list(columns=['x']) _ = t.to_list(columns=['x', 'y']) _ = t.to_list(inner=True) _ = t.to_list(columns='x', inner=True) _ = t.to_list(columns=['x'], inner=True) _ = t.to_list(columns=['x', 'y'], inner=True) _ = t.to_array() _ = t.to_array(columns='x') _ = t.to_array(columns=['x']) _ = t.to_array(columns=['x', 'y']) t = build_tafra() df = pd.DataFrame(t.data) _ = Tafra.from_series(df['x']) check_tafra(_) _ = Tafra.from_dataframe(df) check_tafra(_) _ = Tafra.as_tafra(df) check_tafra(_) _ = Tafra.as_tafra(df['x']) check_tafra(_) _ = Tafra.as_tafra(t) check_tafra(_) _ = Tafra.as_tafra({'x': np.array(1)}) check_tafra(_) _ = Tafra.from_series(Series()) check_tafra(_) _ = Tafra.as_tafra(Series()) check_tafra(_) _ = Tafra.from_dataframe(DataFrame()) # type: ignore check_tafra(_) _ = Tafra.as_tafra(DataFrame()) check_tafra(_) with pytest.raises(TypeError) as e: _ = Tafra(np.arange(6)) with pytest.raises(TypeError) as e: _ = Tafra.as_tafra(np.arange(6))
def test_map() -> None: t = build_tafra() _ = list(t.row_map(np.repeat, 6)) _ = Tafra(t.col_map(np.repeat, name=True, repeats=6)) _ = list(t.col_map(np.repeat, name=False, repeats=6))