135 lines
2.1 KiB
Python
135 lines
2.1 KiB
Python
from dataclasses import dataclass
|
|
|
|
from mashumaro.jsonschema.models import JSONSchema, Number
|
|
|
|
|
|
class Annotation:
|
|
pass
|
|
|
|
|
|
class Constraint(Annotation):
|
|
pass
|
|
|
|
|
|
class NumberConstraint(Constraint):
|
|
pass
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class Minimum(NumberConstraint):
|
|
value: Number
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class Maximum(NumberConstraint):
|
|
value: Number
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class ExclusiveMinimum(NumberConstraint):
|
|
value: Number
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class ExclusiveMaximum(NumberConstraint):
|
|
value: Number
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MultipleOf(NumberConstraint):
|
|
value: Number
|
|
|
|
|
|
class StringConstraint(Constraint):
|
|
pass
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MinLength(StringConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MaxLength(StringConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class Pattern(StringConstraint):
|
|
value: str
|
|
|
|
|
|
class ArrayConstraint(Constraint):
|
|
pass
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MinItems(ArrayConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MaxItems(ArrayConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class UniqueItems(ArrayConstraint):
|
|
value: bool
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class Contains(ArrayConstraint):
|
|
value: JSONSchema
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MinContains(ArrayConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MaxContains(ArrayConstraint):
|
|
value: int
|
|
|
|
|
|
class ObjectConstraint(Constraint):
|
|
pass
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MaxProperties(ObjectConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass(unsafe_hash=True)
|
|
class MinProperties(ObjectConstraint):
|
|
value: int
|
|
|
|
|
|
@dataclass
|
|
class DependentRequired(ObjectConstraint):
|
|
value: dict[str, set[str]]
|
|
|
|
|
|
__all__ = [
|
|
"Annotation",
|
|
"MultipleOf",
|
|
"Maximum",
|
|
"ExclusiveMaximum",
|
|
"Minimum",
|
|
"ExclusiveMinimum",
|
|
"MaxLength",
|
|
"MinLength",
|
|
"Pattern",
|
|
"MaxItems",
|
|
"MinItems",
|
|
"UniqueItems",
|
|
"Contains",
|
|
"MaxContains",
|
|
"MinContains",
|
|
"MaxProperties",
|
|
"MinProperties",
|
|
"DependentRequired",
|
|
]
|