feat:支持高级配置

This commit is contained in:
SengokuCola
2026-05-03 20:28:30 +08:00
parent db46551b51
commit 041ff63fba
5 changed files with 42 additions and 2 deletions

View File

@@ -1,6 +1,5 @@
from typing import Any, Dict, List, get_args, get_origin
import inspect
from typing import Any, Dict, List, get_args, get_origin
from pydantic_core import PydanticUndefined
@@ -20,6 +19,8 @@ class ConfigSchemaGenerator:
for field_name, field_info in config_class.model_fields.items():
if field_name in {"field_docs", "_validate_any", "suppress_any_warning"}:
continue
if cls._is_advanced_field(field_info):
continue
field_schema = cls._build_field_schema(config_class, field_name, field_info.annotation, field_info)
fields.append(field_schema)
@@ -49,6 +50,13 @@ class ConfigSchemaGenerator:
return schema
@staticmethod
def _is_advanced_field(field_info: Any) -> bool:
extra = getattr(field_info, "json_schema_extra", None)
if not isinstance(extra, dict):
return False
return extra.get("advanced", False) is True
@classmethod
def _build_nested_schema(cls, annotation: Any) -> Dict[str, Any] | None:
origin = get_origin(annotation)