Files
vllm-omni/vllm_omni/windows/report.py
T
tzhouamandClaude Fable 5.1 00510ce38b [edge-infer] vllm_omni.windows: host-OS compatibility plugin for native Windows
One package that makes the POSIX assumptions measured in W0-W8 hold in
every process vLLM / vLLM-Omni starts, and reports what it did:
- provides fcntl (flock/lockf on msvcrt.locking; LOCK_SH served as
  exclusive) and uvloop (asyncio.run on a selector loop) when absent;
- installs WindowsSelectorEventLoopPolicy and a signal.signal fallback
  for loop.add_signal_handler on the Windows loop classes;
- replaces whole vLLM's get_open_zmq_ipc_path / find_loaded_library when
  the wheel lacks the branch patch and the upstream body hash is known;
- verifies the wheel-only sites (sentinel poll, int64 seed) and reports
  wheel_required at the exact site instead of failing downstream;
- shm_dir() replaces the /dev/shm literals; os.geteuid provided.
Activated from vllm_omni/patch.py and as vllm.general_plugins /
vllm_omni.general_plugins entry points (idempotent; no-op off Windows).
 prints the audit; the M0 placement
report embeds it. 16 Linux tests through injected primitives.
Design: analysis/design_windows_compat_plugin_20260921.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 14:02:01 +08:00

79 lines
2.4 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
"""The audit: what the Windows layer did in this process, and what it could not do.
Everything ``activate()`` does lands in ``LEDGER``; ``report()`` adds the
facts a Windows record needs next to a result (zmq transport, loop policy,
which vLLM sites came from the wheel, which native modules are present, which
optional dependencies import). Nothing here changes state.
"""
from __future__ import annotations
import asyncio
import importlib
import importlib.util
import sys
from typing import Any
LEDGER: dict[str, Any] = {"active": False, "steps": {}, "activations": 0}
OPTIONAL_DEPS = ("torchaudio", "soundfile", "diffusers", "flashinfer", "pynvml", "uvloop", "fcntl")
def _importable(name: str) -> str:
mod = sys.modules.get(name)
if mod is not None and getattr(mod, "__vllm_omni_windows_shim__", False):
return "shim"
try:
return "yes" if importlib.util.find_spec(name) is not None else "no"
except (ImportError, ValueError):
return "no"
def _native_modules() -> list[str]:
try:
import vllm
except ImportError:
return []
from pathlib import Path
root = Path(vllm.__file__).parent
suffixes = (".pyd", ".so")
return sorted(
str(p.relative_to(root)).replace("\\", "/").split(".", 1)[0]
for p in root.rglob("*")
if p.suffix in suffixes and "third_party" not in p.parts
)
def report() -> dict[str, Any]:
from vllm_omni.windows import aio, paths, vllm_patches
out: dict[str, Any] = {
"platform": sys.platform,
"active": LEDGER["active"],
"activations": LEDGER["activations"],
"steps": dict(LEDGER["steps"]),
}
out["asyncio"] = {
"policy": type(asyncio.get_event_loop_policy()).__name__,
"running_loop": aio.running_loop_class(),
}
try:
import zmq
out["zmq"] = {"version": zmq.zmq_version(), "has_ipc": bool(zmq.has("ipc"))}
except ImportError:
out["zmq"] = None
out["shm_dir"] = paths.shm_dir() if sys.platform == "win32" else None
try:
import vllm
out["vllm"] = {"version": vllm.__version__, "wheel_sites": vllm_patches.verify_wheel_sites()}
except ImportError:
out["vllm"] = None
out["native_modules"] = _native_modules()
out["optional_deps"] = {name: _importable(name) for name in OPTIONAL_DEPS}
return out