This commit is contained in:
CakeCN
2024-12-03 16:21:19 +08:00
commit 4198ca63b1
975 changed files with 333413 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
"""The model config."""
from typing import Union, Sequence, Any
from loguru import logger
class _ModelConfig(dict):
"""Base class for model config."""
__getattr__ = dict.__getitem__
__setattr__ = dict.__setitem__
def __init__(
self,
config_name: str,
model_type: str = None,
**kwargs: Any,
):
"""Initialize the config with the given arguments, and checking the
type of the arguments.
Args:
config_name (`str`): A unique name of the model config.
model_type (`str`, optional): The class name (or its model type) of
the generated model wrapper. Defaults to None.
Raises:
`ValueError`: If `config_name` is not provided.
"""
if config_name is None:
raise ValueError("The `config_name` field is required for Cfg")
if model_type is None:
logger.warning(
f"`model_type` is not provided in config [{config_name}],"
" use `PostAPIModelWrapperBase` by default.",
)
super().__init__(
config_name=config_name,
model_type=model_type,
**kwargs,
)
@classmethod
def format_configs(
cls,
configs: Union[Sequence[dict], dict],
) -> Sequence:
"""Covert config dicts into a list of _ModelConfig.
Args:
configs (Union[Sequence[dict], dict]): configs in dict format.
Returns:
Sequence[_ModelConfig]: converted ModelConfig list.
"""
if isinstance(configs, dict):
return [_ModelConfig(**configs)]
return [_ModelConfig(**cfg) for cfg in configs]