Skip to content

Commit

Permalink
Add pytest.mark automatically when using skip_on_missing_imports deco…
Browse files Browse the repository at this point in the history
…rator
  • Loading branch information
kumaranvpl committed Jan 24, 2025
1 parent 95fda61 commit 55a728f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
12 changes: 9 additions & 3 deletions autogen/coding/jupyter/import_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,18 +61,24 @@ def skip_on_missing_jupyter_kernel_gateway() -> Callable[[T], T]:
module: Module name
dep_target: Target name for pip installation (e.g. 'test' in pip install ag2[test])
"""
# Add pytest.mark.jupyter_executor decorator
mark_name = "jupyter_executor"

if is_jupyter_kernel_gateway_installed():

def decorator(o: T) -> T:
return o
import pytest

pytest_mark_o = getattr(pytest.mark, mark_name)(o)
return pytest_mark_o # type: ignore[no-any-return]
else:

def decorator(o: T) -> T:
import pytest

return pytest.mark.skip(
pytest_mark_o = getattr(pytest.mark, mark_name)(o)
return pytest.mark.skip( # type: ignore[return-value,no-any-return]
reason="jupyter-kernel-gateway is required for JupyterCodeExecutor, please install it with `pip install ag2[jupyter-executor]`"
)(o) # type: ignore[return-value]
)(pytest_mark_o)

return decorator
13 changes: 10 additions & 3 deletions autogen/import_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,19 +277,26 @@ def skip_on_missing_imports(modules: Union[str, Iterable[str]], dep_target: Opti
"""

missing_modules = get_missing_imports(modules)
# Add pytest.mark.dep_target decorator
# For example, if dep_target is "jupyter-executor" add pytest.mark.jupyter_executor
mark_name = dep_target.replace("-", "_") if dep_target else "openai"

if not missing_modules:

def decorator(o: T) -> T:
return o
import pytest

pytest_mark_o = getattr(pytest.mark, mark_name)(o)
return pytest_mark_o # type: ignore[no-any-return]
else:

def decorator(o: T) -> T:
import pytest

install_target = "" if dep_target is None else f"[{dep_target}]"
return pytest.mark.skip( # type: ignore[return-value]
pytest_mark_o = getattr(pytest.mark, mark_name)(o)
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{install_target}'"
)(o)
)(pytest_mark_o)

return decorator

0 comments on commit 55a728f

Please sign in to comment.