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