From 92307eab03327422af8145d52025c698c5e7d208 Mon Sep 17 00:00:00 2001 From: gcanlin Date: Thu, 7 May 2026 03:13:09 +0000 Subject: [PATCH] [Bugfix] Probe __dict__ instead of hasattr when patching WanRMS_norm Signed-off-by: gcanlin --- .../diffusion/models/wan2_2/patch_diffusers.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/vllm_omni/diffusion/models/wan2_2/patch_diffusers.py b/vllm_omni/diffusion/models/wan2_2/patch_diffusers.py index ebf89c26f83..a3247f683e0 100644 --- a/vllm_omni/diffusion/models/wan2_2/patch_diffusers.py +++ b/vllm_omni/diffusion/models/wan2_2/patch_diffusers.py @@ -9,10 +9,11 @@ def patch_wan_rms_norm(): """Patch diffusers Wan RMSNorm implementation with RMSNormVAE.""" - # NOTE: iterate over a snapshot of sys.modules. `hasattr` can trigger lazy - # submodule imports (e.g. transformers' `_LazyModule.__getattr__`), which - # mutate sys.modules during iteration and raise - # `RuntimeError: dictionary changed size during iteration`. - for module_name, module in list(sys.modules.items()): - if hasattr(module, "WanRMS_norm"): - setattr(module, "WanRMS_norm", RMSNormVAE) + # Probe `__dict__` directly instead of `hasattr`: the latter triggers + # custom `__getattr__` hooks (e.g. transformers' image_processing alias + # modules), which both emit spurious deprecation warnings and can lazily + # import submodules, mutating sys.modules mid-iteration. + for module in list(sys.modules.values()): + module_dict = getattr(module, "__dict__", None) + if module_dict is not None and "WanRMS_norm" in module_dict: + module_dict["WanRMS_norm"] = RMSNormVAE