mirror of
https://github.com/opendatalab/MinerU.git
synced 2026-10-25 09:35:17 +08:00
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""Remote API runtime configuration helpers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from dataclasses import dataclass
|
|
from typing import TYPE_CHECKING, Literal
|
|
|
|
if TYPE_CHECKING:
|
|
from .services.config_svc import ConfigService
|
|
|
|
REMOTE_API_KEY_CONFIG = "parse_server.remote.api_key"
|
|
REMOTE_API_KEY_ENV = "MINERU_API_KEY"
|
|
|
|
RemoteApiKeySource = Literal["override", "environment", "anonymous"]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ResolvedRemoteApiKey:
|
|
value: str | None
|
|
source: RemoteApiKeySource
|
|
|
|
|
|
async def resolve_remote_api_key(config_svc: ConfigService) -> ResolvedRemoteApiKey:
|
|
"""Resolve one effective Remote API Key for all doclib Remote callers."""
|
|
configured = (await config_svc.get(REMOTE_API_KEY_CONFIG)) or ""
|
|
if configured:
|
|
return ResolvedRemoteApiKey(value=configured, source="override")
|
|
|
|
environment = os.environ.get(REMOTE_API_KEY_ENV, "")
|
|
if environment:
|
|
return ResolvedRemoteApiKey(value=environment, source="environment")
|
|
|
|
return ResolvedRemoteApiKey(value=None, source="anonymous")
|
|
|
|
|
|
__all__ = [
|
|
"REMOTE_API_KEY_CONFIG",
|
|
"REMOTE_API_KEY_ENV",
|
|
"RemoteApiKeySource",
|
|
"ResolvedRemoteApiKey",
|
|
"resolve_remote_api_key",
|
|
]
|