Skip to content

check_panel_data_support

yohou.testing.transformer.check_panel_data_support(transformer, X_panel, y=None)

Check transformer handles panel columns (panel data) correctly.

Panel data uses columns with __ separator to represent multiple time series. Transformers should preserve panel columns or handle them appropriately.

Parameters

Name Type Description Default
transformer BaseTransformer

Unfitted transformer

required
X_panel DataFrame

Panel data with panel columns

required
y DataFrame

Target data

None

Raises

Type Description
AssertionError

If panel data handling fails

Source Code

Show/Hide source
def check_panel_data_support(transformer, X_panel: pl.DataFrame, y: pl.DataFrame | None = None) -> None:
    """Check transformer handles panel columns (panel data) correctly.

    Panel data uses columns with __ separator to represent multiple time series.
    Transformers should preserve panel columns or handle them appropriately.

    Parameters
    ----------
    transformer : BaseTransformer
        Unfitted transformer
    X_panel : pl.DataFrame
        Panel data with panel columns
    y : pl.DataFrame, optional
        Target data

    Raises
    ------
    AssertionError
        If panel data handling fails

    """
    # Check if X_panel actually has panel columns
    global_names, panel_groups = inspect_panel(X_panel)

    if not panel_groups:
        # Not panel data, skip
        return

    transformer_clone = clone(transformer)

    try:
        transformer_clone.fit(X_panel, y)
        X_trans = transformer_clone.transform(X_panel)

        # Check output is valid
        assert isinstance(X_trans, pl.DataFrame), "Panel data transform must return DataFrame"
        assert "time" in X_trans.columns, "Panel data transform must preserve 'time' column"

    except NotImplementedError:
        # Transformer explicitly doesn't support panel data
        pass