Add pathlib.Path support and docstrings for environment variables

- Convert path-related variables to use pathlib.Path types with standardized parsing
- Add comprehensive docstrings based on original comments for better documentation
- Implement standardized path parsing with expanduser and absolute path conversion
- Support both Path and Optional[Path] types in parsing logic
- Maintain backwards compatibility while providing type-safe path handling

Co-authored-by: ProExpertProg <11367180+ProExpertProg@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-08-26 02:49:34 +00:00
parent 1c3d99d6a3
commit 0b85cc9fd4
2 changed files with 81 additions and 23 deletions

View File

@ -30,6 +30,7 @@ Usage:
import hashlib import hashlib
import os import os
import tempfile import tempfile
from pathlib import Path
from typing import TYPE_CHECKING, get_type_hints, Type, Union, get_origin, get_args, Optional from typing import TYPE_CHECKING, get_type_hints, Type, Union, get_origin, get_args, Optional
from urllib.parse import urlparse from urllib.parse import urlparse
@ -112,39 +113,39 @@ def __getattr__(name: str):
# Handle variables that need path expansion # Handle variables that need path expansion
if name == "VLLM_CONFIG_ROOT": if name == "VLLM_CONFIG_ROOT":
return os.path.expanduser( return Path(os.path.expanduser(
os.getenv( os.getenv(
"VLLM_CONFIG_ROOT", "VLLM_CONFIG_ROOT",
os.path.join(get_default_config_root(), "vllm"), os.path.join(get_default_config_root(), "vllm"),
) )
) )).resolve()
if name == "VLLM_CACHE_ROOT": if name == "VLLM_CACHE_ROOT":
return os.path.expanduser( return Path(os.path.expanduser(
os.getenv( os.getenv(
"VLLM_CACHE_ROOT", "VLLM_CACHE_ROOT",
os.path.join(get_default_cache_root(), "vllm"), os.path.join(get_default_cache_root(), "vllm"),
) )
) )).resolve()
if name == "VLLM_ASSETS_CACHE": if name == "VLLM_ASSETS_CACHE":
return os.path.expanduser( return Path(os.path.expanduser(
os.getenv( os.getenv(
"VLLM_ASSETS_CACHE", "VLLM_ASSETS_CACHE",
os.path.join(get_default_cache_root(), "vllm", "assets"), os.path.join(get_default_cache_root(), "vllm", "assets"),
) )
) )).resolve()
if name == "VLLM_XLA_CACHE_PATH": if name == "VLLM_XLA_CACHE_PATH":
return os.path.expanduser( return Path(os.path.expanduser(
os.getenv( os.getenv(
"VLLM_XLA_CACHE_PATH", "VLLM_XLA_CACHE_PATH",
os.path.join(get_default_cache_root(), "vllm", "xla_cache"), os.path.join(get_default_cache_root(), "vllm", "xla_cache"),
) )
) )).resolve()
if name == "VLLM_RPC_BASE_PATH": if name == "VLLM_RPC_BASE_PATH":
return os.getenv('VLLM_RPC_BASE_PATH', tempfile.gettempdir()) return Path(os.getenv('VLLM_RPC_BASE_PATH', tempfile.gettempdir())).resolve()
# Handle special cases for compound logic # Handle special cases for compound logic
if name == "VLLM_USE_PRECOMPILED": if name == "VLLM_USE_PRECOMPILED":
@ -163,7 +164,7 @@ def __getattr__(name: str):
if name == "VLLM_TORCH_PROFILER_DIR": if name == "VLLM_TORCH_PROFILER_DIR":
value = os.getenv("VLLM_TORCH_PROFILER_DIR", None) value = os.getenv("VLLM_TORCH_PROFILER_DIR", None)
return None if value is None else os.path.abspath(os.path.expanduser(value)) return None if value is None else Path(os.path.abspath(os.path.expanduser(value)))
# Get environment value # Get environment value
env_value = os.getenv(name) env_value = os.getenv(name)
@ -187,6 +188,11 @@ def __getattr__(name: str):
return env_value.lower() return env_value.lower()
return env_value return env_value
if var_type is Path:
# Parse path with expansion and absolute path conversion
expanded_path = os.path.expanduser(env_value)
return Path(os.path.abspath(expanded_path))
if var_type is bool: if var_type is bool:
return env_value.lower() in ("1", "true") return env_value.lower() in ("1", "true")

View File

