adaptix.json_schema module

class adaptix.json_schema.BuiltinJSONSchemaResolver(
ref_generator: RefGenerator,
ref_mangler: RefMangler,
)

Bases: JSONSchemaResolver

resolve(
root_schemas: Sequence[JSONSchema],
*,
local_ref_prefix: str,
occupied_refs: Container[str],
) tuple[Mapping[str, ResolvedJSONSchema], Sequence[ResolvedJSONSchema]]
class adaptix.json_schema.BuiltinRefGenerator

Bases: RefGenerator

generate_ref(
json_schema: JSONSchema,
loc_stack: LocStack,
) str
class adaptix.json_schema.CompoundRefMangler(
base: RefMangler,
wrapper: RefMangler,
)

Bases: RefMangler

mangle_refs(
occupied_refs: Container[str],
common_ref: str,
sources_groups: Sequence[LocalRefSourceGroup],
) Mapping[LocalRefSourceGroup, str]
class adaptix.json_schema.Direction(
value,
)

Bases: Enum

INPUT = 'INPUT'
OUTPUT = 'OUTPUT'
class adaptix.json_schema.EraseJSONSchema

Bases: object

class adaptix.json_schema.IndexRefMangler(
start: int = 1,
separator: str = '-',
)

Bases: RefMangler

mangle_refs(
occupied_refs: Container[str],
common_ref: str,
sources_groups: Sequence[LocalRefSourceGroup],
) Mapping[LocalRefSourceGroup, str]
class adaptix.json_schema.JSONSchema(title: Union[str, adaptix._internal.utils.Omitted] = Omitted(), description: Union[str, adaptix._internal.utils.Omitted] = Omitted(), default: Union[Any, adaptix._internal.utils.Omitted] = Omitted(), deprecated: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), read_only: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), write_only: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), examples: Union[collections.abc.Sequence[Any], adaptix._internal.utils.Omitted] = Omitted(), type: Union[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaType, collections.abc.Sequence[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaType], adaptix._internal.utils.Omitted] = Omitted(), enum: Union[collections.abc.Sequence[Any], adaptix._internal.utils.Omitted] = Omitted(), const: Union[Any, adaptix._internal.utils.Omitted] = Omitted(), format: Union[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaBuiltinFormat, str, adaptix._internal.utils.Omitted] = Omitted(), multiple_of: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), maximum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), exclusive_maximum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), minimum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), exclusive_minimum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), max_length: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_length: Union[int, adaptix._internal.utils.Omitted] = Omitted(), pattern: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_encoding: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_media_type: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_schema: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), max_items: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_items: Union[int, adaptix._internal.utils.Omitted] = Omitted(), unique_items: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), max_contains: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_contains: Union[int, adaptix._internal.utils.Omitted] = Omitted(), max_properties: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_properties: Union[int, adaptix._internal.utils.Omitted] = Omitted(), required: Union[collections.abc.Sequence[str], adaptix._internal.utils.Omitted] = Omitted(), dependent_required: Union[collections.abc.Mapping[str, collections.abc.Sequence[str]], adaptix._internal.utils.Omitted] = Omitted(), all_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), any_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), one_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), not_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), if_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), then: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), else_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), dependent_schemas: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), prefix_items: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), items: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), contains: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), pattern_properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), additional_properties: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), property_names: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), unevaluated_items: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), unevaluated_properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), schema: Union[str, adaptix._internal.utils.Omitted] = Omitted(), vocabulary: Union[collections.abc.Mapping[str, bool], adaptix._internal.utils.Omitted] = Omitted(), id: Union[str, adaptix._internal.utils.Omitted] = Omitted(), anchor: Union[str, adaptix._internal.utils.Omitted] = Omitted(), dynamic_anchor: Union[str, adaptix._internal.utils.Omitted] = Omitted(), ref: Union[~RefT, adaptix._internal.utils.Omitted] = Omitted(), dynamic_ref: Union[str, adaptix._internal.utils.Omitted] = Omitted(), defs: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), comment: Union[str, adaptix._internal.utils.Omitted] = Omitted(), extra_keywords: collections.abc.Mapping[str, typing.Any] = <factory>)

