Add field descriptions to the config schema :)

This commit is contained in:
Danielle McLean 2024-06-22 20:12:23 +10:00
parent 2def2aece5
commit 3cb5db7528
Signed by: 00dani
GPG key ID: 6854781A0488421C
6 changed files with 84 additions and 23 deletions

View file

@ -3,13 +3,30 @@ from pathlib import Path
from pprint import pp
from typing import Any, Mapping
from apischema import schema, settings
from apischema.json_schema import JsonSchemaVersion, deserialization_schema
from apischema.schemas import Schema
from class_doc import extract_docs_from_cls_obj
from .model import Config
def field_base_schema(tp: type, name: str, alias: str) -> Schema | None:
desc_lines = extract_docs_from_cls_obj(tp).get(name, [])
if desc_lines:
print((tp, name, alias))
return schema(description=" ".join(desc_lines))
return None
settings.base_schema.field = field_base_schema
def generate() -> Mapping[str, Any]:
return deserialization_schema(Config, version=JsonSchemaVersion.DRAFT_7)
return deserialization_schema(
Config,
version=JsonSchemaVersion.DRAFT_7,
)
def write() -> None: