def test_column_regex_matching(column_name_regex, expected_matches, error): """ Column regex pattern matching should yield correct matches and raise expected errors. """ columns = pd.MultiIndex.from_tuples(( ("foo_1", "biz_1"), ("foo_2", "baz_1"), ("foo_3", "baz_2"), ("bar_1", "biz_2"), ("bar_2", "biz_3"), ("bar_3", "biz_3"), )) column_schema = Column( Int, Check(lambda s: s >= 0), name=column_name_regex, regex=True, ) if error is not None: with pytest.raises(error): column_schema.get_regex_columns(columns) else: matched_columns = column_schema.get_regex_columns(columns) assert expected_matches == matched_columns.tolist()
def test_column_regex_matching_non_str_types( column_name_regex: str, expected_matches: List ) -> None: """Non-string column names should be cast into str for regex matching.""" columns = pd.Index([1, 2.2, 3.1415, -1, -3.6, pd.Timestamp("2018/01/01")]) column_schema = Column(name=column_name_regex, regex=True) matched_columns = column_schema.get_regex_columns(columns) assert expected_matches == matched_columns.tolist()
def test_column_regex_matching_non_str_types_multiindex( column_name_regex: Tuple[str, str], expected_matches: List[Tuple[Any, Any]] ) -> None: """ Non-string column names should be cast into str for regex matching in MultiIndex column case. """ columns = pd.MultiIndex.from_tuples( ( ("foo", 1), ("foo", pd.Timestamp("2018/01/01")), (1, 2.2), (3.14, -1), ) ) column_schema = Column(name=column_name_regex, regex=True) matched_columns = column_schema.get_regex_columns(columns) assert expected_matches == matched_columns.tolist()