Fix lazy import location (#795)

This commit is contained in:
Ying Sheng
2024-07-28 22:09:50 -07:00
committed by GitHub
parent b688fd858d
commit 79f816292e
2 changed files with 24 additions and 25 deletions

View File

@@ -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__ = [

View File

@@ -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)