From 167a81fa9cb39878dd04ca9fa756eb8be34f9fe1 Mon Sep 17 00:00:00 2001 From: djramic Date: Fri, 2 Oct 2026 18:30:01 +0200 Subject: [PATCH] [CI] Fix ModelExpress handling in weight transfer tests (#59772) Signed-off-by: Djordje Ramic --- tests/distributed/test_weight_transfer.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/distributed/test_weight_transfer.py b/tests/distributed/test_weight_transfer.py index 85ae7f58c7..d044ef3bb7 100644 --- a/tests/distributed/test_weight_transfer.py +++ b/tests/distributed/test_weight_transfer.py @@ -7,12 +7,12 @@ Integration tests for NCCL and IPC weight transfer between processes using Ray. """ import builtins +import importlib.util import pickle import runpy import threading import time from contextlib import nullcontext -from pathlib import Path from types import SimpleNamespace from unittest.mock import MagicMock @@ -1497,10 +1497,12 @@ class TestDeferredProcessingContract: that caller ends up reaching through a getattr.""" def _engines(self): - return { - name: loader() - for name, loader in WeightTransferEngineFactory._registry.items() - } + registry = dict(WeightTransferEngineFactory._registry) + # ModelExpress is an optional, separately installed package, but its + # backend is always registered. Skip it when the package is missing. + if importlib.util.find_spec("modelexpress") is None: + registry.pop("modelexpress") + return {name: loader() for name, loader in registry.items()} def test_every_engine_declares_whether_it_defers(self): for name, cls in self._engines().items(): @@ -2054,11 +2056,11 @@ def test_sparse_nccl_trainer_non_sender_skips_client(): def _import_modelexpress_shim(): - path = ( - Path(__file__).parents[2] - / "vllm/distributed/weight_transfer/modelexpress_engine.py" + spec = importlib.util.find_spec( + "vllm.distributed.weight_transfer.modelexpress_engine" ) - runpy.run_path(str(path), run_name="_test_modelexpress_shim") + assert spec is not None and spec.origin is not None + runpy.run_path(spec.origin, run_name="_test_modelexpress_shim") @pytest.mark.parametrize(