Files
ray-project--ray/python/ray/train/v2/_internal/callbacks/env_callback.py
T
2026-07-13 13:17:40 +08:00

40 lines
1.4 KiB
Python

import importlib
import os
from typing import List
from ray.train.v2._internal.constants import RAY_TRAIN_CALLBACKS_ENV_VAR
from ray.train.v2._internal.execution.callback import RayTrainCallback
def _initialize_env_callbacks() -> List[RayTrainCallback]:
"""Initialize callbacks from environment variable.
Returns:
List of callbacks initialized from environment variable.
"""
callbacks = []
callbacks_str = os.environ.get(RAY_TRAIN_CALLBACKS_ENV_VAR, "")
if not callbacks_str:
return callbacks
for callback_path in callbacks_str.split(","):
callback_path = callback_path.strip()
if not callback_path:
continue
try:
module_path, class_name = callback_path.rsplit(".", 1)
module = importlib.import_module(module_path)
callback_cls = getattr(module, class_name)
if not issubclass(callback_cls, RayTrainCallback):
raise TypeError(
f"Callback class '{callback_path}' must be a subclass of "
f"RayTrainCallback, got {type(callback_cls).__name__}"
)
callback = callback_cls()
callbacks.append(callback)
except (ImportError, AttributeError, ValueError, TypeError) as e:
raise ValueError(f"Failed to import callback from '{callback_path}'") from e
return callbacks