Module-level getattr that reads env vars with automatic type conversion.
Uses pydantic's TypeAdapter for coercion and field validators (BeforeValidator) declared via Annotated types in _variables.py.
Use import vllm.envs_impl as envs to access environment variables.
Modules:
| Name | Description |
utils | Utility functions for environment variable handling. |
_EnvsModuleWrapper
Module wrapper to support "VAR_NAME" in envs syntax.
Source code in vllm/envs_impl/__init__.py
| class _EnvsModuleWrapper:
"""Module wrapper to support ``"VAR_NAME" in envs`` syntax."""
def __init__(self, original_module):
self._original_module = original_module
def __getattr__(self, name: str) -> Any:
if name in self._original_module.__dict__:
return self._original_module.__dict__[name]
return self._original_module.__dict__["__getattr__"](name)
def __contains__(self, env_var_name: str) -> bool:
return env_var_name in os.environ
def __dir__(self):
return list(self._original_module.__dict__.get("_env_fields", {}).keys())
|
__getattr__
__getattr__(name: str) -> Any
Read an env var, run its BeforeValidator (if any), else return the default.
Source code in vllm/envs_impl/__init__.py
| def __getattr__(name: str) -> Any:
"""Read an env var, run its BeforeValidator (if any), else return the default."""
if name not in _env_fields:
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
env_value = os.getenv(name)
if env_value is None:
field = _env_fields[name]
if field.default is not PydanticUndefined:
return field.default
if field.default_factory is not None:
return field.default_factory() # type: ignore[call-arg]
raise ValueError(f"Env var {name!r} has no default value") # shouldn't happen
return _adapters[name].validate_python(env_value)
|
_is_envs_cache_enabled
_is_envs_cache_enabled() -> bool
Return True if getattr is currently wrapped with functools.cache.
Source code in vllm/envs_impl/__init__.py
| def _is_envs_cache_enabled() -> bool:
"""Return True if __getattr__ is currently wrapped with functools.cache."""
return hasattr(__getattr__, "__wrapped__")
|
disable_envs_cache
disable_envs_cache() -> None
Revert enable_envs_cache() so env vars are read fresh.
Source code in vllm/envs_impl/__init__.py
| def disable_envs_cache() -> None:
"""Revert enable_envs_cache() so env vars are read fresh."""
global __getattr__
if hasattr(__getattr__, "__wrapped__"):
__getattr__ = __getattr__.__wrapped__
|
enable_envs_cache
enable_envs_cache() -> None
Cache env var reads so each variable is parsed only once.
Source code in vllm/envs_impl/__init__.py
| def enable_envs_cache() -> None:
"""Cache env var reads so each variable is parsed only once."""
global __getattr__
if not hasattr(__getattr__, "__wrapped__"):
__getattr__ = functools.cache(__getattr__)
|
is_set
Check if an environment variable is explicitly set (in os.environ).
Source code in vllm/envs_impl/__init__.py
| def is_set(env_var_name: str) -> bool:
"""Check if an environment variable is explicitly set (in os.environ)."""
return env_var_name in os.environ
|
maybe_convert_bool
maybe_convert_bool(val: str | bool | None) -> bool | None
Convert a string like "1"/"true" to bool. Pass through bool/None.
Source code in vllm/envs_impl/__init__.py
| def maybe_convert_bool(val: str | bool | None) -> bool | None:
"""Convert a string like "1"/"true" to bool. Pass through bool/None."""
if isinstance(val, bool):
return val
if val is None:
return None
if isinstance(val, str):
return val.lower() in ("1", "true", "yes", "on")
return bool(val)
|