Files
Aether/_deprecated_py_src/services/provider/behavior.py

61 lines
1.7 KiB
Python
Raw Normal View History

"""Provider behavior 薄封装。
对外保持既有调用接口内部统一委托给 core.api_format.capabilities 中的 provider registry
"""
from __future__ import annotations
from dataclasses import dataclass
from src.core.api_format.capabilities import (
get_provider_behavior_variants,
register_provider_behavior_variant,
)
from src.core.provider_types import normalize_provider_type
from src.services.provider.envelope import ProviderEnvelope, get_provider_envelope
@dataclass(frozen=True, slots=True)
class ProviderBehavior:
provider_type: str
envelope: ProviderEnvelope | None
same_format_variant: str | None
cross_format_variant: str | None
def register_behavior_variant(
provider_type: str,
*,
same_format: bool = False,
cross_format: bool = False,
) -> None:
"""兼容入口:注册 provider 的格式变体标志,真实存储位于 core registry。"""
register_provider_behavior_variant(
provider_type,
same_format=same_format,
cross_format=cross_format,
)
def get_provider_behavior(
*,
provider_type: str | None,
endpoint_sig: str | None,
) -> ProviderBehavior:
pt = normalize_provider_type(provider_type)
envelope = get_provider_envelope(provider_type=pt, endpoint_sig=endpoint_sig)
same_format_variant, cross_format_variant = get_provider_behavior_variants(
provider_type=pt,
endpoint_sig=endpoint_sig or "",
)
return ProviderBehavior(
provider_type=pt,
envelope=envelope,
same_format_variant=same_format_variant,
cross_format_variant=cross_format_variant,
)
__all__ = ["ProviderBehavior", "get_provider_behavior", "register_behavior_variant"]