from typing import NewType
from typing import Union
from typing import Any
from typing import List
from typing import Mapping
from enum import Enum
from typing import TypedDict
from typing import Optional
Id = NewType("Id", str)
Schema = NewType("Schema", str)
Ref = NewType("Ref", str)
Comment = NewType("Comment", str)
Title = NewType("Title", str)
Description = NewType("Description", str)
AlwaysTrue = NewType("AlwaysTrue", Any)
ReadOnly = NewType("ReadOnly", bool)
Examples = NewType("Examples", List[AlwaysTrue])
MultipleOf = NewType("MultipleOf", float)
Maximum = NewType("Maximum", float)
ExclusiveMaximum = NewType("ExclusiveMaximum", float)
Minimum = NewType("Minimum", float)
ExclusiveMinimum = NewType("ExclusiveMinimum", float)
NonNegativeInteger = NewType("NonNegativeInteger", int)
NonNegativeIntegerDefaultZero = NewType("NonNegativeIntegerDefaultZero", int)
Pattern = NewType("Pattern", str)
SchemaArray = NewType("SchemaArray", List[JSONSchema])
Items = NewType("Items", Union[JSONSchema, SchemaArray])
UniqueItems = NewType("UniqueItems", bool)
StringDoaGddGA = NewType("StringDoaGddGA", str)
StringArray = NewType("StringArray", List[StringDoaGddGA])
Definitions = NewType("Definitions", Mapping[Any, Any])
Properties = NewType("Properties", Mapping[Any, Any])
PatternProperties = NewType("PatternProperties", Mapping[Any, Any])
DependenciesSet = NewType("DependenciesSet", Union[JSONSchema, StringArray])
Dependencies = NewType("Dependencies", Mapping[Any, Any])
Enum = NewType("Enum", List[AlwaysTrue])
class SimpleTypes(Enum):
Array = 0
Boolean = 1
Integer = 2
Null = 3
Number = 4
Object = 5
String = 6
ArrayOfSimpleTypes = NewType("ArrayOfSimpleTypes", List[SimpleTypes])
Type = NewType("Type", Union[SimpleTypes, ArrayOfSimpleTypes])
Format = NewType("Format", str)
ContentMediaType = NewType("ContentMediaType", str)
ContentEncoding = NewType("ContentEncoding", str)
class JSONSchemaObject(TypedDict):
$id: Optional[Id]
$schema: Optional[Schema]
$ref: Optional[Ref]
$comment: Optional[Comment]
title: Optional[Title]
description: Optional[Description]
default: Optional[AlwaysTrue]
readOnly: Optional[ReadOnly]
examples: Optional[Examples]
multipleOf: Optional[MultipleOf]
maximum: Optional[Maximum]
exclusiveMaximum: Optional[ExclusiveMaximum]
minimum: Optional[Minimum]
exclusiveMinimum: Optional[ExclusiveMinimum]
maxLength: Optional[NonNegativeInteger]
minLength: Optional[NonNegativeIntegerDefaultZero]
pattern: Optional[Pattern]
additionalItems: Optional[JSONSchema]
items: Optional[Items]
maxItems: Optional[NonNegativeInteger]
minItems: Optional[NonNegativeIntegerDefaultZero]
uniqueItems: Optional[UniqueItems]
contains: Optional[JSONSchema]
maxProperties: Optional[NonNegativeInteger]
minProperties: Optional[NonNegativeIntegerDefaultZero]
required: Optional[StringArray]
additionalProperties: Optional[JSONSchema]
definitions: Optional[Definitions]
properties: Optional[Properties]
patternProperties: Optional[PatternProperties]
dependencies: Optional[Dependencies]
propertyNames: Optional[JSONSchema]
const: Optional[AlwaysTrue]
enum: Optional[Enum]
type: Optional[Type]
format: Optional[Format]
contentMediaType: Optional[ContentMediaType]
contentEncoding: Optional[ContentEncoding]
if: Optional[JSONSchema]
then: Optional[JSONSchema]
else: Optional[JSONSchema]
allOf: Optional[SchemaArray]
anyOf: Optional[SchemaArray]
oneOf: Optional[SchemaArray]
not: Optional[JSONSchema]
JSONSchemaBoolean = NewType("JSONSchemaBoolean", bool)
JSONSchema = NewType("JSONSchema", Union[JSONSchemaObject, JSONSchemaBoolean])