Source code for luna_handlers.classes.schemas.sdk
"""
Module contains schemas for sdk handler
"""
from typing import Optional
from pydantic import conlist, root_validator
from classes.schemas.base_schema import BaseSchema
from classes.schemas.handler import SamplesIDs, UrlsWithFaceAndBodyBBox
from classes.schemas.simple_schemas import BoundingBoxSchema
from classes.schemas.types import OptionalNotNullable
from classes.schemas.validators import checkRequiredImageMimetype, validateOneOfStrParams
[docs]class SDKInputEstimationsModel(BaseSchema):
    """SDK model for incoming estimations: urls, samples or image with/without face/body bounding boxes"""
    # image (base64)
    image: Optional[str]
    # image mimetype
    mimetype: Optional[str]
    # face bounding box list
    faceBoundingBoxes: conlist(BoundingBoxSchema, min_items=1) = OptionalNotNullable()
    # body bounding box list
    bodyBoundingBoxes: conlist(BoundingBoxSchema, min_items=1) = OptionalNotNullable()
    # url list
    urls: UrlsWithFaceAndBodyBBox = OptionalNotNullable()
    # sample ids
    samples: SamplesIDs = OptionalNotNullable()
[docs]    @root_validator(skip_on_failure=True)
    def validateHandler(cls, values: dict) -> dict:
        """Validate handler model"""
        validateOneOfStrParams(values, params=["urls", "samples", "image"])
        checkRequiredImageMimetype(values)
        return values
