Skip to content

skip_on_missing_imports

autogen.import_utils.skip_on_missing_imports #

skip_on_missing_imports(modules, dep_target)

Decorator to skip a test if an optional module is missing

PARAMETER DESCRIPTION
modules

Module name or list of module names

TYPE: Union[str, Iterable[str]]

dep_target

Target name for pip installation (e.g. 'test' in pip install ag2[test])

TYPE: str

Source code in autogen/import_utils.py
def skip_on_missing_imports(modules: Union[str, Iterable[str]], dep_target: str) -> Callable[[T], T]:
    """Decorator to skip a test if an optional module is missing

    Args:
        modules: Module name or list of module names
        dep_target: Target name for pip installation (e.g. 'test' in pip install ag2[test])
    """
    import pytest

    missing_modules = get_missing_imports(modules)

    if not missing_modules:

        def decorator(o: T) -> T:
            pytest_mark_o = _mark_object(o, dep_target)
            return pytest_mark_o  # type: ignore[no-any-return]

    else:

        def decorator(o: T) -> T:
            pytest_mark_o = _mark_object(o, dep_target)

            return pytest.mark.skip(  # type: ignore[return-value,no-any-return]
                f"Missing module{'s' if len(missing_modules) > 1 else ''}: {', '.join(missing_modules)}. Install using 'pip install ag2[{dep_target}]'"
            )(pytest_mark_o)

    return decorator