Skip to content

check_composite_rejects_bare_list

yohou.testing.check_composite_rejects_bare_list(compositor, descriptor, operate)

Check a bare [estimator, ...] list (no names) is rejected.

Parameters

Name Type Description Default
compositor BaseEstimator

A {multiply, mean} compositor instance (for its type).

required
descriptor dict

Carries "attr" (composition-attribute name) and "components" (a list of (name, component) tuples).

required
operate callable

Invoked with a freshly-built compositor to trigger validation.

required

Raises

Type Description
AssertionError

If the bare list is accepted instead of raising.

Source Code

Source code in src/yohou/testing/composite.py
def check_composite_rejects_bare_list(compositor, descriptor: dict, operate: Callable) -> None:
    """Check a bare ``[estimator, ...]`` list (no names) is rejected.

    Parameters
    ----------
    compositor : BaseEstimator
        A ``{multiply, mean}`` compositor instance (for its type).
    descriptor : dict
        Carries ``"attr"`` (composition-attribute name) and ``"components"``
        (a list of ``(name, component)`` tuples).
    operate : callable
        Invoked with a freshly-built compositor to trigger validation.

    Raises
    ------
    AssertionError
        If the bare list is accepted instead of raising.

    """
    name = type(compositor).__name__
    attr = descriptor["attr"]
    bare = [entry[1] for entry in descriptor["components"]]
    bad = type(compositor)(**{attr: bare})
    try:
        operate(bad)
    except (ValueError, TypeError):
        return
    raise AssertionError(f"{name}: a bare {attr} list (no names) was accepted; expected ValueError/TypeError")