diff --git a/python/sglang/__init__.py b/python/sglang/__init__.py index fa28f17d7..b03d3d250 100644 --- a/python/sglang/__init__.py +++ b/python/sglang/__init__.py @@ -1,27 +1,3 @@ -import importlib - - -class LazyImport: - def __init__(self, module_name, class_name): - self.module_name = module_name - self.class_name = class_name - self._module = None - - def _load(self): - if self._module is None: - module = importlib.import_module(self.module_name) - self._module = getattr(module, self.class_name) - return self._module - - def __getattr__(self, name): - module = self._load() - return getattr(module, name) - - def __call__(self, *args, **kwargs): - module = self._load() - return module(*args, **kwargs) - - # SGL API Components from sglang.api import ( Runtime, @@ -49,13 +25,14 @@ from sglang.global_config import global_config # SGL Backends from sglang.lang.backend.runtime_endpoint import RuntimeEndpoint +from sglang.utils import LazyImport +from sglang.version import __version__ Anthropic = LazyImport("sglang.lang.backend.anthropic", "Anthropic") LiteLLM = LazyImport("sglang.lang.backend.litellm", "LiteLLM") OpenAI = LazyImport("sglang.lang.backend.openai", "OpenAI") VertexAI = LazyImport("sglang.lang.backend.vertexai", "VertexAI") -from .version import __version__ # public APIs management __all__ = [ diff --git a/python/sglang/utils.py b/python/sglang/utils.py index 0f5fd4390..838879d5d 100644 --- a/python/sglang/utils.py +++ b/python/sglang/utils.py @@ -1,6 +1,7 @@ """Common utilities.""" import base64 +import importlib import json import logging import signal @@ -261,3 +262,24 @@ def graceful_registry(sub_module_name): logger.info(f"{sub_module_name} recive sigterm") signal.signal(signal.SIGTERM, graceful_shutdown) + + +class LazyImport: + def __init__(self, module_name, class_name): + self.module_name = module_name + self.class_name = class_name + self._module = None + + def _load(self): + if self._module is None: + module = importlib.import_module(self.module_name) + self._module = getattr(module, self.class_name) + return self._module + + def __getattr__(self, name): + module = self._load() + return getattr(module, name) + + def __call__(self, *args, **kwargs): + module = self._load() + return module(*args, **kwargs)