Bases: BaseJSONSchema[LocalRefSource[Annotated[JSONSchema, <FwdRefMarker.VALUE: ‘VALUE’>]] | RemoteRef, Annotated[JSONSchema, <FwdRefMarker.VALUE: ‘VALUE’>] | bool]

class adaptix.json_schema.JSONSchemaBuiltinFormat(
value,
)

Bases: Enum

DATE_TIME = 'date-time'
DATE = 'date'
TIME = 'time'
DURATION = 'duration'
EMAIL = 'email'
IDN_EMAIL = 'idn-email'
HOSTNAME = 'hostname'
IDN_HOSTNAME = 'idn-hostname'
IPV4 = 'ipv4'
IPV6 = 'ipv6'
URI = 'uri'
URI_REFERENCE = 'uri-reference'
IRI = 'iri'
IRI_REFERENCE = 'iri-reference'
UUID = 'uuid'
URI_TEMPLATE = 'uri-template'
JSON_POINTER = 'json-pointer'
RELATIVE_JSON_POINTER = 'relative-json-pointer'
REGEX = 'regex'
class adaptix.json_schema.JSONSchemaPatch

Bases: object

get_patchers() Iterable[Callable[[JSONSchema], JSONSchema]]
merge_with(
json_schema: JSONSchema,
chain: Chain = Chain.FIRST,
) S
mutate_copy(
target: str,
mutator: Callable[[Any], Any],
) S

Creates patcher that received a copy of specified attribute

Parameters:
  • target – Attribute of JSONSchema object

  • mutator – Function mutating value of attribute. Return value if ignored

mutate_deepcopy(
target: str,
mutator: Callable[[Any], Any],
) S
replace(
target: str,
replacer: Callable[[Any], Any],
) S
class adaptix.json_schema.JSONSchemaResolver

Bases: ABC

abstractmethod resolve(
root_schemas: Sequence[JSONSchema],
*,
local_ref_prefix: str,
occupied_refs: Container[str],
) tuple[Mapping[str, ResolvedJSONSchema], Sequence[ResolvedJSONSchema]]
class adaptix.json_schema.JSONSchemaType(
value,
)

Bases: Enum

NULL = 'null'
BOOLEAN = 'boolean'
OBJECT = 'object'
ARRAY = 'array'
NUMBER = 'number'
INTEGER = 'integer'
STRING = 'string'
class adaptix.json_schema.KeepJSONSchema

Bases: object

class adaptix.json_schema.LocalRefSourceGroup(
sources: Sequence[LocalRefSource[JSONSchema]],
)

Bases: object

class adaptix.json_schema.QualnameRefMangler

Bases: RefMangler

mangle_refs(
occupied_refs: Container[str],
common_ref: str,
sources_groups: Sequence[LocalRefSourceGroup],
) Mapping[LocalRefSourceGroup, str]
class adaptix.json_schema.RefGenerator

Bases: ABC

abstractmethod generate_ref(
json_schema: JSONSchema,
loc_stack: LocStack,
) str
class adaptix.json_schema.RemoteRef(
value: str,
)

Bases: object

