Skip to content

check_transformers_unfitted_stateless

yohou.testing.check_transformers_unfitted_stateless(transformer, X)

Check stateless transformers transform deterministically across fits.

Every transformer requires fit() before transform() (BaseActualTransformer always calls check_is_fitted). For a stateless transformer (observation_horizon == 0) fitting carries no information beyond the schema, so two independent fits on the same data must yield identical transform output.

Parameters

Name Type Description Default
transformer BaseActualTransformer

Unfitted transformer expected to be stateless.

required
X DataFrame

Test data

required

Raises

Type Description
AssertionError

If a stateless transformer produces different output across fits

Source Code

Source code in src/yohou/testing/transformer.py
def check_transformers_unfitted_stateless(transformer, X: pl.DataFrame) -> None:
    """Check stateless transformers transform deterministically across fits.

    Every transformer requires ``fit()`` before ``transform()`` (BaseActualTransformer
    always calls ``check_is_fitted``). For a stateless transformer
    (``observation_horizon == 0``) fitting carries no information beyond the
    schema, so two independent fits on the same data must yield identical
    transform output.

    Parameters
    ----------
    transformer : BaseActualTransformer
        Unfitted transformer expected to be stateless.
    X : pl.DataFrame
        Test data

    Raises
    ------
    AssertionError
        If a stateless transformer produces different output across fits

    """
    transformer1 = clone(transformer)
    transformer1.fit(X)

    # Only exercise genuinely stateless transformers.
    if transformer1.observation_horizon != 0:
        return

    X_trans1 = transformer1.transform(X)

    transformer2 = clone(transformer)
    transformer2.fit(X)
    X_trans2 = transformer2.transform(X)

    assert_frame_equal(X_trans1, X_trans2, rel_tol=1e-6, abs_tol=1e-8)