Source code for luna_handlers.classes.schemas.base_schema

"""
Module contains base schema for other complex pydantic models and simple schemas to use in other places
"""

from functools import cached_property
from typing import ClassVar

from pydantic import ConfigDict
from vlutils.structures.pydantic import SchemaUpdaterMixinBase

from configs.configs.configs.settings.classes import HandlersLimitsSettings, RedisKeyStorageSetting
from crutches_on_wheels.cow.pydantic.bases import JsonBaseModel as _BaseModel


[docs] class BaseSchema(_BaseModel): """Base schema model""" model_config = ConfigDict(ignored_types=(cached_property,))
[docs] class HandlerSettings: """Container class for service settings.""" faceDescriptorVersion: int = 0 bodyDescriptorVersion: int = 0 livenessRealThreshold: float = 0.5 livenessQualityThreshold: float = 0.5 deepfakeRealThreshold: float = 0.5 deepfakeMode: int = 2 receivedImagesLimit: int = 1 rawEventDetectionsLimit: int = 1 rawEventArraysLimit: int = 1 resultCandidateLimit: int = 1 defaultAttributeTTL: int = 1 maxAttributeTTL: int = 1
[docs] @classmethod def initialize( cls, faceDescriptorVersion: int, bodyDescriptorVersion: int, handlersLimitsSettings: HandlersLimitsSettings, attributeStorageSettings: RedisKeyStorageSetting, ): """ Initialize settings for schemas. Args: faceDescriptorVersion: default face descriptor version bodyDescriptorVersion: default body descriptor version handlersLimitsSettings: luna handlers limits settings attributeStorageSettings: attribute storage settings """ cls.faceDescriptorVersion = faceDescriptorVersion cls.bodyDescriptorVersion = bodyDescriptorVersion cls.receivedImagesLimit = handlersLimitsSettings.receivedImagesLimit cls.rawEventDetectionsLimit = handlersLimitsSettings.rawEventDetectionsLimit cls.rawEventArraysLimit = handlersLimitsSettings.rawEventArraysLimit cls.resultCandidateLimit = handlersLimitsSettings.resultCandidateLimit cls.defaultAttributeTTL = attributeStorageSettings.defaultTTL cls.maxAttributeTTL = attributeStorageSettings.maxTTL
[docs] class SchemaUpdaterMixin(SchemaUpdaterMixinBase): """Extended base schema model.""" # handler configs, initialized from application settings: ClassVar[HandlerSettings] = HandlerSettings