value: str
class adaptix.json_schema.ResolvedJSONSchema(title: Union[str, adaptix._internal.utils.Omitted] = Omitted(), description: Union[str, adaptix._internal.utils.Omitted] = Omitted(), default: Union[Any, adaptix._internal.utils.Omitted] = Omitted(), deprecated: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), read_only: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), write_only: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), examples: Union[collections.abc.Sequence[Any], adaptix._internal.utils.Omitted] = Omitted(), type: Union[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaType, collections.abc.Sequence[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaType], adaptix._internal.utils.Omitted] = Omitted(), enum: Union[collections.abc.Sequence[Any], adaptix._internal.utils.Omitted] = Omitted(), const: Union[Any, adaptix._internal.utils.Omitted] = Omitted(), format: Union[adaptix._internal.morphing.json_schema.schema_model.JSONSchemaBuiltinFormat, str, adaptix._internal.utils.Omitted] = Omitted(), multiple_of: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), maximum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), exclusive_maximum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), minimum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), exclusive_minimum: Union[int, float, adaptix._internal.utils.Omitted] = Omitted(), max_length: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_length: Union[int, adaptix._internal.utils.Omitted] = Omitted(), pattern: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_encoding: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_media_type: Union[str, adaptix._internal.utils.Omitted] = Omitted(), content_schema: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), max_items: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_items: Union[int, adaptix._internal.utils.Omitted] = Omitted(), unique_items: Union[bool, adaptix._internal.utils.Omitted] = Omitted(), max_contains: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_contains: Union[int, adaptix._internal.utils.Omitted] = Omitted(), max_properties: Union[int, adaptix._internal.utils.Omitted] = Omitted(), min_properties: Union[int, adaptix._internal.utils.Omitted] = Omitted(), required: Union[collections.abc.Sequence[str], adaptix._internal.utils.Omitted] = Omitted(), dependent_required: Union[collections.abc.Mapping[str, collections.abc.Sequence[str]], adaptix._internal.utils.Omitted] = Omitted(), all_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), any_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), one_of: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), not_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), if_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), then: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), else_: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), dependent_schemas: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), prefix_items: Union[collections.abc.Sequence[~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), items: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), contains: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), pattern_properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), additional_properties: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), property_names: Union[~JSONSchemaT, adaptix._internal.utils.Omitted] = Omitted(), unevaluated_items: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), unevaluated_properties: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), schema: Union[str, adaptix._internal.utils.Omitted] = Omitted(), vocabulary: Union[collections.abc.Mapping[str, bool], adaptix._internal.utils.Omitted] = Omitted(), id: Union[str, adaptix._internal.utils.Omitted] = Omitted(), anchor: Union[str, adaptix._internal.utils.Omitted] = Omitted(), dynamic_anchor: Union[str, adaptix._internal.utils.Omitted] = Omitted(), ref: Union[~RefT, adaptix._internal.utils.Omitted] = Omitted(), dynamic_ref: Union[str, adaptix._internal.utils.Omitted] = Omitted(), defs: Union[collections.abc.Mapping[str, ~JSONSchemaT], adaptix._internal.utils.Omitted] = Omitted(), comment: Union[str, adaptix._internal.utils.Omitted] = Omitted(), extra_keywords: collections.abc.Mapping[str, typing.Any] = <factory>)

Bases: BaseJSONSchema[str, Annotated[ResolvedJSONSchema, <FwdRefMarker.VALUE: ‘VALUE’>] | bool]

adaptix.json_schema.generate_json_schema(
retort: ~adaptix._internal.morphing.facade.retort.AdornedRetort,
tp: ~typing.Any,
direction: ~adaptix._internal.definitions.Direction,
*,
resolver: ~adaptix._internal.morphing.json_schema.resolver.JSONSchemaResolver = <adaptix._internal.morphing.json_schema.resolver.BuiltinJSONSchemaResolver object>,
local_ref_prefix: str = '#/$defs/',
with_dialect_uri: bool = True,
occupied_refs: ~collections.abc.Container[str] = (),
) Mapping[str, Any]
adaptix.json_schema.generate_json_schemas_namespace(query: ~collections.abc.Iterable[tuple[~adaptix._internal.morphing.facade.retort.AdornedRetort, ~adaptix._internal.definitions.Direction, ~typing.Any]], *, resolver: ~adaptix._internal.morphing.json_schema.resolver.JSONSchemaResolver = <adaptix._internal.morphing.json_schema.resolver.BuiltinJSONSchemaResolver object>, local_ref_prefix: str = '#/$defs/', with_dialect_uri: bool = True, occupied_refs: ~collections.abc.Container[str] = ()) tuple[Mapping[str, Any], Sequence[Mapping[str, Any]]]
adaptix.json_schema.json_schema(
pred: Pred,
value: Omittable[JSONSchemaOverride] = Omitted(),
*,
inline: Omittable[bool] = Omitted(),
ref: Omittable[str] = Omitted(),
) Provider
adaptix.json_schema.load_json_schema(
data: Mapping[str, Any],
*,
error_on_extra: bool = True,
) JSONSchema

Creates a JSONSchema instance from a raw dictionary. Field names and their possible values follow the JSON Schema specification.

The JSONSchema class fields comply with PEP8 and use enums. This function makes it possible to define schemas in their original notation.

Parameters:
  • data – Dict after JSON parsing

  • error_on_extra – When set to True, the function raises an error if unexpected fields are encountered. Otherwise, all unknown fields are stored in the extra_keywords field.

Returns:

JSONSchema instance