mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2026-05-25 01:24:27 +08:00
improve lazy import test (#30733)
Signed-off-by: Boyuan Feng <boyuan@meta.com>
This commit is contained in:
parent
3bd9c49158
commit
c881db364e
@ -5,9 +5,6 @@
|
|||||||
# The utility function cannot be placed in `vllm.utils`
|
# The utility function cannot be placed in `vllm.utils`
|
||||||
# this needs to be a standalone script
|
# this needs to be a standalone script
|
||||||
import sys
|
import sys
|
||||||
from contextlib import nullcontext
|
|
||||||
|
|
||||||
from vllm_test_utils import BlameResult, blame
|
|
||||||
|
|
||||||
# List of modules that should not be imported too early.
|
# List of modules that should not be imported too early.
|
||||||
# Lazy import `torch._inductor.async_compile` to avoid creating
|
# Lazy import `torch._inductor.async_compile` to avoid creating
|
||||||
@ -16,26 +13,10 @@ from vllm_test_utils import BlameResult, blame
|
|||||||
# `cv2` can easily mess up the environment.
|
# `cv2` can easily mess up the environment.
|
||||||
module_names = ["torch._inductor.async_compile", "cv2"]
|
module_names = ["torch._inductor.async_compile", "cv2"]
|
||||||
|
|
||||||
|
# set all modules in `module_names` to be None.
|
||||||
|
# if we import any modules during `import vllm`, there would be a
|
||||||
|
# hard error and nice stacktrace on the first import.
|
||||||
|
for module_name in module_names:
|
||||||
|
sys.modules[module_name] = None # type: ignore[assignment]
|
||||||
|
|
||||||
def any_module_imported():
|
import vllm # noqa
|
||||||
return any(module_name in sys.modules for module_name in module_names)
|
|
||||||
|
|
||||||
|
|
||||||
# In CI, we only check finally if the module is imported.
|
|
||||||
# If it is indeed imported, we can rerun the test with `use_blame=True`,
|
|
||||||
# which will trace every function call to find the first import location,
|
|
||||||
# and help find the root cause.
|
|
||||||
# We don't run it in CI by default because it is slow.
|
|
||||||
use_blame = False
|
|
||||||
context = blame(any_module_imported) if use_blame else nullcontext()
|
|
||||||
with context as result:
|
|
||||||
import vllm # noqa
|
|
||||||
|
|
||||||
if use_blame:
|
|
||||||
assert isinstance(result, BlameResult)
|
|
||||||
print(f"the first import location is:\n{result.trace_stack}")
|
|
||||||
|
|
||||||
assert not any_module_imported(), (
|
|
||||||
f"Some the modules in {module_names} are imported. To see the first"
|
|
||||||
f" import location, run the test with `use_blame=True`."
|
|
||||||
)
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user