@ -20,6 +20,7 @@ parent module (__init__.py).
import os import os
import tempfile import tempfile
from pathlib import Path
from typing import Optional from typing import Optional
@ -37,18 +38,41 @@ CMAKE_BUILD_TYPE: Optional[str] = None
VERBOSE: bool = False VERBOSE: bool = False
# Configuration and cache paths # Configuration and cache paths
VLLM_CONFIG_ROOT: str = os.path.expanduser("~/.config/vllm") VLLM_CONFIG_ROOT: Path = Path.home() / ".config" / "vllm"
VLLM_CACHE_ROOT: str = os.path.expanduser("~/.cache/vllm") """Root directory for vLLM configuration files.
Note that this not only affects how vllm finds its configuration files
during runtime, but also affects how vllm installs its configuration
files during **installation**.
"""
VLLM_CACHE_ROOT: Path = Path.home() / ".cache" / "vllm"
"""Root directory for vLLM cache files.
Defaults to `~/.cache/vllm` unless `XDG_CACHE_HOME` is set.
"""
# Runtime Environment Variables # Runtime Environment Variables
VLLM_HOST_IP: str = "" VLLM_HOST_IP: str = ""
VLLM_PORT: Optional[int] = None VLLM_PORT: Optional[int] = None
VLLM_RPC_BASE_PATH: str = tempfile.gettempdir() VLLM_RPC_BASE_PATH: Path = Path(tempfile.gettempdir())
"""Base path for RPC temporary files."""
VLLM_USE_MODELSCOPE: bool = False VLLM_USE_MODELSCOPE: bool = False
VLLM_RINGBUFFER_WARNING_INTERVAL: int = 60 VLLM_RINGBUFFER_WARNING_INTERVAL: int = 60
CUDA_HOME: Optional[str] = None CUDA_HOME: Optional[str] = None
VLLM_NCCL_SO_PATH: Optional[str] = None VLLM_NCCL_SO_PATH: Optional[Path] = None
LD_LIBRARY_PATH: Optional[str] = None """Path to the NCCL shared object library.
When `VLLM_NCCL_SO_PATH` is not set, vllm will try to find the nccl
library file in the locations specified by `LD_LIBRARY_PATH`.
"""
LD_LIBRARY_PATH: Optional[Path] = None
"""Path for dynamic library loading.
When `VLLM_NCCL_SO_PATH` is not set, vllm will try to find the nccl
library file in the locations specified by `LD_LIBRARY_PATH`.
"""
# Attention and kernel settings # Attention and kernel settings
VLLM_USE_TRITON_FLASH_ATTN: bool = True VLLM_USE_TRITON_FLASH_ATTN: bool = True
@ -84,7 +108,8 @@ VLLM_USAGE_SOURCE: str = "production"
# Logging configuration # Logging configuration
VLLM_CONFIGURE_LOGGING: int = 1 VLLM_CONFIGURE_LOGGING: int = 1
VLLM_LOGGING_CONFIG_PATH: Optional[str] = None VLLM_LOGGING_CONFIG_PATH: Optional[Path] = None
"""Path to custom logging configuration file."""
VLLM_LOGGING_LEVEL: str = "INFO" VLLM_LOGGING_LEVEL: str = "INFO"
VLLM_LOGGING_PREFIX: str = "" VLLM_LOGGING_PREFIX: str = ""
VLLM_LOGITS_PROCESSOR_THREADS: Optional[int] = None VLLM_LOGITS_PROCESSOR_THREADS: Optional[int] = None
@ -96,13 +121,28 @@ VLLM_PP_LAYER_PARTITION: Optional[str] = None
# CPU backend settings # CPU backend settings
VLLM_CPU_KVCACHE_SPACE: Optional[int] = None VLLM_CPU_KVCACHE_SPACE: Optional[int] = None
"""(CPU backend only) KV cache space size in MB."""
VLLM_CPU_OMP_THREADS_BIND: str = "auto" VLLM_CPU_OMP_THREADS_BIND: str = "auto"
"""(CPU backend only) CPU core ids bound by OpenMP threads.
Examples: "0-31", "0,1,2", "0-31,33". CPU cores of different ranks are separated by '|'.
"""
VLLM_CPU_NUM_OF_RESERVED_CPU: Optional[int] = None VLLM_CPU_NUM_OF_RESERVED_CPU: Optional[int] = None
"""(CPU backend only) CPU cores not used by OMP threads.
Those CPU cores will not be used by OMP threads of a rank.
"""
VLLM_CPU_MOE_PREPACK: bool = True VLLM_CPU_MOE_PREPACK: bool = True
VLLM_CPU_SGL_KERNEL: bool = False VLLM_CPU_SGL_KERNEL: bool = False
# XLA settings # XLA settings
VLLM_XLA_CACHE_PATH: str = os.path.join(os.path.expanduser("~/.cache/vllm"), "xla_cache") VLLM_XLA_CACHE_PATH: Path = Path.home() / ".cache" / "vllm" / "xla_cache"
"""Path to the XLA persistent cache directory.
Only used for XLA devices such as TPUs.
"""
VLLM_XLA_CHECK_RECOMPILATION: bool = False VLLM_XLA_CHECK_RECOMPILATION: bool = False
VLLM_XLA_USE_SPMD: bool = False VLLM_XLA_USE_SPMD: bool = False
@ -119,7 +159,8 @@ VLLM_USE_RAY_WRAPPED_PP_COMM: bool = True
VLLM_WORKER_MULTIPROC_METHOD: str = "fork" VLLM_WORKER_MULTIPROC_METHOD: str = "fork"
# Multimodal settings # Multimodal settings
VLLM_ASSETS_CACHE: str = os.path.join(os.path.expanduser("~/.cache/vllm"), "assets") VLLM_ASSETS_CACHE: Path = Path.home() / ".cache" / "vllm" / "assets"
"""Path to the cache for storing downloaded assets."""
VLLM_IMAGE_FETCH_TIMEOUT: int = 5 VLLM_IMAGE_FETCH_TIMEOUT: int = 5
VLLM_VIDEO_FETCH_TIMEOUT: int = 30 VLLM_VIDEO_FETCH_TIMEOUT: int = 30
VLLM_AUDIO_FETCH_TIMEOUT: int = 10 VLLM_AUDIO_FETCH_TIMEOUT: int = 10
@ -140,10 +181,18 @@ VLLM_HTTP_TIMEOUT_KEEP_ALIVE: int = 5 # seconds
# Plugin system # Plugin system
VLLM_PLUGINS: Optional[list[str]] = None VLLM_PLUGINS: Optional[list[str]] = None
VLLM_LORA_RESOLVER_CACHE_DIR: Optional[str] = None """List of enabled plugins."""
VLLM_LORA_RESOLVER_CACHE_DIR: Optional[Path] = None
"""Directory for LoRA resolver cache."""
# Profiling # Profiling
VLLM_TORCH_PROFILER_DIR: Optional[str] = None VLLM_TORCH_PROFILER_DIR: Optional[Path] = None
"""Directory for torch profiler output.
Both AsyncLLM's CPU traces as well as workers' traces (CPU & GPU) will be
saved under this directory. Note that it must be an absolute path.
"""
VLLM_TORCH_PROFILER_RECORD_SHAPES: bool = False VLLM_TORCH_PROFILER_RECORD_SHAPES: bool = False
VLLM_TORCH_PROFILER_WITH_PROFILE_MEMORY: bool = False VLLM_TORCH_PROFILER_WITH_PROFILE_MEMORY: bool = False
VLLM_TORCH_PROFILER_WITH_STACK: bool = True VLLM_TORCH_PROFILER_WITH_STACK: bool = True
@ -194,7 +243,8 @@ VLLM_RAY_PER_WORKER_GPUS: float = 1.0
VLLM_RAY_BUNDLE_INDICES: str = "" VLLM_RAY_BUNDLE_INDICES: str = ""
# CUDA settings # CUDA settings
VLLM_CUDART_SO_PATH: Optional[str] = None VLLM_CUDART_SO_PATH: Optional[Path] = None
"""Path to the CUDA runtime shared object library."""
# Data parallel settings # Data parallel settings
VLLM_DP_RANK: int = 0 VLLM_DP_RANK: int = 0
@ -209,7 +259,8 @@ VLLM_RANDOMIZE_DP_DUMMY_INPUTS: bool = False
VLLM_CI_USE_S3: bool = False VLLM_CI_USE_S3: bool = False
# Model redirection and quantization # Model redirection and quantization
VLLM_MODEL_REDIRECT_PATH: Optional[str] = None VLLM_MODEL_REDIRECT_PATH: Optional[Path] = None
"""Path for model redirection."""
VLLM_MARLIN_USE_ATOMIC_ADD: bool = False VLLM_MARLIN_USE_ATOMIC_ADD: bool = False
VLLM_MXFP4_USE_MARLIN: Optional[bool] = None VLLM_MXFP4_USE_MARLIN: Optional[bool] = None
@ -280,7 +331,8 @@ VLLM_ENABLE_RESPONSES_API_STORE: bool = False
VLLM_ALLREDUCE_USE_SYMM_MEM: bool = False VLLM_ALLREDUCE_USE_SYMM_MEM: bool = False
# Configuration folder # Configuration folder
VLLM_TUNED_CONFIG_FOLDER: Optional[str] = None VLLM_TUNED_CONFIG_FOLDER: Optional[Path] = None
"""Allows vllm to find tuned config under customized folder."""
# Create a dictionary of all defaults for easy access # Create a dictionary of all defaults for easy access