betty.json_schema module#

Provide JSON utilities.

class betty.json_schema.AllOf#

Bases: _Container

A JSON Schema allOf.

class betty.json_schema.AnyOf#

Bases: _Container

A JSON Schema anyOf.

class betty.json_schema.Array#

Bases: _Type

A JSON Schema array type.

__init__(items: Schema, *, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None)#
class betty.json_schema.Boolean#

Bases: _Type

A JSON Schema boolean type.

class betty.json_schema.Const#

Bases: Schema

A JSON Schema const.

__init__(const: PortableData, *, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None)#
class betty.json_schema.Def#

Bases: str

The name of a named Betty schema.

Using this instead of str directly allows Betty to bundle schemas together under a project namespace.

See betty.json_schema.Schema.def_name.

static __new__(cls, def_name: str, /)#
class betty.json_schema.Enum#

Bases: Schema

A JSON Schema enum.

__init__(*values: PortableData, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None)#
class betty.json_schema.Integer#

Bases: _Type

A JSON Schema integer type.

class betty.json_schema.JsonSchemaReference#

Bases: String

The JSON Schema schema.

__init__()#
class betty.json_schema.Null#

Bases: _Type

A JSON Schema null type.

class betty.json_schema.Number#

Bases: _Type

A JSON Schema number type.

class betty.json_schema.Object#

Bases: _Type

A JSON Schema object type.

__init__(*, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None)#
add_property(property_name: str, property_schema: Schema, property_required: bool = True, /) None#

Add a property to the object schema.

class betty.json_schema.OneOf#

Bases: _Container

A JSON Schema oneOf.

class betty.json_schema.Ref#

Bases: Schema

A JSON Schema that references a named Betty schema.

__init__(def_name: str, /)#
class betty.json_schema.Schema#

Bases: object

A JSON Schema.

All schemas using this class MUST follow JSON Schema Draft 2020-12.

To test your own subclasses, use betty.test_utils.json_schema.SchemaTestBase.

__init__(*, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None)#
property def_name: str | None#

The schema machine name when embedded into another schema’s $defs.

property defs: PortableMapping#

The JSON Schema’s $defs definitions, kept separately, so they can be merged when this schema is embedded.

Only top-level definitions are supported. You MUST NOT nest definitions. Instead, prefix or suffix their names.

property description: str | None#

The schema’s human-readable US English (long) description.

embed(into: Schema, /) PortableMapping#

Embed this schema.

This is where the raw schema may be enhanced before being returned.

schema: Final[PortableMapping]#

The raw JSON Schema.

property title: str | None#

The schema’s human-readable US English (short) title.

validate(data: Any, /) None#

Validate data against this schema.

class betty.json_schema.String#

Bases: _Type

A JSON Schema string type.

class Format#

Bases: Enum

A JSON Schema string type’s format.

DATE = 'date'#
DATE_TIME = 'date-time'#
DURATION = 'duration'#
EMAIL = 'email'#
HOSTNAME = 'hostname'#
IDN_EMAIL = 'idn-email'#
IDN_HOSTNAME = 'idn-hostname'#
IPV4 = 'ipv4'#
IPV6 = 'ipv6'#
IRI = 'iri'#
IRI_REFERENCE = 'iri-reference'#
JSON_POINTER = 'json-pointer'#
REGEX = 'regex'#
RELATIVE_JSON_POINTER = 'relative-json-pointer'#
TIME = 'time'#
URI = 'uri'#
URI_REFERENCE = 'uri-reference'#
URI_TEMPLATE = 'uri-template'#
UUID = 'uuid'#
__init__(*, def_name: str | None = None, title: ResolvableLocalizable | None = None, description: ResolvableLocalizable | None = None, min_length: int | None = None, max_length: int | None = None, pattern: str | None = None, format: Format | None = None)#