返回 Pixelle-Video
config.py
1 """Compatibility config for migrated API provider clients.
2
3 This module keeps the old ``Config.X`` access pattern used by the copied
4 clients, while sourcing values from Pixelle's config manager first and
5 environment variables as a fallback.
6 """
7
8 import os
9 from typing import Any
10
11
12 def _provider_config(provider: str) -> dict:
13 try:
14 from pixelle_video.config import config_manager
15
16 config = config_manager.config.to_dict()
17 return config.get("api_providers", {}).get(provider, {}) or {}
18 except Exception:
19 return {}
20
21
22 class _ConfigMeta(type):
23 def __getattr__(cls, name: str) -> Any:
24 mapping = {
25 "PRINT_MODEL_INPUT": ("common", "print_model_input", False),
26 "LOCAL_PROXY": ("common", "local_proxy", ""),
27 "OPENAI_API_KEY": ("openai", "api_key", ""),
28 "OPENAI_BASE_URL": ("openai", "base_url", ""),
29 "DASHSCOPE_API_KEY": ("dashscope", "api_key", ""),
30 "DASHSCOPE_BASE_URL": ("dashscope", "base_url", ""),
31 "DEEPSEEK_API_KEY": ("deepseek", "api_key", ""),
32 "DEEPSEEK_BASE_URL": ("deepseek", "base_url", ""),
33 "GEMINI_API_KEY": ("gemini", "api_key", ""),
34 "GOOGLE_GEMINI_BASE_URL": ("gemini", "base_url", ""),
35 "ARK_API_KEY": ("ark", "api_key", ""),
36 "ARK_BASE_URL": ("ark", "base_url", ""),
37 "KLING_BASE_URL": ("kling", "base_url", ""),
38 "KLING_ACCESS_KEY": ("kling", "access_key", ""),
39 "KLING_SECRET_KEY": ("kling", "secret_key", ""),
40 }
41
42 if name not in mapping:
43 raise AttributeError(name)
44
45 provider, key, default = mapping[name]
46 value = _provider_config(provider).get(key, default)
47 env_value = os.getenv(name)
48 if env_value is not None and env_value != "":
49 return env_value
50 return value
51
52
53 class Config(metaclass=_ConfigMeta):
54 """Old-style config facade for migrated provider clients."""
55
55 lines PYTHON