コード例 #1
0
ファイル: schema_versions.py プロジェクト: aubustou/apischema
            "required": ["bar"],
            "additionalProperties": False,
        },
        "Bar": {
            "type": "object",
            "properties": {"baz": {"type": ["integer", "null"]}},
            "required": ["baz"],
            "additionalProperties": False,
        },
    },
}
assert deserialization_schema(Foo, version=JsonSchemaVersion.OPEN_API_3_0) == {
    # No definitions for OpenAPI, use refs_schema for it
    "$ref": "#/components/schemas/Foo",  # OpenAPI prefix
}
assert definitions_schema(deserialization=[Foo],
                          version=JsonSchemaVersion.OPEN_API_3_0) == {
                              "Foo": {
                                  "type": "object",
                                  "properties": {
                                      "bar": {
                                          "$ref": "#/components/schemas/Bar"
                                      }
                                  },
                                  "required": ["bar"],
                                  "additionalProperties": False,
                              },
                              "Bar": {
                                  "type": "object",
                                  # "nullable" instead of "type": "null"
                                  "properties": {
                                      "baz": {
コード例 #2
0
from dataclasses import dataclass

from apischema.json_schema import definitions_schema


@dataclass
class Bar:
    baz: int = 0


@dataclass
class Foo:
    bar: Bar


assert definitions_schema(deserialization=[list[Foo]], all_refs=True) == {
    "Foo": {
        "type": "object",
        "properties": {"bar": {"$ref": "#/$defs/Bar"}},
        "required": ["bar"],
        "additionalProperties": False,
    },
    "Bar": {
        "type": "object",
        "properties": {"baz": {"type": "integer"}},
        "additionalProperties": False,
    },
}
コード例 #3
0
# Serialization fields computation can be deferred in a function
# The serialization name will then be defaulted to the function name
complete = object_serialization(Data, complete_data)

data = Data(0, "data")
assert serialize(Data, data, conversion=size_only) == {"id": 0, "size": 4}
assert serialize(Data, data, conversion=complete) == {
    "id": 0,
    "content": "data",
    "size": 4,
    "details": None,  # because get_details return None in this example
}

assert definitions_schema(
    serialization=[(Data, size_only), (Data, complete)],
    version=JsonSchemaVersion.OPEN_API_3_0,
) == {
    "DataSize": {
        "type": "object",
        "properties": {
            "id": {
                "type": "integer"
            },
            "size": {
                "type": "integer"
            }
        },
        "required": ["id", "size"],
        "additionalProperties": False,
    },
    "CompleteData": {