forked from s-knibbs/dataclasses-jsonschema
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_issue.py
42 lines (31 loc) · 835 Bytes
/
test_issue.py
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import json
from typing import Optional, List
from dataclasses import dataclass
from apispec import APISpec
from dataclasses_jsonschema.apispec import DataclassesPlugin
from dataclasses_jsonschema import JsonSchemaMixin
# Create an APISpec
spec = APISpec(
title="Swagger Petstore",
version="1.0.0",
openapi_version="3.0.2",
plugins=[DataclassesPlugin()],
)
@dataclass
class Category(JsonSchemaMixin):
"""Pet category"""
name: str
id: Optional[int]
@dataclass
class Pet(JsonSchemaMixin):
"""A pet"""
categories: List[Category]
name: str
@dataclass
class Cat(Pet):
"""A cat"""
color: str
# Dependant schemas (e.g. 'Category') are added automatically
spec.components.schema("Pet", schema=Pet)
spec.components.schema("Cat", schema=Cat)
print(json.dumps(spec.to_dict(), indent=2))