1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
from dataclasses import is_dataclass
from inspect import cleandoc
from typing import Optional
from mashumaro.jsonschema.models import Context, JSONSchema
from mashumaro.jsonschema.schema import Instance
class BasePlugin:
def get_schema(
self,
instance: Instance,
ctx: Context,
schema: Optional[JSONSchema] = None,
) -> Optional[JSONSchema]:
pass
class DocstringDescriptionPlugin(BasePlugin):
def get_schema(
self,
instance: Instance,
ctx: Context,
schema: Optional[JSONSchema] = None,
) -> Optional[JSONSchema]:
if schema and is_dataclass(instance.type) and instance.type.__doc__:
schema.description = cleandoc(instance.type.__doc__)
return None
|