Add field descriptions to the config schema :)
This commit is contained in:
parent
2def2aece5
commit
3cb5db7528
6 changed files with 84 additions and 23 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue