bases - base classes

TYPES: dict[str, type[Union[kaiju_models.bases.Field, kaiju_models.bases.Model]]] = {'AnyOfField': <class 'kaiju_models.fields.AnyOfField'>, 'BooleanField': <class 'kaiju_models.fields.BooleanField'>, 'ByteField': <class 'kaiju_models.fields.ByteField'>, 'DateField': <class 'kaiju_models.fields.DateField'>, 'DateTimeField': <class 'kaiju_models.fields.DateTimeField'>, 'DecimalField': <class 'kaiju_models.fields.DecimalField'>, 'EmailField': <class 'kaiju_models.fields.EmailField'>, 'EnumField': <class 'kaiju_models.fields.EnumField'>, 'IntegerField': <class 'kaiju_models.fields.IntegerField'>, 'JsonListField': <class 'kaiju_models.fields.JsonListField'>, 'JsonMapField': <class 'kaiju_models.fields.JsonMapField'>, 'ListField': <class 'kaiju_models.fields.ListField'>, 'MixedListField': <class 'kaiju_models.fields.MixedListField'>, 'Model': <class 'kaiju_models.bases.Model'>, 'PasswordField': <class 'kaiju_models.fields.PasswordField'>, 'SetField': <class 'kaiju_models.fields.SetField'>, 'StringField': <class 'kaiju_models.fields.StringField'>, 'TextField': <class 'kaiju_models.fields.TextField'>, 'UUIDField': <class 'kaiju_models.fields.UUIDField'>}

registry of all model and field types

class ErrorCode[source]

Bases: Enum

Standard validation error codes.

INVALID_ENUM_VALUE = 'INVALID_ENUM_VALUE'
INVALID_FORMAT = 'INVALID_FORMAT'
LENGTH_CONSTRAINT = 'LENGTH_CONSTRAINT'
MISSING = 'MISSING'
NUMBER_CONSTRAINT = 'NUMBER_CONSTRAINT'
PATTERN_MISMATCH = 'PATTERN_MISMATCH'
TYPE_MISMATCH = 'TYPE_MISMATCH'
UNKNOWN = 'UNKNOWN'
class ErrorData[source]

Bases: TypedDict

Error data object.

code: ErrorCode

Error type code.

constraint: int | None

Constraint value for constraint-related errors.

expected_type: str | None

Expected data type in this field.

field: str

Field name.

model: str

Model class name where error happened.

operator: str | None

Comparison operator for constraint-related errors.

pattern: str | None

Matching pattern for pattern-match errors.

provided_type: str | None

Provided data type.

value: str | None

Provided value.

class Field[source]

Bases: _Field[BaseTypeT]

Base field type.

default: BaseTypeT

Default value for this field.

description: str

Field description.

meta: MetaData

Additional field metadata.

required: bool

Field is required.

title: str

Field short title.

ui_visible: bool

Is this field visible in UI schema.

get_schema() dict[str, Any][source]

Get UI schema for this object.

class FieldRepr[source]

Bases: Struct

Dictionary representation of a field.

Can be used to reconstruct models and fields using create_from_repr() function.

properties: dict[str, Union[kaiju_models.bases.FieldRepr, kaiju_models.bases.ModelRepr, Any]]
type: str
class FormProperties[source]

Bases: object

UI form properties.

disable_label: bool
disabled: bool
extra_params: dict[str, Any]
has_feedback: bool
mark_required: bool
placeholder: str | None
class MetaData[source]

Bases: object

Additional model / field meta-attributes.

form_properties: FormProperties
class Model[source]

Bases: Field, Generic[_Fields]

Base model class.

class Fields[source]

Bases: Struct

Description of model fields.

default: BaseTypeT

Default value for this field.

description: str

Field description.

meta: MetaData

Additional field metadata.

required: bool

Field is required.

title: str

Field short title.

ui_visible: bool

Is this field visible in UI schema.

classmethod decode(data: bytes, /) _Fields[source]

Decode JSON data to a struct using this model.

classmethod decode_msgpack(data: bytes, /) _Fields[source]

Decode msgpack data to a struct using this model.

classmethod encode(data, /) bytes[source]

Encode object to JSON using this model.

classmethod encode_msgpack(data, /) bytes[source]

Encode object to msgpack using this model.

get_schema() ModelSchemaType[source]

Get UI schema for this object.

classmethod get_struct(data: dict[str, Any] | object, /) _Fields[source]

Validate structured data and return a new msgspec.Struct object.

Raises:

ModelValidationError – on invalid struct

class ModelFormProperties[source]

Bases: FormProperties

UI form properties for nested models.

display_frame: bool
class ModelRepr[source]

Bases: Struct

Dictionary representation of a model.

Can be used to reconstruct models and fields using create_from_repr() function.

fields: list[kaiju_models.bases._ModelField]
properties: dict[str, Union[kaiju_models.bases.FieldRepr, kaiju_models.bases.ModelRepr, Any]]
type: str
class ModelResponse[source]

Bases: object

UI model schema data.

data: dict[str, Any] | None
model: ModelSchemaType
class ModelSchemaType[source]

Bases: TypedDict

Model UI schema for form objects.

meta: dict[str, Any]
ordering: list[str]
schema: list[dict[str, Any]]
title: str
type: str
exception ModelValidationError[source]

Bases: ValidationError

Model data validation error.

data: dict[str, Any] | ErrorData

Additional error data such as field name, object name etc.

message: str

Error message.

classmethod from_error_message(model: type[kaiju_models.bases.Model], msg: str, /) ModelValidationError[source]

Create an error object from a msgspec error message.

create_model_type(name: str, fields: list[tuple[str, kaiju_models.bases.Field]], base: type[kaiju_models.bases.Model] = Model, **properties) type[kaiju_models.bases.Model][source]

Create a model class dynamically from a list of fields.

Parameters:
  • name – class name

  • fields – list of tuples of (field name, field)

  • base – base class

  • properties – msgspec model properties, see msgspec.defstruct for detail

decode_model(data: bytes, /, name: str = None, *, types: dict[str, type[kaiju_models.bases.Field | kaiju_models.bases.Model]] = TYPES) Field | Model[source]

Decode a model schema from bytes.

Shortcut for msgpack.decode + from_repr.

encode_model(model: Model, /) bytes[source]

Encode a model schema to bytes.

Shortcut for repr + msgpack.encode

from_repr(data: FieldRepr | ModelRepr, /, name: str = None, *, types: dict[str, type[kaiju_models.bases.Field | kaiju_models.bases.Model]] = TYPES, fallback_model_type: type[kaiju_models.bases.Model] = Model) Field | Model[source]

Create a model or field from its serialized representation.

Parameters:
  • data – The serialized representation.

  • name – Class name which is only used for new model types, by default the model type name is used.

  • types – optional custom mapping of model and field data types onto their names

  • fallback_model_type – which base model type to use if types dict doesn’t have an expected model type

repr_(obj: Field | Model, /) FieldRepr | ModelRepr[source]

Create a serializable representation of a model or field.

You can use from_repr() to convert it back to a normal model / field.