コード例 #1
0
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()
コード例 #2
0
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()
コード例 #3
0
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()